| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485 |
- import 'package:get/get.dart';
- import 'package:isar/isar.dart';
- import 'package:trackoffical_app/model/game_map.dart';
- import 'package:trackoffical_app/service/service.dart';
- import 'package:trackoffical_app/utils.dart';
- import '../model/m_net_image.dart';
- import '../logger.dart';
- import '../model/game_state.dart';
- import '../model/cache_image.dart';
- import 'package:path_provider/path_provider.dart';
- class DatabaseService extends IService{
- static DatabaseService get to => Get.find();
- late Isar isar;
- @override
- Future<void> init() async {
- final dir = await getApplicationDocumentsDirectory();
- isar = await Isar.open([
- GameStateDataSchema,
- CacheImageSchema,
- ],
- directory: dir.path
- );
- }
- Future<GameStateData?> getExistGameData() async{
- return await isar.gameStateDatas.get(0);
- }
- Future<void> saveGameState(GameState state) async{
- try{
- await isar.writeTxn(() async {
- if (state.pbGameSave.stopAt.nanos == 0
- && state.pbGameSave.stopAt.seconds == 0){
- // 已结束
- final data = state.data;
- await isar.gameStateDatas.put(data);
- }else{
- await isar.gameStateDatas.delete(0);
- }
- });
- }catch(e){
- warn('保存进度失败', e);
- }
- }
- Future<CacheImage?> getImage(String md5) async{
- return await isar.cacheImages.get(CacheImage.fastHash(md5));
- }
- Future<void> saveImage(MNetImage image) async{
- try{
- final data = CacheImage()
- ..md5=image.md5.toHexString()
- ..image = image.data!.toList()
- ..timestamp=image.timestamp
- ..ext=image.ext
- ..nonce=image.nonce
- ;
- await isar.writeTxn(() async {
- await isar.cacheImages.put(data);
- });
- }catch(e){
- warn('保存缓存失败', e);
- }
- }
- Future<void> saveGameMap(GameMap gameMap) async{
- try{
- final data = CacheImage()
- ..md5=gameMap.md5.toHexString()
- ..image = gameMap.data!.toList()
- ;
- await isar.writeTxn(() async {
- await isar.cacheImages.put(data);
- });
- }catch(e){
- warn('保存缓存失败', e);
- }
- }
- }
|