Esempio n. 1
0
    private void DeployUnit(UnitScript unit)
    {
        Vector3Int gridClickPos;

        // obtiene el tile en el que se hizo click
        if (!ClickOnGrid(out gridClickPos))
        {
            return;
        }

        // comprueba si hizo click sobre la zona de despliegue
        if (!map.CanDeployInPos(gridClickPos))
        {
            return;
        }

        // comprueba que el click de posicionamiento no haya sido sobre otra unidad
        foreach (UnitScript otherUnit in army)
        {
            Vector3Int gridUnitPos = map.GetGridTile(otherUnit.GetPosition());

            // comprueba si la posicion de despleigue conincide con la de otra unidad ya desplegada
            if (gridUnitPos.x == gridClickPos.x && gridUnitPos.y == gridClickPos.y)
            {
                // deselecciona el boton
                deployUnitType = -1;
                return;
            }
        }

        // setea la unidad en la posicion y direccion adecuada
        Vector3 desplyPosition = map.GetWorldPos(gridClickPos);

        unit.Deploy(desplyPosition);
        if (GameManager.instance.playerBattleSide == 1)
        {
            unit.flipUnit();
        }
        unit.gameObject.SetActive(true);

        // actualiza la lista para desplegar y el panel
        GameManager.instance.unitsToBattle.Remove(unit.unitType);
        canvas.UpdateDeploymentPanel();

        // deselecciona el boton
        deployUnitType = -1;

        unitTypesList.Add(unit.unitType);
        unitPositionsList.Add(unit.transform.position);
    }