private void DoStartTurn() { if (_nextTurnData == null) { throw new Exception("Missing data for next turn?"); } _jobManager.AllJobsFinished -= DoStartTurn; TurnNumber = _nextTurnData.TurnNumber; ActiveSquadIndex = _nextTurnData.ActiveSquadIndex; _nextTurnData = null; _inputMachine.SetState(HomeSquadActive ? new IdleInputState(_inputMachine) : null); TurnEnded = false; // CARDS! if (TurnNumber == 1) { foreach (var s in _squads) { for (int i = 0; i < cardsHandStartSize; i++) { s.Deck.DrawCard(); } } } else { // draw one at the start of your turn ActiveSquad.Deck.DrawCard(); } var handler = new List <INewTurnHandler>(); ActiveSquad.AliveMembers.ForEach(ent => handler.AddRange(ent.GetComponents <INewTurnHandler>())); handler.ForEach(h => h.OnNewTurn()); _bus.Publish(new FocusCameraMessage(this, ActiveSquad.AliveMembers.Last().transform.position)); _bus.Publish(new TurnBoundaryMessage(this, true)); }
public void StartNextTurn(StartTurnData data) { // check turn number if (data.TurnNumber != TurnNumber + 1) { throw new Exception($"got wrong turn number. expected {TurnNumber + 1}, got {data.TurnNumber}"); } _nextTurnData = data; if (_jobManager.NoJobsLeft) { DoStartTurn(); } else { _jobManager.AllJobsFinished += DoStartTurn; } }
public void StartGame(IGameConfiguration game) { GameConfig = game; while (!MapGenerator.Generate(GameConfig, _map, _gem, out _squads)) { _gem.KillAll(); _map.ClearMap(); (GameConfig as GameConfiguration).RandomSeed += 1; } _squads.ForEach(s => s.Deck.MaximumHandSize = cardsHandMaximumSize); TurnNumber = 0; TurnEnded = true; _nextTurnData = null; Debug.Log($"[GameManager] Starting game! id: {GameConfig.ServerId}"); _bus.Publish(new GameStartedMessage(this)); }