Fixed vision blocking; MapObject::Occupy() now blueprint implementable

This commit is contained in:
2022-06-20 15:45:30 +02:00
parent 068beeacfd
commit 276f8e2b50
7 changed files with 25 additions and 24 deletions
+9 -6
View File
@@ -55,15 +55,14 @@ void AAdventurePlayerController::LeftClick()
else { return; }
}
TSet<AHexTile*> AAdventurePlayerController::Vision(int32 Radius)
TArray<AHexTile*> AAdventurePlayerController::Vision(int32 Radius)
{
TSet<AHexTile*> InRange = MapRef->BreadthFirstSearch(CurrentHex, Radius);
TSet<AHexTile*> Results;
TArray<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;
@@ -73,9 +72,11 @@ TSet<AHexTile*> AAdventurePlayerController::Vision(int32 Radius)
AHexTile* SampleHex = MapRef->Grid[MapRef->GridIndex(Sample.Q, Sample.R)];
Results.Add(SampleHex);
ExploredHexes.Add(Hex);
if (!SampleHex->bFree || ExploredHexes.Contains(SampleHex))
if (!ExploredHexes.Contains(SampleHex))
{ ExploredHexes.Add(Hex); }
if (!SampleHex->bFree)
{ break; }
}
}
@@ -131,13 +132,15 @@ void AAdventurePlayerController::FitOnGrid(AMapObject* MapObject)
void AAdventurePlayerController::PlaceObject(TSubclassOf<AMapObject> MapObjClass, AHexTile* HoveredTile)
{
AMapObject* SpawnedObj = World->SpawnActor<AMapObject>(MapObjClass, FTransform(HoveredTile->GetActorTransform().GetLocation()));
SpawnedObj->MapRef = MapRef;
SpawnedObj->Origin = HoveredTile;
SpawnedObj->bPlaced = true;
HoveredTile->bFree = false;
HoveredTile->MapObject = SpawnedObj;
SpawnedObj->Occupy();
MapRef->MapObjects.Add(HoveredTile, SpawnedObj);
MapRef->IncID++;
SpawnedObj->ID = MapRef->IncID;
MapRef->MapObjectsByID.Add(MapRef->IncID, SpawnedObj);
SpawnedObj->Occupy();
}