public Turn OnTurn() { var steps = new List <Step>(); if (CurrentHp > 0) { //Direction? direction = DirectionExtensions.RelativeDirection(controller.Row, controller.Col, player.Row, player.Col); Direction?direction = DirectionExtensions.RelativeDirection(transform.position, player.transform.position); if (direction == null) { if (controller.Elevation > player.Elevation && player.IsClimbing && player.Climbing == controller.Climbing) { direction = controller.Climbing.Value.Opposite(); } else { direction = player.Climbing; } } if (direction != null) { Step moveStep = controller.Move(direction.Value); if (moveStep != null) { steps.Add(moveStep); } } if (!controller.IsClimbing) { steps.Add(AttackMyTile()); } } return(new Turn(steps, GameManager.standardTurnTime)); }
public static Direction?RelativePosition(this ITile finalTile, ITile startingTile) { return(DirectionExtensions.RelativeDirection(startingTile.Row, startingTile.Col, finalTile.Row, finalTile.Col)); }