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); }
/// <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); }
/// <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 }