public bool IsValidAttackTarget(HexCell attackingUnit, HexCell target, int playerId) { if (!(attackingUnit is UnitCell unit)) { return(false); } if (attackingUnit == null || attackingUnit.PlayerId != playerId) { return(false); } if (target == null || target.PlayerId == playerId) { return(false); } return(unit.GetStats().Range >= HexCoordinates.Distance(attackingUnit.Coordinates, target.Coordinates)); }
public List <Vector3> FindPath(HexCoordinates origin, HexCoordinates target, int maxDistance) { if (cells.IsPieceInCell(target)) { return(null); } var distance = HexCoordinates.Distance(origin, target); var pathableCells = GetCellsWithinDistance(origin, distance); foreach (var cell in pathableCells) { if (cell.X == target.X && cell.Z == target.Z) { return(ConstructPath(cell, maxDistance)); } } return(null); }