#pragma once #include "HeroMenuPatch.h" class TweenMenuPatch final : public RE::TweenMenu { public: static void Install(); private: static void OpenMenu(RE::IMenu* tweenMenu, std::int32_t index) { using func_t = decltype(&OpenMenu); // Checked: 1.5.97, 1.6.640, 1.6.659, 1.6.1130 REL::Relocation func{ REL::RelocationID(51845, 52718) }; return func(tweenMenu, index); } void AcceptEx(CallbackProcessor* a_cbReg) { _AcceptFn(this, a_cbReg); fxDelegate->callbacks.Remove("OpenHighlightedMenu"); a_cbReg->Process("OpenHighlightedMenu", [](const RE::FxDelegateArgs& args) { auto index = args[0].GetSInt(); if (index <= 1) { HeroMenuPatch::OpenHeroMenu(); } else if (index <= 4) { OpenMenu(RE::UI::GetSingleton()->GetMenu(MENU_NAME).get(), index); } }); } inline static REL::Relocation _AcceptFn; };