void ExitMultiselectReturnToIdle() { _startingPoint = new Vector3(); _endingPoint = new Vector3(); _gameControlState = GameControlState.Idle; }
void SelectedLeftMouseDownNoShift() { _selectedAllies = new List <GameObject>(); _unitCommandManager.ChangeSelectedAllies(_selectedAllies); _uiOverlayManager.SelectAllyUnits(_selectedAllies); _ringVisibilityManager.ChangeSelectedAllies(_selectedAllies); _gameControlState = GameControlState.Idle; }
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; }
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;
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; }
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"); } }
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(); } }
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; }
void IdleLeftMouseDown() { _startingPoint = Input.mousePosition; _gameControlState = GameControlState.Multiselect; return; }