Example #1
0
        public void update(LayerManager layerManager)
        {
            _mouse = Mouse.GetState();


            if (Keyboard.GetState().IsKeyDown(Keys.Q))
            {
                this._selectedArrow = 3;
            }

            if (Keyboard.GetState().IsKeyDown(Keys.W))
            {
                this._selectedArrow = 2;
            }

            if (Keyboard.GetState().IsKeyDown(Keys.E))
            {
                this._selectedArrow = 1;
            }

            _leftBaseCoolDown.Update();
            _rightBaseCoolDown.Update();
            _middleBaseCoolDown.Update();

            //lose check
            if (_buildings[0].GetDeathState && _buildings[1].GetDeathState && _buildings[2].GetDeathState && _buildings[3].GetDeathState && _buildings[4].GetDeathState && _buildings[5].GetDeathState)
            {
                _lose = true;
                //TextBlockFinalScores.Text = _score.ToString();
                //CanvasGameOver.Visibility = System.Windows.Visibility.Visible;
            }
            if (_leftBase.GetDeathState && _middleBase.GetDeathState && _rightBase.GetDeathState)
            {
                _lose = true;
                // TextBlockFinalScores.Text = _score.ToString();
                // CanvasGameOver.Visibility = System.Windows.Visibility.Visible;
            }

            //mini buildings to test collisions
            for (int i = 0; i < _buildings.Length; i++)
            {
                if (!_buildings[i].GetDeathState)
                {
                    if (_missileManager.TestForMissileRectangleCollisions(_buildings[i].GetRectangle))
                    {
                        _city -= 1;
                        _percentMultiplier -= 0.1f;

                        _buildings[i].Destruction(missileCommand.Missile.missileManager.GetLandScape, 30, 30);
                    }
                }
            }

            //missile manager testcollision with buildings
            if (!_leftBase.GetDeathState)
            {
                if (_missileManager.TestForMissileRectangleCollisions(_leftBase.GetRectangle))
                {
                    //BorderLeftArrow.Visibility = System.Windows.Visibility.Collapsed;

                    _missileBases      -= 1;
                    _percentMultiplier -= 0.05f;
                    _leftBase.Destruction(missileCommand.Missile.missileManager.GetLandScape, 40, 30);
                }
            }
            if (!_middleBase.GetDeathState)
            {
                if (_missileManager.TestForMissileRectangleCollisions(_middleBase.GetRectangle))
                {
                    // BorderMiddleArrow.Visibility = System.Windows.Visibility.Collapsed;

                    _missileBases      -= 1;
                    _percentMultiplier -= 0.05f;
                    _middleBase.Destruction(missileCommand.Missile.missileManager.GetLandScape, 30, 30);
                }
            }
            if (!_rightBase.GetDeathState)
            {
                if (_missileManager.TestForMissileRectangleCollisions(_rightBase.GetRectangle))
                {
                    //BorderRightArrow.Visibility = System.Windows.Visibility.Collapsed;

                    _missileBases      -= 1;
                    _percentMultiplier -= 0.05f;
                    _rightBase.Destruction(missileCommand.Missile.missileManager.GetLandScape, 30, 30);
                }
            }

            if (_isInPlay)
            {
                if (_mouse.LeftButton == ButtonState.Pressed && _oldState == ButtonState.Released)
                {
                    if (_mouse.Position.Y < Game1.game.GraphicsDevice.Viewport.Height - 40)
                    {
                        if (_mouse.Position.Y < Game1.game.GraphicsDevice.Viewport.Height - 50)
                        {
                            //adds a missile to the world
                            if (_selectedArrow == 1)
                            {
                                if (!_rightBaseCoolDown.IsOverHeated())
                                {
                                    if (!_rightBase.GetDeathState)
                                    {
                                        _rightBaseCoolDown.AddHeat(30);


                                        _missileManager.Addmissile(new Vector2(_rightBase.GetRectangle.Left + _rightBase.GetRectangle.Width / 2, _rightBase.GetRectangle.Bottom - 2), _mouse.Position.ToVector2(), new PlayerNormalmissile(_missileManager));
                                    }
                                }
                            }
                            else if (_selectedArrow == 2)
                            {
                                if (!_middleBaseCoolDown.IsOverHeated())
                                {
                                    if (!_middleBase.GetDeathState)
                                    {
                                        _middleBaseCoolDown.AddHeat(30);
                                        _missileManager.Addmissile(new Vector2(_middleBase.GetRectangle.Left + _middleBase.GetRectangle.Width / 2, _middleBase.GetRectangle.Bottom - 2), _mouse.Position.ToVector2(), new PlayerNormalmissile(_missileManager));
                                    }
                                }
                            }
                            else
                            {
                                if (!_leftBaseCoolDown.IsOverHeated())
                                {
                                    if (!_leftBase.GetDeathState)
                                    {
                                        _leftBaseCoolDown.AddHeat(30);

                                        _missileManager.Addmissile(new Vector2(_leftBase.GetRectangle.Left + _leftBase.GetRectangle.Width / 2, _leftBase.GetRectangle.Bottom - 2), _mouse.Position.ToVector2(), new PlayerNormalmissile(_missileManager));
                                    }
                                }
                            }
                        }
                    }
                }
            }


            if ((_missileBases <= 0 || _city <= 0) && _isInPlay)
            {
                if (layerManager.getLayerById("game-over") == null)
                {
                    layerManager.addLayer(new GameOver(_score));
                }
            }



            _oldState = _mouse.LeftButton;

            _line.Update();
            // TODO: Add your update logic here
            _missileManager.Update(this);
        }