#include "WanderingVendor.h" #include "MovementAIComponent.h" #include "ProximityMonitorComponent.h" #include void WanderingVendor::OnStartup(Entity* self) { auto movementAIComponent = self->GetComponent(); if (!movementAIComponent) return; self->SetProximityRadius(10, "playermonitor"); } void WanderingVendor::OnProximityUpdate(Entity* self, Entity* entering, std::string name, std::string status) { if (status == "ENTER" && entering->IsPlayer()) { auto movementAIComponent = self->GetComponent(); if (!movementAIComponent) return; movementAIComponent->Pause(); self->CancelTimer("startWalking"); } else if (status == "LEAVE") { auto* proximityMonitorComponent = self->GetComponent(); if (!proximityMonitorComponent) self->AddComponent(); const auto proxObjs = proximityMonitorComponent->GetProximityObjects("playermonitor"); bool foundPlayer = false; for (const auto id : proxObjs | std::views::keys) { auto* entity = Game::entityManager->GetEntity(id); if (entity && entity->IsPlayer()) { foundPlayer = true; break; } } if (!foundPlayer) self->AddTimer("startWalking", 1.5); } } void WanderingVendor::OnTimerDone(Entity* self, std::string timerName) { if (timerName == "startWalking") { auto movementAIComponent = self->GetComponent(); if (!movementAIComponent) return; movementAIComponent->Resume(); } }