blob: 494e29eeefef68e919ab516bd40063dae43dfb0f [file] [log] [blame]
import 'game.dart' show Game, GameType;
enum CroupierState {
Welcome,
Settings,
ChooseGame,
AwaitGame,
ArrangePlayers,
PlayGame
}
class Croupier {
CroupierState state;
Settings settings;
Game game; // null until chosen
Croupier() {
state = CroupierState.Welcome;
// settings = new Settings.load(?); // Give it in the croupier constructor. The app itself should load this info.
}
// Sets the next part of croupier state.
// Depending on the originating state, data can contain extra information that we need.
void setState(CroupierState nextState, var data) {
switch (state) {
case CroupierState.Welcome:
// data should be empty.
assert(data == null);
break;
case CroupierState.Settings:
// data should be empty.
// All settings changes affect the croupier settings directly without changing app state.
assert(data == null);
break;
case CroupierState.ChooseGame:
// data should be the game id here.
GameType gt = data as GameType;
game = new Game(gt, 0); // Start as player 0 of whatever game type.
break;
case CroupierState.AwaitGame:
// data would probably be the game id again.
GameType gt = data as GameType;
game = new Game(gt, 0); // Start as player 0 of whatever game type.
break;
case CroupierState.ArrangePlayers:
// data should be empty.
// All rearrangements affect the Game's player number without changing app state.
break;
case CroupierState.PlayGame:
// data should be empty.
// The signal to start really isn't anything special.
break;
default:
assert(false);
}
state = nextState;
}
}
class Settings {
String avatar;
String name;
String color; // in hex?
Settings(this.avatar, this.name, this.color);
// Settings.load(String data) {}
// String save() { return null; }
}