You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
38 lines
1.1 KiB
38 lines
1.1 KiB
#include "EventListener.h"
|
|
#include "ArtifactTracker.h"
|
|
|
|
|
|
auto EventListener::GetSingleton() -> EventListener*
|
|
{
|
|
static EventListener singleton{};
|
|
return std::addressof(singleton);
|
|
}
|
|
|
|
void EventListener::Install()
|
|
{
|
|
const auto eventSource = RE::ScriptEventSourceHolder::GetSingleton();
|
|
eventSource->AddEventSink<RE::TESContainerChangedEvent>(EventListener::GetSingleton());
|
|
eventSource->AddEventSink<RE::TESActorLocationChangeEvent>(EventListener::GetSingleton());
|
|
}
|
|
|
|
auto EventListener::ProcessEvent(
|
|
const RE::TESActorLocationChangeEvent* a_event,
|
|
RE::BSTEventSource<RE::TESActorLocationChangeEvent>* a_eventSource)
|
|
-> RE::BSEventNotifyControl
|
|
{
|
|
if (a_event->actor && a_event->actor->IsPlayerRef()) {
|
|
ArtifactTracker::SetHomeLocation(a_event->newLoc);
|
|
}
|
|
|
|
return RE::BSEventNotifyControl::kContinue;
|
|
}
|
|
|
|
auto EventListener::ProcessEvent(
|
|
const RE::TESContainerChangedEvent* a_event,
|
|
RE::BSTEventSource<RE::TESContainerChangedEvent>* a_eventSource)
|
|
-> RE::BSEventNotifyControl
|
|
{
|
|
ArtifactTracker::OnContainerChanged(a_event);
|
|
|
|
return RE::BSEventNotifyControl::kContinue;
|
|
} |