public void StartAttack(int attack) { attackTarget = null; attackReticule.gameObject.SetActive(false); minAttackRange = data.actions[attack].minRange; maxAttackRange = data.actions[attack].maxRange; currentAttack = attack; faceTiles = new List <Tile>(); int _x = tile.x; int _y = tile.y; if (_y + 1 <= GameManager.MAP_HEIGHT) { faceTiles.Add(GameManager.instance.GetTile(_x, _y + 1)); } if (_y - 1 >= 0) { faceTiles.Add(GameManager.instance.GetTile(_x, _y - 1)); } if (_x - 1 >= 0) { faceTiles.Add(GameManager.instance.GetTile(_x - 1, _y)); } if (_x + 1 <= GameManager.MAP_WIDTH) { faceTiles.Add(GameManager.instance.GetTile(_x + 1, _y)); } unitPhase = UnitPhase.ATTACK; GameManager.instance.state = GameManager.GameState.DISABLESELECTING; GetAttackTiles(tile, false); }
public void StartMove() { if (data.movementRange - movementUsed > 1) { attackTarget = null; attackReticule.gameObject.SetActive(false); unitPhase = UnitPhase.MOVE; moveTile = tile; GetMovementTiles(); GameManager.instance.state = GameManager.GameState.DISABLESELECTING; } }
public override void Unselect() { GameManager.selectedObject = null; selector.color = Color.grey; GameManager.instance.unitDisplay.Hide(); unitPhase = UnitPhase.IDLE; GameManager.instance.state = GameManager.GameState.IDLE; if (movementUsed == 0) { pathDisplay.hidden = true; } }
void AttackCheck() { for (int i = 0; i < attackRangeTiles.Count; i++) { attackRangeTiles[i].Highlight(attackColor); } if (CastleManager.selectedObject && CastleManager.selectedObject is Tile) { bool inRange = false; for (int i = 0; i < attackRangeTiles.Count; i++) { if (CastleManager.selectedObject == attackRangeTiles[i]) { attackTarget = attackRangeTiles[i]; inRange = true; break; } } if (!inRange) { Unselect(); } else { attackReticule.transform.position = attackTarget.transform.position - Vector3.forward; attackReticule.gameObject.SetActive(true); if (TileInCone(attackTarget, Facing.UP)) { SetFacing(Facing.UP); } else if (TileInCone(attackTarget, Facing.DOWN)) { SetFacing(Facing.DOWN); } else if (TileInCone(attackTarget, Facing.LEFT)) { SetFacing(Facing.LEFT); } else if (TileInCone(attackTarget, Facing.RIGHT)) { SetFacing(Facing.RIGHT); } unitPhase = UnitPhase.IDLE; GameManager.instance.state = GameManager.GameState.IDLE; } } }
public void SetFacing(Facing _face) { facing = _face; switch (facing) { case Facing.UP: faceIndicator.transform.rotation = Quaternion.identity; break; case Facing.DOWN: faceIndicator.transform.rotation = Quaternion.Euler(0, 0, 180); break; case Facing.LEFT: faceIndicator.transform.rotation = Quaternion.Euler(0, 0, 270); break; case Facing.RIGHT: faceIndicator.transform.rotation = Quaternion.Euler(0, 0, 90); break; } unitPhase = UnitPhase.IDLE; }
public void ShowCursor(Unit unit) { Vector3 mouseVector3 = GridUtils.GetMouseWorldPosition(Input.mousePosition); mouseVector3.z = 0; int mouseX, mouseY; _grid.GetCellPosition(mouseVector3, out mouseX, out mouseY); if (mouseX < _grid.GetGridWidth() && mouseY < _grid.GetGridHeight() && mouseX >= 0 && mouseY >= 0) { GridCell gridCell = _grid.GetCell(mouseX, mouseY); PathNode pathNode = gridCell.GetPathNode(); UnitPhase unitPhase = unit.GetUnitPhase(); switch (unitPhase) { case UnitPhase.Standby: if (pathNode.isMovable) { ChangeCursorTo(movementCursor); break; } else if (pathNode.isAttackable && pathNode.isOccupied && gridCell.GetOccupiedBy().GetStatistics().team != unit.GetStatistics().team) { ChangeCursorTo(attackCursor); break; } else { ResetCursor(); break; } case UnitPhase.AbilityActivated: if (pathNode.isAttackable) { if (unit.unitData.unitAbility.abilityName == "Whirlwind" && pathNode.isOccupied && gridCell.GetOccupiedBy().GetStatistics().team != unit.GetStatistics().team) { ChangeCursorTo(whirlwindSkillCursor); } else if (unit.unitData.unitAbility.abilityName == "Throw" && pathNode.isOccupied && gridCell.GetOccupiedBy().GetStatistics().team != unit.GetStatistics().team) { ChangeCursorTo(throwSkillCursor); } else if (unit.unitData.unitAbility.abilityName == "Heal" && pathNode.isOccupied && gridCell.GetOccupiedBy().GetStatistics().team == unit.GetStatistics().team) { ChangeCursorTo(healSkillCursor); } else { ResetCursor(); } break; } else { ResetCursor(); break; } case UnitPhase.AfterMovement: if (pathNode.isAttackable && pathNode.isOccupied && gridCell.GetOccupiedBy().GetStatistics().team != unit.GetStatistics().team) { ChangeCursorTo(attackCursor); break; } else { ResetCursor(); break; } break; case UnitPhase.AfterAttack: if (pathNode.isMovable) { ChangeCursorTo(movementCursor); break; } else { ResetCursor(); break; } case UnitPhase.AfterDash: break; case UnitPhase.OnCooldown: break; default: ResetCursor(); break; } } else { ResetCursor(); } }
private void SetUnitPhase(UnitPhase unitPhase) { _unitPhase = unitPhase; }
public void ToggleAbility() { _phaseBeforeAbility = _unitPhase; EndAction(ActionType.ActiveAbility); }