|
|
|
@ -8,9 +8,13 @@ using namespace SKSE::log; |
|
|
|
|
|
|
|
|
|
namespace ArtifactTracker |
|
|
|
|
{ |
|
|
|
|
bool g_bLoaded; |
|
|
|
|
bool g_bHomeContainer; |
|
|
|
|
bool g_bBookShelf; |
|
|
|
|
bool g_bLoaded = false; |
|
|
|
|
bool g_bHomeContainer = false; |
|
|
|
|
bool g_bBookShelf = false; |
|
|
|
|
bool g_bTakeAll = false; |
|
|
|
|
bool g_bNotifyNewArtifact = false; |
|
|
|
|
std::uint32_t g_bTakeAllCount = 0; |
|
|
|
|
std::int32_t g_iFollowerIndex = 0; |
|
|
|
|
RE::TESBoundObject* g_cellContainer; |
|
|
|
|
RE::BGSListForm* g_listNew; |
|
|
|
|
RE::BGSListForm* g_listStored; |
|
|
|
@ -22,7 +26,6 @@ namespace ArtifactTracker |
|
|
|
|
std::unordered_map<RE::FormID, RE::TESObjectREFR*> g_persistentMap; |
|
|
|
|
RE::TESObjectREFR* g_cellStorage; |
|
|
|
|
const SKSE::LoadInterface* g_loadInterface; |
|
|
|
|
std::int32_t g_iFollowerIndex; |
|
|
|
|
|
|
|
|
|
bool Init(bool bKID) |
|
|
|
|
{ |
|
|
|
@ -61,9 +64,12 @@ namespace ArtifactTracker |
|
|
|
|
|
|
|
|
|
std::map<std::string, bool> settings{ |
|
|
|
|
{ "DumpItemList", false }, |
|
|
|
|
{ "NewArtifactNotifications", true }, |
|
|
|
|
}; |
|
|
|
|
LoadINI(&settings, "Data/SKSE/Plugins/ArtifactTracker.ini"); |
|
|
|
|
|
|
|
|
|
g_bNotifyNewArtifact = settings.at("NewArtifactNotifications"); |
|
|
|
|
|
|
|
|
|
// Preloading item lists
|
|
|
|
|
|
|
|
|
|
g_artifactFormTypes.insert(RE::FormType::Weapon); |
|
|
|
@ -279,7 +285,7 @@ namespace ArtifactTracker |
|
|
|
|
if (cellStorage) { |
|
|
|
|
g_bHomeContainer = false; |
|
|
|
|
g_cellStorage = cellStorage; |
|
|
|
|
RE::UI::GetSingleton()->AddEventSink<RE::MenuOpenCloseEvent>(EventListener::GetSingleton()); |
|
|
|
|
//RE::UI::GetSingleton()->AddEventSink<RE::MenuOpenCloseEvent>(EventListener::GetSingleton());
|
|
|
|
|
RE::ScriptEventSourceHolder::GetSingleton()->AddEventSink<RE::TESActivateEvent>(EventListener::GetSingleton()); |
|
|
|
|
#ifdef _DEBUG |
|
|
|
|
log::info("Home mode ON"); |
|
|
|
@ -288,7 +294,7 @@ namespace ArtifactTracker |
|
|
|
|
} else if (g_cellStorage) { |
|
|
|
|
g_bHomeContainer = false; |
|
|
|
|
g_cellStorage = nullptr; |
|
|
|
|
RE::UI::GetSingleton()->RemoveEventSink<RE::MenuOpenCloseEvent>(EventListener::GetSingleton()); |
|
|
|
|
//RE::UI::GetSingleton()->RemoveEventSink<RE::MenuOpenCloseEvent>(EventListener::GetSingleton());
|
|
|
|
|
RE::ScriptEventSourceHolder::GetSingleton()->RemoveEventSink<RE::TESActivateEvent>(EventListener::GetSingleton()); |
|
|
|
|
#ifdef _DEBUG |
|
|
|
|
log::info("Home mode OFF"); |
|
|
|
@ -521,6 +527,14 @@ namespace ArtifactTracker |
|
|
|
|
if (!g_listStored->HasForm(form) && !g_listFound->HasForm(form)) { // it's a new item, move it to found
|
|
|
|
|
ListRemoveItem(g_listNew, form); |
|
|
|
|
g_listFound->AddForm(form); |
|
|
|
|
|
|
|
|
|
if (g_bNotifyNewArtifact) { |
|
|
|
|
if (g_bTakeAll) { |
|
|
|
|
g_bTakeAllCount++; |
|
|
|
|
} else { |
|
|
|
|
RE::DebugNotification(fmt::format("New artifact acquired: {}", form->GetName()).c_str()); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
} else if (g_cellStorage && g_cellStorage->formID == a_event->newContainer) { |
|
|
|
|