Пример #1
0
        /// <summary>
        /// Processes all of the games display logic. Updates local objects
        /// based on packets received in the Client. Processes any local
        /// decisions that need to be made, displays relevent objects/info
        /// </summary>
        /// <param name="gameTime">Parameter for the game's GameTime</param>
        public override void Update(GameTime gameTime)
        {
            if (Engine.ExitGame)
            {
                ScreenManager.RemoveScreen(this);
            }
            if (gameOver)
            {
                EndGame(_winner);
            }

            if (GetMonsterList().Count != _monsterList.Count)   //A change has happened in the monster list
            {
                _monsterList = GetMonsterList();
                GetPlayerBlocks();
            }
            UpdatePositions();
            UpdateGraphicsPieces();

            if (GamePieces.Session.Game.CardsForSale.Count > 0)     //If there are cards for sale display them.
            {
                _cardForSaleList = new TextBlock("cardList", new List <string>()
                {
                    "Cards For Sale  -  Card Cost",
                    " " + GamePieces.Session.Game.CardsForSale[0].Name + " - " + GamePieces.Session.Game.CardsForSale[0].Cost,
                    " " + GamePieces.Session.Game.CardsForSale[1].Name + " - " + GamePieces.Session.Game.CardsForSale[1].Cost,
                    " " + GamePieces.Session.Game.CardsForSale[2].Name + " - " + GamePieces.Session.Game.CardsForSale[2].Cost
                });
            }

            if (!(MonsterController.IsDead(_localPlayer)))    //If a player isn't dead check for their startOfTurn
            {
                if (_gameState != GameState.Spectating && MonsterController.State(_localPlayer) == State.StartOfTurn)
                {
                    if (MonsterController.CanYield(_localPlayer) == false)
                    {
                        _gameState = GameState.StartTurn;
                    }
                }
            }
            else
            {
                _gameState = GameState.IsDead;
            }

            var mouseIsOver = false;

            foreach (var playerBlock in _pBlocks)
            {
                if (playerBlock.MouseOver(Engine.InputManager.FreshMouseState))
                {
                    mouseIsOver = true;
                    playerCardList.BoxPosition = new Vector2(Engine.InputManager.FreshMouseState.X, Engine.InputManager.FreshMouseState.Y);
                    playerCardList._stringList = CardListToString(playerBlock.Monster.Cards);
                }
            }
            if (mouseIsOver)
            {
                playerCardList.Hidden = false;
            }
            else
            {
                playerCardList.Hidden = true;
            }


            switch (_gameState)
            {
            case GameState.StartTurn:
                StartingTurn();
                break;

            case GameState.Rolling:
                Rolling();
                break;

            case GameState.Waiting:
                Waiting();
                break;

            case GameState.BuyCardPrompt:
                AskBuyCards();
                break;

            case GameState.BuyingCards:
                BuySomeCards();
                break;

            case GameState.EndingTurn:
                EndTurn();
                break;

            case GameState.AskYield:
                AskYield();
                break;

            case GameState.IsDead:
                IsDead();
                break;

            case GameState.EndGame:
                EndGame(_winner);
                break;

            case GameState.Spectating:
                Spectate();
                break;

            default:
                Console.Write("switch hit default.");
                break;
            }

            if (Engine.InputManager.KeyPressed(Keys.P))
            {
                ScreenManager.AddScreen(new PauseMenu());
            }

            base.Update(gameTime);
        }