public static void Move(GameAsset intruderGameAsset, TargetPosition targetPosition, GameSession gameSession) //Allows a game asset (player, monster(not yet implemented) etc) to move { List <GameAsset> gameAssets = gameSession.CurrentGameAssets; GameAsset targetGameAsset; foreach (GameAsset gameAsset in gameAssets) { //Finds the game asset the player is moving to if (gameAsset.PositionX == targetPosition.PositionX && gameAsset.PositionY == targetPosition.PositionY && gameAsset.IsPassable) { targetGameAsset = gameAsset; gameSession.CurrentGameAssets.Remove(targetGameAsset); //Creates Floor object where the player used to be gameSession.CurrentGameAssets.Add(new Floor(intruderGameAsset.PositionX, intruderGameAsset.PositionY)); // player/monster to the target tile intruderGameAsset.PositionX = targetPosition.PositionX; intruderGameAsset.PositionY = targetPosition.PositionY; gameSession.CurrentMoves += 1; gameSession.Score -= 1; break; } } }
public static TargetPosition GetTargetPosition(GameAsset intruderGameAsset, Input direction) //Allows a player to get the position of its next move { TargetPosition targetPosition = new TargetPosition(0, 0); switch (direction) { case Input.UP: targetPosition.PositionX = intruderGameAsset.PositionX; targetPosition.PositionY = intruderGameAsset.PositionY - 1; break; case Input.DOWN: targetPosition.PositionX = intruderGameAsset.PositionX; targetPosition.PositionY = intruderGameAsset.PositionY + 1; break; case Input.LEFT: targetPosition.PositionX = intruderGameAsset.PositionX - 1; targetPosition.PositionY = intruderGameAsset.PositionY; break; case Input.RIGHT: targetPosition.PositionX = intruderGameAsset.PositionX + 1; targetPosition.PositionY = intruderGameAsset.PositionY; break; case Input.NONE: break; } return(targetPosition); }