private void AttackWithAdditionalDamage(UnitCombatSystem unitCombatSystem) { var attackedUnitStats = unitCombatSystem.GetUnitStats(); var attackedUnitName = attackedUnitStats.unitName; var attackedCounter = attackedUnitStats.counterType; if (attackedUnitStats.ability == AbilitiesEnum.Counter) { if (attackedCounter == unitStats.unitType) { _healthSystem.Damage(attackedUnitStats.counterDamage); } } foreach (var attackingTag in unitStats.attackTags) { if (attackingTag.tagName != attackedUnitName) { return; } unitCombatSystem._healthSystem.Damage(unitStats.damage + attackingTag.tagDamage); Debug.Log( $"Attack unit {unitCombatSystem.name}, normal damage: {unitStats.damage}, tag damage: {attackingTag.tagDamage}, overall dmg: {unitStats.damage + attackingTag.tagDamage}"); return; } }
public bool CanDistanceAttack(UnitCombatSystem unitGridCombat) { // Number depends on grid tile size Debug.Log(Vector3.Distance(GetPosition() / 2, unitGridCombat.GetPosition() / 2)); Debug.Log($"Range {unitStats.attackRange * 18f / 2}"); return(Vector3.Distance(GetPosition() / 2f, unitGridCombat.GetPosition() / 2f) < (unitStats.attackRange) * 18f / 2); }
private void CombatSystemUnitDebugLogger(UnitCombatSystem unit) { if (unit == null) { return; } Debug.Log( $"Unit name: {unit.name}, team: {unit.GetTeam()}, POSITION: X:{unit.transform.position.x} Y:{unit.transform.position.y} "); }
public void PickUnit(GameObject element) { var elementCombatSystem = element.GetComponent <UnitCombatSystem>(); _pickedPosition = false; _pickButtonSelected = EventSystem.current.currentSelectedGameObject; _unitStatsControllerUI.ViewClickedUnitStatsDraftPick(elementCombatSystem.GetUnitStats(), _teamPicking); _pickedUnit = element.GetComponent <UnitCombatSystem>(); }
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; }
public void AttackUnit(UnitCombatSystem unitCombatSystem, Action onAttackComplete) { _state = State.Attacking; AttackWithAdditionalDamage(unitCombatSystem); unitCombatSystem._healthSystem.Damage(unitStats.damage); if (unitCombatSystem.IsDead()) { var grid = GameController_GridCombatSystem.Instance.GetGrid(); grid.SetGridObject(transform.position, null); } Debug.Log( $"Attack unit {unitCombatSystem.name}, normal damage: {unitStats.damage}, tag damage: none, overall dmg: {unitStats.damage}"); onAttackComplete(); }
private void SelectNextActiveUnit() { if (_unitCombatSystem == null || _unitCombatSystem.GetTeam() == UnitCombatSystem.Team.Right) { _unitCombatSystem = GetNextActiveUnit(UnitCombatSystem.Team.Left); Debug.Log($"Next unit is: {_unitCombatSystem}"); } else { _unitCombatSystem = GetNextActiveUnit(UnitCombatSystem.Team.Right); Debug.Log($"Next unit is: {_unitCombatSystem}"); } _unitCombatSystem.SetActive(); _canMoveThisTurn = true; _canAttackThisTurn = true; }
private void Start() { _grid = GameController_GridCombatSystem.Instance.GetGrid(); _pickedUnit = null; _numberOfUnitsInTeam = 5; _draftPickPoint = 0; _unitScale = new Vector3(5, 5, 1); _teamsState.areTeamsReady = false; _rightTeamRespawn.SetActive(false); _teamsState.leftTeam.Clear(); _teamsState.rightTeam.Clear(); _teamsState.allUnitsInBothTeams.Clear(); _unitStatsControllerUI.HideGamePanels(); _teamPicking = UnitCombatSystem.Team.Left; _unitStatsControllerUI.HidePanelPlayerPanel(_teamPicking, GameModeEnum.DraftPick); Debug.LogWarning($"START INIT: TEAM PICKING : {_teamPicking}"); if (_debug) { _numberOfUnitsInTeam = 1; } }
public void SetUnitGridCombat(UnitCombatSystem unit) { _unitCombatSystem = unit; }
public bool CanMeleeAttack(UnitCombatSystem unitGridCombat) { // Number depends on grid tile size return(Vector3.Distance(GetPosition(), unitGridCombat.GetPosition()) < 18f); }
public bool IsEnemy(UnitCombatSystem unitGridCombat) { return(unitGridCombat.GetTeam() != team); }
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}"); } } }