| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556 |
- import 'dart:async';
- import 'package:trackoffical_app/logger.dart';
- import 'package:trackoffical_app/model/closeable.dart';
- import 'plug.dart';
- import 'package:meta/meta.dart';
- import 'package:trackoffical_app/service/service.dart';
- abstract class GameInstance extends Closeable{
- GameInstance(){
- _state=GameInstanceState.uninitialized;
- }
- Future<void> init()async{
- await onInit();
- for(final one in plugs){
- await one.init();
- }
- _state=GameInstanceState.initialized;
- debug('[$runtimeType] initialized');
- }
- Future<void> closeUsedByManager()async{
- _state=GameInstanceState.closing;
- close();
- for(final one in plugs){
- one.close();
- }
- await join();
- _state=GameInstanceState.closed;
- }
- @protected
- Future<void> onInit();
- void Function() stop=(){};
- int get id =>-1;
- final loadProgress = 0.0.obs;
- @protected
- final List<Plug> plugs=[];
- final _stateController = StreamController<GameInstanceState>.broadcast();
- var _stateLast = GameInstanceState.uninitialized;
- Stream<GameInstanceState> get stateStream =>_stateController.stream;
- GameInstanceState get state=>_stateLast;
- set _state(GameInstanceState v){
- _stateLast=v;
- _stateController.add(v);
- }
- }
- enum GameInstanceState{
- uninitialized,
- initialized,
- closing,
- closed,
- }
|