Example #1
0
        /**
         * Procedure that ends the currentPlayer's turna nd sets up the gameplan
         * for another player's turn.
         */
        private void NextPlayer()
        {
            if (currentPlayer is AIPlayer)
            {
                ((AIPlayer)currentPlayer).Trade = true;
            }
            do
            {
                if (players[playerTurnPointer].Blocked > 0)
                {
                    players[playerTurnPointer].Blocked -= 1;
                }
                playerTurnPointer++;
                playerTurnPointer = playerTurnPointer % players.Length;
            } while (players[playerTurnPointer].Blocked > 0);

            currentPlayer = players[playerTurnPointer];
            window.ShowPlayerInfo(currentPlayer);
            window.PrepareForDice(currentPlayer.Color);

            if (currentPlayer is AIPlayer)
            {
                window.gameButton2.Hide();
            }
            window.Update();
            GameState = GameStage.DICE;
            if (currentPlayer is AIPlayer)
            {
                AIDecider.PerformButtonClick(window.gameButton1);
                ClickButton(1);
            }
        }
Example #2
0
 /**
  * When a player makes a trade offer, it displays it and prompts
  * another player to accept or reject the offer.
  */
 private void MakeTradeOffer()
 {
     if (window.GetSelectedItem() != null)
     {
         ListViewItem lvi = window.GetSelectedItem();
         selectedItem = (Card)lvi.Tag;
         float offeredMoney = window.GetOfferedMoney();
         window.ShowTradeOffer(((Card)selectedItem).Name, offeredMoney,
                               propertyManager.WhoOwns(selectedItem));
         GameState = GameStage.TRADE_CONFIRM;
         if (propertyManager.WhoOwns(selectedItem) is AIPlayer)
         {
             window.SetTextBox("");
             Thread.Sleep(500);
             window.Update();
             if (AIDecider.TradeOfferDecide((Card)selectedItem, offeredMoney, propertyManager, (AIPlayer)propertyManager.WhoOwns(selectedItem)))
             {
                 window.SetTextBox("Your trade offer was accepted.");
                 Thread.Sleep(700);
                 propertyManager.ChangeOwner(currentPlayer,
                                             selectedItem, window.GetOfferedMoney());
             }
             else
             {
                 window.SetTextBox("Your trade offer was declined.");
                 Thread.Sleep(700);
             }
             ShowWhatNext(currentPlayer);
             return;
         }
     }
 }
Example #3
0
 protected override void Awake()
 {
     base.Awake();
     m_Executor = new AIExecutor(this);
     m_Collector = new AICollector(this);
     m_Decider = new AIDecider(this);
 }
Example #4
0
 protected override void Awake()
 {
     base.Awake();
     m_Executor  = new AIExecutor(this);
     m_Collector = new AICollector(this);
     m_Decider   = new AIDecider(this);
 }
Example #5
0
        /**
         * Called when gameButton2 was clicked, it analyses the game situation (using GameState attribute)
         * and then handles the click button accordingly.
         */
        private void Button2_action()
        {
            if (GameState == GameStage.NO_ACTION)
            {
                return;
            }

            Card card = propertyManager
                        .CardAt(gameplan.PlayerPosition(currentPlayer));

            GameStage state = GameState;

            GameState = GameStage.NO_ACTION;

            switch (state)
            {
            case GameStage.DICE:
                SaveButton_action();
                GameState = GameStage.DICE;
                break;

            case GameStage.NO_FUNDS_PAY:
                window.ShowMortgagedProperties(propertyManager.GetMortgagedProperties(currentPlayer, false), true);
                GameState = GameStage.MORTGAGE_TAKE;
                break;

            case GameStage.WHAT_NEXT:
                window.ShowMortgageMenu();
                GameState = GameStage.MORTGAGE_MENU;
                break;

            case GameStage.TRADE_CONFIRM:
                window.ShowPlayerInfo(currentPlayer);
                window.ShowMessage("Your offer was declined!");
                Thread.Sleep(2000);
                break;

            case GameStage.MORTGAGE_MENU:
                window.ShowMortgagedProperties(propertyManager.GetMortgagedProperties(currentPlayer, true), false);
                GameState = GameStage.MORTGAGE_PAY;
                break;

            default:
                break;
            }
            if (GameState == GameStage.NO_ACTION)
            {
                ShowWhatNext(currentPlayer);
            }

            if (currentPlayer is AIPlayer)
            {
                AIDecider.PlayTurn((AIPlayer)currentPlayer, window, this, propertyManager
                                   .CardAt(gameplan.PlayerPosition(currentPlayer)));
            }
        }
Example #6
0
        /**
         * Called when gameButton1 was clicked, it analyses the game situation (using GameState attribute)
         * and then handles the click button accordingly.
         */
        private void Button1_action()
        {
            if (GameState == GameStage.NO_ACTION)
            {
                return;
            }

            window.Enabled = false;

            Card card = propertyManager
                        .CardAt(gameplan.PlayerPosition(currentPlayer));
            Player owner = propertyManager.WhoOwns(card);

            GameStage state = GameState;

            GameState = GameStage.NO_ACTION;

            switch (state)
            {
            case GameStage.DICE:
                window.HideButton();
                RollDice();
                break;

            case GameStage.AWAITING_PURCHASE:
                propertyManager.AddOwnership(card, currentPlayer);
                currentPlayer.Money -= card.Cost;
                break;

            case GameStage.AWAITING_RENT:
                float money = card.GetPayment();
                currentPlayer.Money -= money;
                owner.Money         += money;
                break;

            case GameStage.AWAITING_UPGRADE:
                PropertyCard c2 = (PropertyCard)card;
                window.DrawApartment(
                    gameplan.GetCoordsOfNextApartment(
                        gameplan.PlayerPosition(
                            currentPlayer), c2.Apartments));
                c2.AddApartment();
                currentPlayer.Money -= c2.ApartmentCost;
                break;

            case GameStage.NO_FUNDS_PAY:
                RemovePlayer();
                NextPlayer();
                break;

            case GameStage.WHAT_NEXT:
                window.ShowTradeOptions(propertyManager
                                        .GetTradeOptions(currentPlayer),
                                        currentPlayer);
                GameState = GameStage.TRADE_OFFER;
                break;

            case GameStage.TRADE_OFFER:
                MakeTradeOffer();
                break;

            case GameStage.TRADE_CONFIRM:
                propertyManager.ChangeOwner(currentPlayer,
                                            selectedItem, window.GetOfferedMoney());
                break;

            case GameStage.MORTGAGE_MENU:
                window.ShowMortgagedProperties(propertyManager.GetMortgagedProperties(currentPlayer, false), true);
                GameState = GameStage.MORTGAGE_TAKE;
                break;

            case GameStage.MORTGAGE_TAKE:
                TakeMortgage();
                break;

            case GameStage.MORTGAGE_PAY:
                PayMortgageOff();
                break;

            case GameStage.HOLIDAY:
                NextPlayer();
                break;

            default:
                Console.Write("An unexpected error occurred! " + GameState);
                break;
            }
            if (GameState == GameStage.NO_ACTION)
            {
                ShowWhatNext(currentPlayer);
            }
            window.Update();
            if (currentPlayer is AIPlayer)
            {
                AIDecider.PlayTurn((AIPlayer)currentPlayer, window, this, propertyManager
                                   .CardAt(gameplan.PlayerPosition(currentPlayer)));
            }
            window.Enabled = true;
        }