Esempio n. 1
0
        private static void NewTakeTurn()
        {
            Turn turn = MaintananceTurn.GetBestMaintanance(GameLayer);

            if (turn != null)
            {
                turn = turn.TakeTurn(GameLayer);
                if (turn != null)
                {
                    StackedTurns.Push(turn);
                }
                return;
            }
            turn = AdjustEnergyTurn.GetBestEnergyAdjustment(GameLayer, 2);
            if (turn != null)
            {
                turn = turn.TakeTurn(GameLayer);
                if (turn != null)
                {
                    StackedTurns.Push(turn);
                }
                return;
            }

            if (StackedTurns.Count > 0)
            {
                Turn nextTurn = StackedTurns.Pop().TakeTurn(GameLayer);
                if (nextTurn != null)
                {
                    StackedTurns.Push(nextTurn);
                }
                return;
            }
            List <Bundle> possibleMoves = new List <Bundle>();

            possibleMoves.AddRange(TurnFactory.GetBestPlaceBuildingTurnBundles(GameLayer));
            possibleMoves.AddRange(TurnFactory.GetBestUpgradesTurnBundles(GameLayer));
            possibleMoves.AddRange(TurnFactory.GetBestPlaceUtilitiesturnBundles(GameLayer));
            possibleMoves.Add(TurnFactory.GetWaitTurnBundle(GameLayer));

            Bundle bestTurn = BundleSorter.GetBestBundle(possibleMoves, GameLayer);

            turn = bestTurn.Turn.TakeTurn(GameLayer);
            if (turn != null)
            {
                StackedTurns.Push(turn);
            }
        }