Пример #1
0
    public void SwapGridSpace(GridUnit allyToSwap)
    {
        if (allyToSwap == null)
        {
            Debug.LogWarning("WARNING: Tried to swap places with Unit that did not exist!");
            return;
        }

        Vector3 originalTransform = transform.position;
        Vector3 pos = allyToSwap.transform.position;

        if (allyToSwap.gridSpace != null)
        {
            pos = allyToSwap.gridSpace.transform.position;
        }

        pos.y = transform.position.y;
        transform.position = pos;

        pos   = originalTransform;
        pos.y = allyToSwap.transform.position.y;
        allyToSwap.transform.position = pos;

        GridSpace currentSpace = gridSpace;
        GridSpace allySpace    = allyToSwap.gridSpace;

        currentSpace.UnoccupySpace();
        allySpace.UnoccupySpace();

        currentSpace.OccupySpace(allyToSwap);
        allySpace.OccupySpace(this);

        if (allyToSwap.knockedback)
        {
            allyToSwap.StopAllCoroutines();
        }

        gridSpace            = allySpace;
        allyToSwap.gridSpace = currentSpace;

        //Activate the tile on Enter in case its a lava tile
        gridSpace.OnTileEnter();
    }