Babylonia-terminal/babylonia_terminal_launcher/lib/providers/game_state_provider.dart
2024-06-03 20:14:53 +02:00

40 lines
956 B
Dart

import 'package:babylonia_terminal_launcher/messages/game_state.pb.dart';
import 'package:flutter/material.dart';
class GameStateProvider with ChangeNotifier {
States? _gameState;
bool isUpdating = false;
bool haveToSetup = false;
get gameState {
return _gameState;
}
Future updateGameState() async {
if (!isUpdating) {
isUpdating = true;
AskGameState().sendSignalToRust();
final stream = GameState.rustSignalStream;
await for (final rustSignal in stream) {
_gameState = rustSignal.message.state;
break;
}
isUpdating = false;
notifyListeners();
}
}
void updateSetup() {
haveToSetup = needToSetup();
notifyListeners();
}
bool needToSetup() {
return _gameState == States.ProtonNotInstalled ||
_gameState == States.DXVKNotInstalled ||
_gameState == States.FontNotInstalled ||
_gameState == States.DependecieNotInstalled;
}
}