예제 #1
0
    /// <summary>
    /// Tries to move actor based on command.
    /// </summary>
    /// <param name="_actor">Actor to move</param>
    /// <param name="_command">Command to execute</param>
    /// <returns>Success or fail</returns>
    public bool TryCommand(Actor _actor, Commands _command)
    {
        if (_actor == null)
        {
            return(false);
        }

        TilePosition desiredPosition = BoardMethod.GetTileFromCommand(_actor, _command);

        if (!BoardMethod.isPositionEmpty(desiredPosition))
        {
            Debug.Log(_actor.actorName + " Desired position isn't empty");
            Actor _actorInPosition = BoardMethod.GetActorInPosition(desiredPosition);
            if (_actorInPosition != null)
            {
                _actor.Attack(_actorInPosition);
                return(true);
            }
            return(false);
        }

        _actor.currentPosition = desiredPosition;
        Debug.Log(_actor.actorName + " command is valid, let's try moving");
        Vector3 _newTilePosition = mapTiles[desiredPosition.x, desiredPosition.y].transform.position;

        _actor.transform.DOMove(_newTilePosition, 0.25f).SetEase(Ease.OutBack);
        return(true);
    }