private void PlaceUnitOnMap() { var pickedUnit = Instantiate(_pickedUnit, CursorUtils.GetMouseWorldPosition(), Quaternion.identity); pickedUnit.transform.localScale = _unitScale; pickedUnit.transform.position = GridUtils.SetUnitOnTileCenter(pickedUnit.gameObject); GameController_GridCombatSystem .Instance .GetGrid() .GetGridObject(pickedUnit.GetPosition()) .SetUnitGridCombat(pickedUnit); _pickedUnit = null; }
private void Update() { if (!_teamsState.areTeamsReady) { return; } switch (_state) { case State.Normal: if (Input.GetKeyDown(KeyCode.Space)) { Debug.Log("Force turn over."); ForceTurnOver(); } if (Input.GetMouseButtonDown(0)) { var grid = GameController_GridCombatSystem.Instance.GetGrid(); var gridObject = grid.GetGridObject(CursorUtils.GetMouseWorldPosition()); // Check if clicking on a unit position if (gridObject == null) { return; } if (gridObject.GetUnitGridCombat() != null) // Clicked on top of a Unit { if (_unitCombatSystem.IsEnemy(gridObject.GetUnitGridCombat())) { if (_unitCombatSystem.CanMeleeAttack(gridObject.GetUnitGridCombat()) && _unitCombatSystem.unitStats.unitType == UnitTypeEnum.Melee) { if (_canAttackThisTurn) { _canAttackThisTurn = false; _state = State.Normal; _unitCombatSystem.AttackUnit(gridObject.GetUnitGridCombat(), () => { _state = State.Normal; ForceTurnOver(); }); } } if (_unitCombatSystem.CanDistanceAttack(gridObject.GetUnitGridCombat()) && _unitCombatSystem.unitStats.unitType == UnitTypeEnum.Distance) { if (_canAttackThisTurn) { _canAttackThisTurn = false; _state = State.Normal; _unitCombatSystem.AttackUnit(gridObject.GetUnitGridCombat(), () => { _state = State.Normal; ForceTurnOver(); }); } } break; } } if (gridObject.GetIsValidMovePosition()) { if (_canMoveThisTurn) { _canMoveThisTurn = false; grid.GetGridObject(_unitCombatSystem.GetPosition()).ClearUnitGridCombat(); gridObject.SetUnitGridCombat(_unitCombatSystem); ClearMovementGridVisualization(); _state = State.Waiting; _unitCombatSystem.MoveTo(CursorUtils.GetMouseWorldPosition(), () => { UpdateValidMovePositionsAndAttackRange(true); _state = State.Normal; }); } } } break; } }
private void Update() { if (Input.GetMouseButtonDown(0)) { RaycastHit hit; var ray = Camera.main.ScreenPointToRay(Input.mousePosition); if (Physics.Raycast(ray, out hit)) { Debug.Log($"RAYCAST HIT: {hit.transform.name}"); } } if (!Input.GetMouseButtonDown(0) || _pickedUnit == null) { return; } var gridObject = _grid.GetGridObject(CursorUtils.GetMouseWorldPosition()); if (_pickedUnit == null || gridObject == null || gridObject.GetRespawn() == null) { return; } // TODO nice to have removed duplicates if (_teamPicking == UnitCombatSystem.Team.Left) { if (gridObject.GetRespawn().CompareTag("RightRespawn")) { return; } var pickedUnit = Instantiate(_pickedUnit, CursorUtils.GetMouseWorldPosition(), Quaternion.identity); pickedUnit.transform.localScale = _unitScale; pickedUnit.transform.position = GridUtils.SetUnitOnTileCenter(pickedUnit.gameObject); _unitStatsControllerUI.HidePanelPlayerPanel(_teamPicking, GameModeEnum.DraftPick); _teamsState.leftTeam.Add(pickedUnit); _teamsState.allUnitsInBothTeams.Add(pickedUnit); _pickButtonSelected.SetActive(false); _pickedUnit = null; _draftPickPoint++; if ( _draftPickPoint == 1 || _draftPickPoint == 5 || _draftPickPoint == 9 ) { HideRespawn(); _teamPicking = UnitCombatSystem.Team.Right; _unitStatsControllerUI.HidePanelPlayerPanel(_teamPicking, GameModeEnum.DraftPick); Debug.Log($"DRAFT PICK POINT: {_draftPickPoint} NEXT PICK: {_teamPicking}"); return; } } if (_teamPicking == UnitCombatSystem.Team.Right) { if (gridObject.GetRespawn().CompareTag("LeftRespawn")) { return; } var pickedUnit = Instantiate(_pickedUnit, CursorUtils.GetMouseWorldPosition(), Quaternion.identity); pickedUnit.transform.localScale = _unitScale; pickedUnit.transform.position = GridUtils.SetUnitOnTileCenter(pickedUnit.gameObject); _teamsState.rightTeam.Add(pickedUnit); _teamsState.allUnitsInBothTeams.Add(pickedUnit); _pickedUnit = null; _pickButtonSelected.SetActive(false); if (_teamsState.rightTeam.Count == _numberOfUnitsInTeam) { Debug.Log($"{_teamsState.rightTeam} is FULL"); _leftTeamRespawn.SetActive(false); _rightTeamRespawn.SetActive(false); _gridCombatSystem._teamsState = _teamsState; _gridCombatSystem.SetupGame(); return; } _draftPickPoint++; if (_draftPickPoint == 3 || _draftPickPoint == 7) { HideRespawn(); _teamPicking = UnitCombatSystem.Team.Left; _unitStatsControllerUI.HidePanelPlayerPanel(_teamPicking, GameModeEnum.DraftPick); Debug.Log($"DRAFT PICK POINT: {_draftPickPoint} NEXT PICK: {_teamPicking}"); } } }