#include "ScriptedPowerupSpawner.h" #include "RenderComponent.h" #include "GameMessages.h" #include "EntityManager.h" void ScriptedPowerupSpawner::OnTemplateStartup(Entity *self) { self->SetVar(u"currentCycle", 1); self->AddTimer("timeToSpawn", self->GetVar(u"delayToFirstCycle")); } void ScriptedPowerupSpawner::OnTimerDone(Entity *self, std::string message) { if (message == "die") { self->Smash(); } else if (message == "timeToSpawn") { const auto itemLOT = self->GetVar(u"lootLOT"); // Spawn the required number of powerups auto* owner = EntityManager::Instance()->GetEntity(self->GetSpawnerID()); if (owner != nullptr) { auto* renderComponent = self->GetComponent(); for (auto i = 0; i < self->GetVar(u"numberOfPowerups"); i++) { if (renderComponent != nullptr) { renderComponent->PlayEffect(0, u"cast", "N_cast"); } Loot::DropItem(owner, self, itemLOT, 0, 1, true, true); } // Increment the current cycle if (self->GetVar(u"currentCycle") < self->GetVar(u"numCycles")) { self->AddTimer("timeToSpawn", self->GetVar(u"secPerCycle")); self->SetVar(u"currentCycle", self->GetVar(u"currentCycle") + 1); } // Kill if this was the last cycle if (self->GetVar(u"currentCycle") >= self->GetVar(u"numCycles")) { self->AddTimer("die", self->GetVar(u"deathDelay")); } } } }