/** * 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); } }
/** * 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; } } }
protected override void Awake() { base.Awake(); m_Executor = new AIExecutor(this); m_Collector = new AICollector(this); m_Decider = new AIDecider(this); }
protected override void Awake() { base.Awake(); m_Executor = new AIExecutor(this); m_Collector = new AICollector(this); m_Decider = new AIDecider(this); }
/** * 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))); } }
/** * 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; }