Пример #1
0
        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"));
        }
Пример #2
0
 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 };
 }