private void HandleInput()
        {
            if (keystate.IsKeyDown(Keys.A) && prevKeystate.IsKeyUp(Keys.A))
            {
                tower = new ArrowTower(arrowTower, Vector2.Zero, bullet, 1, soundBank);
                if (tower.Cost <= money)
                {
                    towerPreview.ChangeTowerTexture(arrowTower);
                    towerPreview.ChangeRangeTexture(arrowRange, tower.Range);
                }

                else
                {
                    tower = null;
                }
            }

            if (keystate.IsKeyDown(Keys.S) && prevKeystate.IsKeyUp(Keys.S))
            {
                tower = new SpikeTower(spikeTower, Vector2.Zero, bullet, 1, soundBank);
                if (tower.Cost <= money)
                {
                    towerPreview.ChangeTowerTexture(spikeTower);
                    towerPreview.ChangeRangeTexture(spikeRange, tower.Range);
                }

                else
                {
                    tower = null;
                }
            }

            if (keystate.IsKeyDown(Keys.B) && prevKeystate.IsKeyUp(Keys.B))
            {
                tower = new BombTower(bombTower, Vector2.Zero, bullet, 1, soundBank);
                if (tower.Cost <= money)
                {
                    towerPreview.ChangeTowerTexture(bombTower);
                    towerPreview.ChangeRangeTexture(arrowRange, tower.Range);
                }

                else
                {
                    tower = null;
                }
            }

            if (keystate.IsKeyDown(Keys.Space) && prevKeystate.IsKeyUp(Keys.Space))
            {
                Button waveButton = guiManager.GetButton("wave");

                if (waveButton.Visible)
                {
                    waveManager.StartNextWave();
                }
                waveButton.Visible = false;
            }
        }
Пример #2
0
        ////////////////////////////////////////////////////////////////////////////////////////////////////
        /// <summary>   Reference page contains links to related code samples. </summary>
        ///
        /// <remarks>   Frost, 16.11.2010. </remarks>
        ///
        /// <param name="gameTime"> Time passed since the last call to Update. </param>
        ////////////////////////////////////////////////////////////////////////////////////////////////////

        protected override void Update(GameTime gameTime)
        {
            mouseState = Mouse.GetState();

            keystate = Keyboard.GetState();

            this.Window.Title = "X : " + mouseState.X.ToString() + "    Y  : " + mouseState.Y.ToString();

            cellX = (int)(mouseState.X / Engine.TileWidth);
            cellY = (int)(mouseState.Y / Engine.TileHeight);

            tileX = cellX * Engine.TileWidth;
            tileY = cellY * Engine.TileHeight;

            HandleInput();

            waveManager.Update(gameTime);

            if (waveManager.CurrentWave.EnemyReachedEnd)
            {
                lives--;
                waveManager.CurrentWave.EnemyReachedEnd = false;
            }

            if (waveManager.waveFinished)
            {
                Button waveButton = guiManager.GetButton("wave");
                waveButton.Visible = true;
            }

            guiManager.Update(gameTime);

            if (mouseState.RightButton == ButtonState.Released && oldState.RightButton == ButtonState.Pressed)
            {
                tower         = null;
                towerSelected = false;
            }

            if (IsInBounds(cellX, cellY) && this.IsActive && level.GetCellIndex(cellX, cellY) != 1)
            {
                if (mouseState.LeftButton == ButtonState.Released && oldState.LeftButton == ButtonState.Pressed)
                {
                    selectedTower = towerManager.IsTowerSelected(tileX, tileY);
                    if (selectedTower != null)
                    {
                        selectedTower.Selected = true;
                        towerSelected          = true;
                        selectedTowerPos       = selectedTower.Position;

                        if (selectedTower is ArrowTower || selectedTower is BombTower)
                        {
                            selectedType = 1;
                        }

                        else
                        {
                            selectedType = 2;
                        }
                    }

                    else
                    {
                        towerSelected = false;
                        CreateTower();
                    }
                }
            }

            if (towerSelected)
            {
                if (keystate.IsKeyDown(Keys.U) && prevKeystate.IsKeyUp(Keys.U))
                {
                    if (money >= selectedTower.CostNextLevel && selectedTower.Tier != 3)
                    {
                        money -= selectedTower.CostNextLevel;
                        selectedTower.Upgrade();
                    }
                }
            }

            towerManager.Update(gameTime, waveManager.GetEnemies());

            foreach (Enemy enemy in waveManager.GetEnemies())
            {
                if (enemy.IsDead)
                {
                    money += enemy.BountyGiven;
                }
            }

            prevKeystate = keystate;
            oldState     = mouseState;

            base.Update(gameTime);

            audioEngine.Update();
            exitGameOnEsc();
        }