Exemplo n.º 1
0
    void ExitMultiselectReturnToIdle()
    {
        _startingPoint = new Vector3();
        _endingPoint   = new Vector3();

        _gameControlState = GameControlState.Idle;
    }
Exemplo n.º 2
0
 void SelectedLeftMouseDownNoShift()
 {
     _selectedAllies = new List <GameObject>();
     _unitCommandManager.ChangeSelectedAllies(_selectedAllies);
     _uiOverlayManager.SelectAllyUnits(_selectedAllies);
     _ringVisibilityManager.ChangeSelectedAllies(_selectedAllies);
     _gameControlState = GameControlState.Idle;
 }
Exemplo n.º 3
0
    void MultiselectLeftMouseUp()
    {
        var llc  = Vector2.Min(_startingPoint, Input.mousePosition);
        var urc  = Vector2.Max(_startingPoint, Input.mousePosition);
        var rect = Rect.MinMaxRect(llc.x, llc.y, urc.x, urc.y);

        Ray        mouseToWorldRay = Camera.main.ScreenPointToRay(Input.mousePosition);
        RaycastHit hit;

        Physics.Raycast(mouseToWorldRay, out hit);

        Collider[] hitColliders = Physics.OverlapSphere(hit.point, 0.1f);

        var potentialAllies =
            _units.FindAll(unit => rect.Contains(PlayerCameraManager.Instance.Camera.WorldToScreenPoint(unit.transform.position)));

        potentialAllies.AddRange(hitColliders.Where(c => c.transform.parent != null).Select(c => c.transform.parent.gameObject));
        potentialAllies =
            potentialAllies.FindAll(unit => {
            if (unit.TryGetComponent <Unit>(out var u))
            {
                return(u.Alignment == Alignment.Friendly && u.IsControllable);
            }
            else
            {
                return(false);
            }
        });

        if (potentialAllies.Count == 0)
        {
            ExitMultiselectReturnToIdle();
            return;
        }

        if (potentialAllies.FirstOrDefault() == null)
        {
            ExitMultiselectReturnToIdle();
            return;
        }

        if (Input.GetKey(KeyCode.LeftShift))
        {
            _selectedAllies.AddRange(potentialAllies.ToList());
            _selectedAllies = _selectedAllies.Distinct().ToList();
        }
        else
        {
            _selectedAllies = potentialAllies.ToList();
        }

        _unitCommandManager.ChangeSelectedAllies(_selectedAllies);
        _uiOverlayManager.SelectAllyUnits(_selectedAllies);
        _ringVisibilityManager.ChangeSelectedAllies(_selectedAllies);

        _gameControlState = GameControlState.Selected;
    }
Exemplo n.º 4
0
        public override void HandleGameControl(string controlName, GameControlState state, GameTimer gameTimer)
        {
            switch (controlName)
            {
            case "MoveUp":
                if (state == GameControlState.Pressed)
                {
                    ref var physics = ref Player.GetComponent <PhysicsComponent>();

                    if (!physics.IsFalling)
                    {
                        Player.TryAddComponent(new StartMovementComponent()
                        {
                            MovementType = MovementType.Jump,
                        });
                    }
                }
                break;
Exemplo n.º 5
0
    void SelectAllUnits()
    {
        _selectedAllies = _units.Where(go => {
            if (go.TryGetComponent <Unit>(out Unit u))
            {
                return(u.Alignment == Alignment.Friendly && u.IsControllable);
            }
            else
            {
                return(false);
            }
        }).ToList();
        _unitCommandManager.ChangeSelectedAllies(_selectedAllies);
        _uiOverlayManager.SelectAllyUnits(_selectedAllies);
        _ringVisibilityManager.ChangeSelectedAllies(_selectedAllies);

        _gameControlState = GameControlState.Selected;
    }
Exemplo n.º 6
0
    void SwitchToRecordedAllies()
    {
        if (_markedUnitsMemory[_alphanum].Count() == 0)
        {
            _gameControlState = GameControlState.Idle;
            Debug.Log("Empty Slot, reverting to Idle");
        }
        else
        {
            _selectedAllies = _markedUnitsMemory[_alphanum];
            _unitCommandManager.ChangeSelectedAllies(_selectedAllies);
            _uiOverlayManager.SelectAllyUnits(_selectedAllies);
            _ringVisibilityManager.ChangeSelectedAllies(_selectedAllies);

            _gameControlState = GameControlState.Selected;
            Debug.Log("Loaded " + _alphanum);
            Debug.Log("Now entering selected");
        }
    }
Exemplo n.º 7
0
    public void ReportUnitDead(GameObject deadGameObject)
    {
        _selectedAllies = _selectedAllies.Where(go => go != deadGameObject && go != null)
                          .ToList();

        _unitCommandManager.ChangeSelectedAllies(_selectedAllies);
        _uiOverlayManager.SelectAllyUnits(_selectedAllies);
        _ringVisibilityManager.ChangeSelectedAllies(_selectedAllies);

        if (_selectedAllies.Count == 0)
        {
            _gameControlState = GameControlState.Idle;
        }

        for (int i = 0; i < 10; i++)
        {
            _markedUnitsMemory[i] = _markedUnitsMemory[i].Where(go => go != deadGameObject && go != null)
                                    .ToList();
        }
    }
Exemplo n.º 8
0
    void SelectSimilarUnitsUnderCursor()
    {
        var rect = Rect.MinMaxRect(0, 0, Screen.width, Screen.height);

        Ray        mouseToWorldRay = Camera.main.ScreenPointToRay(Input.mousePosition);
        RaycastHit hit;

        Physics.Raycast(mouseToWorldRay, out hit);

        Collider[] hitColliders = Physics.OverlapSphere(hit.point, 0.1f);

        Unit[] underCursor = hitColliders
                             .Where(c => c.transform.parent != null)
                             .Select(c => c.transform.parent.gameObject)
                             .Where(unit => {
            if (unit.TryGetComponent <Unit>(out var u))
            {
                return(u.Alignment == Alignment.Friendly && u.IsControllable);
            }
            else
            {
                return(false);
            }
        })
                             .Select(c => c.GetComponent <Unit>())
                             .ToArray();

        if (underCursor.Length == 0)
        {
            SelectedLeftMouseDownNoShift();
            return;
        }

        var potentialAllies =
            _units.FindAll(unit => rect.Contains(PlayerCameraManager.Instance.Camera.WorldToScreenPoint(unit.transform.position)));


        potentialAllies =
            potentialAllies.FindAll(unit => {
            if (unit.TryGetComponent <Unit>(out var u))
            {
                return(u.Alignment == Alignment.Friendly && u.IsControllable && u.Name == underCursor[0].Name);
            }
            else
            {
                return(false);
            }
        });

        if (Input.GetKey(KeyCode.LeftShift))
        {
            _selectedAllies.AddRange(potentialAllies.ToList());
            _selectedAllies = _selectedAllies.Distinct().ToList();
        }
        else
        {
            _selectedAllies = potentialAllies.ToList();
        }

        _unitCommandManager.ChangeSelectedAllies(_selectedAllies);
        _uiOverlayManager.SelectAllyUnits(_selectedAllies);
        _ringVisibilityManager.ChangeSelectedAllies(_selectedAllies);

        _gameControlState = GameControlState.Selected;
    }
Exemplo n.º 9
0
 void IdleLeftMouseDown()
 {
     _startingPoint    = Input.mousePosition;
     _gameControlState = GameControlState.Multiselect;
     return;
 }