Esempio n. 1
0
    /// <summary>
    /// Seleccionar unidad
    /// </summary>
    /// <param name="nodeUnit">Unidad a seleccionar</param>
    private void UnitSelection(Unit nodeUnit)
    {
        _selectedUnit = nodeUnit;
        List <GridNode> newNodes = PathRequestManager.RequestAvaibleNodes(nodeUnit.currentNode, _selectedUnit.moveDistance, _team); // Lista de nodos vecinos accesibles que se muestran tras la selección

        // ELEGIR CASILLA ACCESIBLE DE LA LISTA NEWNODES

        if (newNodes != _selectedNodes)
        {
            if (_selectedNodes != null)
            {
                foreach (GridNode node in _selectedNodes)
                {
                    _drawGrid.HideNode(node.gridX, node.gridY);
                }
            }

            foreach (GridNode node in newNodes)
            {
                NodeState nodeState = NodeState.Available;
                if (node.isOccupied != null && node.isOccupied.tag == "Unit") //Nodo ocupat per una unitat
                {
                    if (_team.IsUnitInTeam((Unit)node.isOccupied))            //Si la unitat forma part del nostre equipo
                    {
                        nodeState = NodeState.FriendlyUnit;
                    }
                    else
                    {
                        nodeState = NodeState.EnemyUnit;
                    }
                }
                else if (node.isOccupied != null) //Si esta ocupado y no es una unidad, entonces es una bandera
                {
                    if (node == _team.flagPosition)
                    {
                        nodeState = NodeState.FriendlyFlag;
                    }
                    else
                    {
                        nodeState = NodeState.EnemyFlag;
                    }
                }
                if (type == PlayerType.User)
                {
                    _drawGrid.DrawNode(node.gridX, node.gridY, nodeState);
                }
            }

            _selectedNodes = newNodes;
        }
    }