CommonLibSSE NG
ModManagerMenu.h
Go to the documentation of this file.
1 #pragma once
2 
4 #include "RE/I/IMenu.h"
6 
7 namespace RE
8 {
9  // menuDepth = 9
10  // flags = kPausesGame | kUsesMenuContext | kModal | kDisablePauseMenu | kRequiresUpdate | kTopmostRenderedMenu | kUpdateUsesCursor
11  // context = kMenuMode
13 #ifndef SKYRIM_CROSS_VR
14  public IMenu, // 00
15  public MenuEventHandler, // 30
16  public GFxFunctionHandler // 40
17 #else
18  public IMenu // 00
19 #endif
20  {
21  public:
22  inline static constexpr auto RTTI = RTTI_ModManagerMenu;
23  constexpr static std::string_view MENU_NAME = "Mod Manager Menu";
24 
25  struct RUNTIME_DATA
26  {
27 #define RUNTIME_DATA_CONTENT \
28  std::uint8_t unk50; /* 50 */ \
29  std::uint8_t pad51; /* 51 */ \
30  std::uint16_t pad52; /* 52 */ \
31  std::uint32_t pad54; /* 54 */
32 
34  };
35  static_assert(sizeof(RUNTIME_DATA) == 0x8);
36 
37  ~ModManagerMenu() override; // 00
38 
39  // override (IMenu)
40  UI_MESSAGE_RESULTS ProcessMessage(UIMessage& a_message) override; // 04
41  void AdvanceMovie(float a_interval, std::uint32_t a_currentTime) override; // 05
42 
43 #ifndef SKYRIM_CROSS_VR
44  // override (MenuEventHandler)
45  bool CanProcess(InputEvent* a_event) override; // 01
46  bool ProcessThumbstick(ThumbstickEvent* a_event) override; // 03
47 
48  // override (GFxFunctionHandler)
49  void Call(Params& a_params) override; // 01
50 #endif
51 
52  [[nodiscard]] MenuEventHandler* AsMenuEventHandler() noexcept
53  {
54  return &REL::RelocateMember<MenuEventHandler>(this, 0x30, 0x40);
55  }
56 
57  [[nodiscard]] const MenuEventHandler* AsMenuEventHandler() const noexcept
58  {
59  return const_cast<ModManagerMenu*>(this)->AsMenuEventHandler();
60  }
61 
62  [[nodiscard]] GFxFunctionHandler* AsGFxFunctionHandler() noexcept
63  {
64  return &REL::RelocateMember<GFxFunctionHandler>(this, 0x40, 0x50);
65  }
66 
67  [[nodiscard]] const GFxFunctionHandler* AsGFxFunctionHandler() const noexcept
68  {
69  return const_cast<ModManagerMenu*>(this)->AsGFxFunctionHandler();
70  }
71 
72  [[nodiscard]] inline RUNTIME_DATA& GetRuntimeData() noexcept
73  {
74  return REL::RelocateMember<RUNTIME_DATA>(this, 0x50, 0x60);
75  }
76 
77  [[nodiscard]] inline const RUNTIME_DATA& GetRuntimeData() const noexcept
78  {
79  return REL::RelocateMember<RUNTIME_DATA>(this, 0x50, 0x60);
80  }
81 
82  // members
83 #ifndef SKYRIM_CROSS_VR
84  RUNTIME_DATA_CONTENT // 50, 60
85 #endif
86  };
87 #ifndef ENABLE_SKYRIM_VR
88  static_assert(sizeof(ModManagerMenu) == 0x58);
89 #elif !defined(ENABLE_SKYRIM_AE) && !defined(ENABLE_SKYRIM_SE)
90  static_assert(sizeof(ModManagerMenu) == 0x68);
91 #endif
92 }
93 #undef RUNTIME_DATA_CONTENT
#define RUNTIME_DATA_CONTENT
Definition: ModManagerMenu.h:27
Definition: GFxFunctionHandler.h:12
Definition: IMenu.h:55
Definition: InputEvent.h:25
Definition: MenuEventHandler.h:14
Definition: ModManagerMenu.h:20
GFxFunctionHandler * AsGFxFunctionHandler() noexcept
Definition: ModManagerMenu.h:62
MenuEventHandler * AsMenuEventHandler() noexcept
Definition: ModManagerMenu.h:52
UI_MESSAGE_RESULTS ProcessMessage(UIMessage &a_message) override
const MenuEventHandler * AsMenuEventHandler() const noexcept
Definition: ModManagerMenu.h:57
void Call(Params &a_params) override
~ModManagerMenu() override
void AdvanceMovie(float a_interval, std::uint32_t a_currentTime) override
bool CanProcess(InputEvent *a_event) override
const RUNTIME_DATA & GetRuntimeData() const noexcept
Definition: ModManagerMenu.h:77
const GFxFunctionHandler * AsGFxFunctionHandler() const noexcept
Definition: ModManagerMenu.h:67
bool ProcessThumbstick(ThumbstickEvent *a_event) override
static constexpr auto RTTI
Definition: ModManagerMenu.h:22
constexpr static std::string_view MENU_NAME
Definition: ModManagerMenu.h:23
RUNTIME_DATA & GetRuntimeData() noexcept
Definition: ModManagerMenu.h:72
Definition: ThumbstickEvent.h:8
Definition: UIMessage.h:28
Definition: AbsorbEffect.h:6
UI_MESSAGE_RESULTS
Definition: IMenu.h:48
constexpr REL::VariantID RTTI_ModManagerMenu(686444, 394276, 0x1efd868)
Definition: GFxFunctionHandler.h:17
Definition: ModManagerMenu.h:26