Ejemplo n.º 1
0
    private void M_SelectUnits()
    {
        m_player.M_ClearSelection();
        // Key is ID, val is unit
        Dictionary <int, BaseUnit> hitUnits = new Dictionary <int, BaseUnit>();

        // Single click
        RaycastHit[] hits = InputManager.Instance.M_GetMousePointerHits();
        if (hits.Length > 0)
        {
            foreach (RaycastHit hit in hits)
            {
                BaseUnit hitUnit = hit.transform.GetComponentInParent <BaseUnit>();
                if (hitUnit)
                {
                    if (hitUnit.m_faction == m_player.m_faction)
                    {
                        hitUnits[hitUnit.GetInstanceID()] = hitUnit;
                    }
                }
            }
        }
        // Selection box
        if (m_isDragging)
        {
            foreach (var kvp in m_player.M_GetAllUnits())
            {
                if (IsWithinSelectionBounds(kvp.Value.gameObject))
                {
                    hitUnits[kvp.Key] = kvp.Value;
                }
            }
        }
        m_isDragging = false;
        m_player.M_SelectUnits(hitUnits.Values.ToList()); // Can be improved
    }
Ejemplo n.º 2
0
 public void M_AddUnit(BaseUnit unit)
 {
     m_units.Add(unit.GetInstanceID(), unit); // Will fail in case of duplicate. TODO handle?
 }