| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253 |
- import 'package:get/get.dart';
- import 'package:isar/isar.dart';
- import 'package:trackoffical_app/pb.dart' as pb;
- part 'game_state.g.dart';
- @collection
- class GameStateData {
- Id id = 0;
- List<byte> pbGameData = List.empty();
- List<byte> pbGameSave = List.empty();
- String name = '';
- GameState toState() {
- return GameState()
- ..name = name
- ..timeLocalServerDiff = Duration(microseconds: timeLocalServerDiffMicro)
- ..pbGameData = pb.GameData.fromBuffer(pbGameData)
- ..pbGameSave = pb.GameSave.fromBuffer(pbGameSave);
- }
- int timeLocalServerDiffMicro = 0;
- }
- class GameState {
- String name = '';
- pb.GameData pbGameData = pb.GameData();
- pb.GameSave pbGameSave = pb.GameSave();
- Duration timeLocalServerDiff = 0.seconds;
- DateTime get createTime => pbGameData.gameStart.toDateTime().toLocal();
- GameStateData get data {
- return GameStateData()
- ..name = name
- ..timeLocalServerDiffMicro = timeLocalServerDiff.inMicroseconds
- ..pbGameData = pbGameData.writeToBuffer()
- ..pbGameSave = pbGameSave.writeToBuffer();
- }
- }
- extension GameDataExtension on pb.GameData {
- GameState toGameState() {
- final save = pb.GameSave()
- ..gameId=gameId;
- final localNow = DateTime.now();
- final serverNow = gameStart.toDateTime();
- return GameState()
- ..timeLocalServerDiff = localNow.difference(serverNow)
- ..pbGameData = this
- ..pbGameSave = save;
- }
- }
|