Exemple #1
0
        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));
        }
Exemple #2
0
        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;
            }
        }
Exemple #3
0
        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));
        }