Drafted Vision blocking functionality and respective MapRef->HelperFunctions
This commit is contained in:
@@ -55,15 +55,30 @@ void AAdventurePlayerController::LeftClick()
|
||||
else { return; }
|
||||
}
|
||||
|
||||
TArray<AHexTile*> AAdventurePlayerController::Vision(int32 Radius)
|
||||
{
|
||||
TArray<AHexTile*> Results;
|
||||
TSet<AHexTile*> Visible;
|
||||
Visible = MapRef->BreadthFirstSearch(CurrentHex, Radius);
|
||||
for (auto& Hex : Visible) {
|
||||
if (ExploredHexes.Contains(Hex)) { continue; }
|
||||
Results.Add(Hex);
|
||||
ExploredHexes.Add(Hex);
|
||||
TSet<AHexTile*> AAdventurePlayerController::Vision(int32 Radius)
|
||||
{
|
||||
TSet<AHexTile*> InRange = MapRef->BreadthFirstSearch(CurrentHex, Radius);
|
||||
TSet<AHexTile*> Results;
|
||||
|
||||
for (auto& Hex : InRange) {
|
||||
if (Hex->Distance(CurrentHex) == Radius)
|
||||
{
|
||||
AHexTile* Target;
|
||||
for (int32 i = 1; i <= Radius; i++)
|
||||
{
|
||||
float t = 1.0f / Radius * i;
|
||||
FHexVector Sample;
|
||||
|
||||
Sample = MapRef->AxialRound(MapRef->Lerp(CurrentHex->Q, Hex->Q, t), MapRef->Lerp(CurrentHex->R, Hex->R, t));
|
||||
AHexTile* SampleHex = MapRef->Grid[MapRef->GridIndex(Sample.Q, Sample.R)];
|
||||
|
||||
Results.Add(SampleHex);
|
||||
ExploredHexes.Add(Hex);
|
||||
|
||||
if (!SampleHex->bFree || ExploredHexes.Contains(SampleHex))
|
||||
{ break; }
|
||||
}
|
||||
}
|
||||
}
|
||||
return Results;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user