#include "EventListener.h" #include "Util.h" #include auto EventListener::GetSingleton() -> EventListener* { static EventListener singleton{}; return std::addressof(singleton); } void EventListener::Install() { RE::ScriptEventSourceHolder::GetSingleton()->AddEventSink(EventListener::GetSingleton()); RE::UI::GetSingleton()->AddEventSink(EventListener::GetSingleton()); } auto EventListener::ProcessEvent( const SKSE::ModCallbackEvent* a_event, RE::BSTEventSource* a_eventSource) -> RE::BSEventNotifyControl { if (a_event->eventName == "Enderal_OpenHelpURL") { ShowWindow(GetForegroundWindow(), SW_MINIMIZE); ShellExecuteA(NULL, "open", "https://go.eddoursul.win/enderal-se-support", NULL, NULL, SW_SHOWNORMAL); //} else if (a_event->eventName == "Enderal_OpenQuestJournal") { // RE::UIMessageQueue::GetSingleton()->AddMessage(RE::InterfaceStrings::GetSingleton()->journalMenu, RE::UI_MESSAGE_TYPE::kShow, 0i64); } return RE::BSEventNotifyControl::kContinue; } auto EventListener::ProcessEvent( const RE::TESContainerChangedEvent* a_event, RE::BSTEventSource* a_eventSource) -> RE::BSEventNotifyControl { // return RE::BSEventNotifyControl::kContinue; } auto EventListener::ProcessEvent( const RE::MenuOpenCloseEvent* a_event, RE::BSTEventSource* a_eventSource) -> RE::BSEventNotifyControl { if (a_event->opening && a_event->menuName == RE::JournalMenu::MENU_NAME) { if (RE::UI::GetSingleton()->IsMenuOpen(RE::DialogueMenu::MENU_NAME)) { const auto movie = RE::UI::GetSingleton()->GetMovieView(RE::JournalMenu::MENU_NAME); if (movie) { std::array args; args[0].SetNumber(2); args[1].SetBoolean(true); movie->Invoke("_root.QuestJournalFader.Menu_mc.RestoreSavedSettings", nullptr, args.data(), static_cast(args.size())); } } } if (a_event->opening && a_event->menuName == RE::DialogueMenu::MENU_NAME) { if (auto ui = RE::UI::GetSingleton(); ui) { if (auto menu = ui->GetMenu(RE::DialogueMenu::MENU_NAME); menu) { const RE::GFxValue boolVal = false; menu->uiMovie->SetVariable("_root.DialogueMenu_mc.bFadedIn", boolVal, RE::GFxMovie::SetVarType::kSticky); } } } return RE::BSEventNotifyControl::kContinue; } auto EventListener::ProcessEvent( const RE::TESActivateEvent* a_event, RE::BSTEventSource* a_eventSource) -> RE::BSEventNotifyControl { // return RE::BSEventNotifyControl::kContinue; }