Esempio n. 1
0
    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));
    }
Esempio n. 2
0
 public static Direction?RelativePosition(this ITile finalTile, ITile startingTile)
 {
     return(DirectionExtensions.RelativeDirection(startingTile.Row, startingTile.Col, finalTile.Row, finalTile.Col));
 }