#include "MonCoreNookDoors.h"
#include "GameMessages.h"
#include "EntityManager.h"
#include "dZoneManager.h"

void MonCoreNookDoors::OnStartup(Entity* self) 
{
    SpawnDoor(self);
}

void MonCoreNookDoors::SpawnDoor(Entity* self) 
{
    const auto doorNum = self->GetVarAsString(u"number");

    if (doorNum.empty())
    {
        return;
    }

    const auto spawners = dZoneManager::Instance()->GetSpawnersByName("MonCoreNookDoor0" + doorNum);

    if (spawners.empty())
    {
        return;
    }

    auto* spawner = spawners[0];

    spawner->Reset();
    spawner->Activate();
}

void MonCoreNookDoors::OnFireEventServerSide(Entity *self, Entity *sender, std::string args, int32_t param1, int32_t param2, int32_t param3) 
{
    if (args == "DoorSmashed")
    {
        self->AddTimer("RespawnDoor", 30);
    }
}

void MonCoreNookDoors::OnTimerDone(Entity* self, std::string timerName) 
{
    if (timerName == "RespawnDoor")
    {
        SpawnDoor(self);
    }
}