Drafted Vision blocking functionality and respective MapRef->HelperFunctions

This commit is contained in:
2022-06-18 01:17:26 +02:00
parent 18af6a56be
commit db89c0b8e6
4 changed files with 63 additions and 13 deletions
+24 -9
View File
@@ -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;
}