Example #1
0
    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;
    }
Example #2
0
    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;
        }
    }
Example #3
0
    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}");
            }
        }
    }