public void NewGame(GameSpec spec) { if (Players.Count < 2) { return; } if (CurrentGame != null) { CurrentGame.OnGameEnded -= HandleGameEnding; } var player1 = DrawPlayer(null); var player2 = DrawPlayer(player1); if (player1 == null || player2 == null) { return; } CurrentGame = new Game(spec, player1, player2, GameConfig); CurrentGame.Spec.Players = new Player[] { player1, player2 }; CurrentGame.OnGameEnded += HandleGameEnding; OnGameCreated?.Invoke(this, new GameEventArgs("game-created")); }
public Game(GameSpec spec, Player player1, Player player2, GameConfig gameConfig) { GameConfig = gameConfig; Spec = spec; Units = spec.Units.Select((u) => u).ToArray(); foreach (var unit in Units) { PlayerLookup.Add(unit.Id, unit.Type == Units[0].Type ? player1 : player2); } Players = new Player[] { player1, player2 }; }