Пример #1
0
        public void Update(KeyboardState ks, MouseState ms)
        {
            previousMouseScrollWheelValue = currentMouseScrollWheelValue;
            currentMouseScrollWheelValue  = ms.ScrollWheelValue;

            if (ks.IsKeyDown(Keys.D1))
            {
                mainCharacter.setPosition(IsometricCoord.MapToIso(new Vector2(1, 1)));
            }
            if (ks.IsKeyDown(Keys.D2))
            {
                mainCharacter.setPosition(IsometricCoord.MapToIso(new Vector2(18, 1)));
            }
            if (ks.IsKeyDown(Keys.D3))
            {
                mainCharacter.setPosition(IsometricCoord.MapToIso(new Vector2(15, 5)));
            }

            if (ks.IsKeyDown(Keys.W))
            {
                camera.Move(new Vector2(0, -2));
            }
            if (ks.IsKeyDown(Keys.S))
            {
                camera.Move(new Vector2(0, 2));
            }
            if (ks.IsKeyDown(Keys.A))
            {
                camera.Move(new Vector2(-2, 0));
            }
            if (ks.IsKeyDown(Keys.D))
            {
                camera.Move(new Vector2(2, 0));
            }
            if (currentMouseScrollWheelValue > previousMouseScrollWheelValue)
            {
                camera.Zoom = camera.Zoom + 0.05f;
            }
            if (currentMouseScrollWheelValue < previousMouseScrollWheelValue)
            {
                camera.Zoom = camera.Zoom - 0.05f;
            }

            if (ks.IsKeyDown(Keys.Up))
            {
                Vector2 positionAux;
                Vector2 matrixAux;
                positionAux = mainCharacter.getPosition() - new Vector2(0, 1);
                matrixAux   = IsometricCoord.IsoToMap(positionAux);
                if (matrixAux.Y > 0 && matrixAux.X > 0 && !doesItCollide(matrixAux))
                {
                    mainCharacter.setPosition(new Vector2(mainCharacter.getPosition().X, mainCharacter.getPosition().Y - Character.speed));
                }
            }

            if (ks.IsKeyDown(Keys.Right))
            {
                Vector2 positionAux;
                Vector2 matrixAux;
                positionAux = mainCharacter.getPosition() + new Vector2(1, 0);
                matrixAux   = IsometricCoord.IsoToMap(positionAux);
                if (matrixAux.Y > 0 && matrixAux.X < mapWidth - 1 && !doesItCollide(matrixAux))
                {
                    mainCharacter.setPosition(new Vector2(mainCharacter.getPosition().X + Character.speed, mainCharacter.getPosition().Y));
                }
            }

            if (ks.IsKeyDown(Keys.Down))
            {
                Vector2 positionAux;
                Vector2 matrixAux;
                positionAux = mainCharacter.getPosition() + new Vector2(0, 1);
                matrixAux   = IsometricCoord.IsoToMap(positionAux);
                if (matrixAux.Y < mapHeight - 1 && matrixAux.X < mapWidth - 1 && !doesItCollide(matrixAux))
                {
                    mainCharacter.setPosition(new Vector2(mainCharacter.getPosition().X, mainCharacter.getPosition().Y + Character.speed));
                }
            }

            if (ks.IsKeyDown(Keys.Left))
            {
                Vector2 positionAux;
                Vector2 matrixAux;
                positionAux = mainCharacter.getPosition() - new Vector2(1, 0);
                matrixAux   = IsometricCoord.IsoToMap(positionAux);
                if (matrixAux.X > 0 && matrixAux.Y < mapHeight - 1 && !doesItCollide(matrixAux))
                {
                    mainCharacter.setPosition(new Vector2(mainCharacter.getPosition().X - Character.speed, mainCharacter.getPosition().Y));
                }
            }

            depthSorting[0, 0] = new Vector2(mainCharacter.getMatrixPosition().X - 1, mainCharacter.getMatrixPosition().Y - 1);
            depthSorting[0, 1] = new Vector2(mainCharacter.getMatrixPosition().X, mainCharacter.getMatrixPosition().Y - 1);
            depthSorting[0, 2] = new Vector2(mainCharacter.getMatrixPosition().X + 1, mainCharacter.getMatrixPosition().Y - 1);
            depthSorting[1, 0] = new Vector2(mainCharacter.getMatrixPosition().X - 1, mainCharacter.getMatrixPosition().Y);
            depthSorting[1, 1] = new Vector2(mainCharacter.getMatrixPosition().X, mainCharacter.getMatrixPosition().Y);
            depthSorting[1, 2] = new Vector2(mainCharacter.getMatrixPosition().X + 1, mainCharacter.getMatrixPosition().Y);
            depthSorting[2, 0] = new Vector2(mainCharacter.getMatrixPosition().X - 1, mainCharacter.getMatrixPosition().Y + 1);
            depthSorting[2, 1] = new Vector2(mainCharacter.getMatrixPosition().X, mainCharacter.getMatrixPosition().Y + 1);
            depthSorting[2, 2] = new Vector2(mainCharacter.getMatrixPosition().X + 1, mainCharacter.getMatrixPosition().Y + 1);
        }
Пример #2
0
 /// <summary>
 /// Updates the Character object
 /// </summary>
 /// <param name="keyboardState">Receives the keyboard state as parameter to determine what action to do.</param>
 public void Update(KeyboardState keyboardState)
 {
     _MatrixPosition = IsometricCoord.IsoToMap(_AbsolutePosition);
 }
Пример #3
0
        /// <summary>
        /// Updates the stage logic
        /// </summary>
        /// <param name="ks">Keyboard state.</param>
        /// <param name="ms">Mouse state.</param>
        public void Update(KeyboardState ks, MouseState ms)
        {
            _PreviousMouseScrollWheelValue = _CurrentMouseScrollWheelValue;
            _CurrentMouseScrollWheelValue  = ms.ScrollWheelValue;

            #region Camera
            if (ks.IsKeyDown(Keys.W))
            {
                _Camera.Move(new Vector2(0, -Camera._Speed));
            }
            if (ks.IsKeyDown(Keys.S))
            {
                _Camera.Move(new Vector2(0, Camera._Speed));
            }
            if (ks.IsKeyDown(Keys.A))
            {
                _Camera.Move(new Vector2(-Camera._Speed, 0));
            }
            if (ks.IsKeyDown(Keys.D))
            {
                _Camera.Move(new Vector2(Camera._Speed, 0));
            }
            if (_CurrentMouseScrollWheelValue > _PreviousMouseScrollWheelValue)
            {
                _Camera.Zoom = _Camera.Zoom + 0.05f;
            }
            if (_CurrentMouseScrollWheelValue < _PreviousMouseScrollWheelValue)
            {
                _Camera.Zoom = _Camera.Zoom - 0.05f;
            }
            #endregion

            #region Character (To be moved)
            if (ks.IsKeyDown(Keys.Up))
            {
                Vector2 positionAux;
                Vector2 matrixAux;
                positionAux = _MainCharacter.AbsolutePosition - new Vector2(0, 1);
                matrixAux   = IsometricCoord.IsoToMap(positionAux);
                if (matrixAux.Y > 0 && matrixAux.X > 0 && !doesItCollide(matrixAux))
                {
                    _MainCharacter.AbsolutePosition = (new Vector2(_MainCharacter.AbsolutePosition.X, _MainCharacter.AbsolutePosition.Y - _MainCharacter.Speed));
                }
            }

            if (ks.IsKeyDown(Keys.Right))
            {
                Vector2 positionAux;
                Vector2 matrixAux;
                positionAux = _MainCharacter.AbsolutePosition + new Vector2(1, 0);
                matrixAux   = IsometricCoord.IsoToMap(positionAux);
                if (matrixAux.Y > 0 && matrixAux.X < _MapSize.X - 1 && !doesItCollide(matrixAux))
                {
                    _MainCharacter.AbsolutePosition = (new Vector2(_MainCharacter.AbsolutePosition.X + _MainCharacter.Speed, _MainCharacter.AbsolutePosition.Y));
                }
            }

            if (ks.IsKeyDown(Keys.Down))
            {
                Vector2 positionAux;
                Vector2 matrixAux;
                positionAux = _MainCharacter.AbsolutePosition + new Vector2(0, 1);
                matrixAux   = IsometricCoord.IsoToMap(positionAux);
                if (matrixAux.Y < _MapSize.Y - 1 && matrixAux.X < _MapSize.X - 1 && !doesItCollide(matrixAux))
                {
                    _MainCharacter.AbsolutePosition = (new Vector2(_MainCharacter.AbsolutePosition.X, _MainCharacter.AbsolutePosition.Y + _MainCharacter.Speed));
                }
            }

            if (ks.IsKeyDown(Keys.Left))
            {
                Vector2 positionAux;
                Vector2 matrixAux;
                positionAux = _MainCharacter.AbsolutePosition - new Vector2(1, 0);
                matrixAux   = IsometricCoord.IsoToMap(positionAux);
                if (matrixAux.X > 0 && matrixAux.Y < _MapSize.Y - 1 && !doesItCollide(matrixAux))
                {
                    _MainCharacter.AbsolutePosition = (new Vector2(_MainCharacter.AbsolutePosition.X - _MainCharacter.Speed, _MainCharacter.AbsolutePosition.Y));
                }
            }
            #endregion

            #region Updating the Main Characters Neighbours
            _MainCharacter.Neighbours[0, 0] = new Vector2(_MainCharacter.MatrixPosition.X - 1, _MainCharacter.MatrixPosition.Y - 1);
            _MainCharacter.Neighbours[0, 1] = new Vector2(_MainCharacter.MatrixPosition.X, _MainCharacter.MatrixPosition.Y - 1);
            _MainCharacter.Neighbours[0, 2] = new Vector2(_MainCharacter.MatrixPosition.X + 1, _MainCharacter.MatrixPosition.Y - 1);
            _MainCharacter.Neighbours[1, 0] = new Vector2(_MainCharacter.MatrixPosition.X - 1, _MainCharacter.MatrixPosition.Y);
            _MainCharacter.Neighbours[1, 1] = new Vector2(_MainCharacter.MatrixPosition.X, _MainCharacter.MatrixPosition.Y);
            _MainCharacter.Neighbours[1, 2] = new Vector2(_MainCharacter.MatrixPosition.X + 1, _MainCharacter.MatrixPosition.Y);
            _MainCharacter.Neighbours[2, 0] = new Vector2(_MainCharacter.MatrixPosition.X - 1, _MainCharacter.MatrixPosition.Y + 1);
            _MainCharacter.Neighbours[2, 1] = new Vector2(_MainCharacter.MatrixPosition.X, _MainCharacter.MatrixPosition.Y + 1);
            _MainCharacter.Neighbours[2, 2] = new Vector2(_MainCharacter.MatrixPosition.X + 1, _MainCharacter.MatrixPosition.Y + 1);
            #endregion
        }