#include "PetFromObjectServer.h"
#include "PetComponent.h"

void PetFromObjectServer::OnStartup(Entity *self) {
    self->SetNetworkVar(u"pettamer", std::to_string(self->GetVar<LWOOBJID>(u"tamer")));
    self->AddTimer("killSelf", 45.0f);
}

void PetFromObjectServer::OnTimerDone(Entity *self, std::string timerName) {
    if (timerName == "killSelf") {
        const auto* petComponent = self->GetComponent<PetComponent>();
        if (petComponent == nullptr || petComponent->GetOwner() != nullptr)
            return;
        self->Smash(self->GetObjectID(), SILENT);
    }
}

void PetFromObjectServer::OnNotifyPetTamingMinigame(Entity *self, Entity *tamer, eNotifyType type) {
    switch (type) {
        case NOTIFY_TYPE_BEGIN:
            self->CancelAllTimers();
            break;
        case NOTIFY_TYPE_QUIT:
        case NOTIFY_TYPE_FAILED:
            self->Smash(self->GetObjectID(), SILENT);
            break;
        case NOTIFY_TYPE_SUCCESS:
            // TODO: Remove from groups?
            GameMessages::SendNotifyClientObject(self->GetObjectID(), u"UpdateSuccessPicking", 0,
                                                 0, tamer->GetObjectID(), "", UNASSIGNED_SYSTEM_ADDRESS);
        default:
            break;
    }
}