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); } }