示例#1
0
    public void UndoLastMomevent()
    {
        int index = movements.Count - 1;

        if (index >= 0)
        {
            Movement      movement      = movements[index];
            SnapCharacter snapCharacter = movement.Sender.GetComponent <SnapCharacter>();
            snapCharacter.DoMovement(movement.OldPosition, false);
            movements.Remove(movement);
        }
        else
        {
            Debug.Log("There is no more moves");
        }
    }
示例#2
0
    public void DoMovement(Vector3 newPosition, bool registerMovement)
    {
        transform.position = newPosition;
        SnapCharacter swapCharacter = CheckCharacterToSwap();

        if (swapCharacter)
        {
            swapCharacter.DoSwapMovement(oldPosition);
            CheckTileToSolidify();
        }
        else
        {
            UnsolidifyLastTile();
            CheckTileToSolidify();
        }
        if (registerMovement)
        {
            Movement movement = new Movement(gameObject, oldPosition, transform.position);
            CharacterManager.Instance.RegisterMovement(movement);
        }
        oldPosition = transform.position;
    }