CommonLibSSE NG
Loading...
Searching...
No Matches
CreationClubMenu.h
Go to the documentation of this file.
1#pragma once
2
3#include "RE/B/BSTEvent.h"
5#include "RE/I/IMenu.h"
6#include "RE/I/ImageData.h"
8
9namespace RE
10{
11 class MenuOpenCloseEvent;
12
13 // menuDepth = 0
14 // flags = kUsesMenuContext | kDisablePauseMenu | kUpdateUsesCursor | kInventoryItemMenu | kDontHideCursorWhenTopmost
15 // context = kItemMenu
17#ifndef SKYRIM_CROSS_VR
18 public IMenu, // 00
19 public MenuEventHandler, // 30
20 public GFxFunctionHandler, // 40
21 public BSTEventSink<MenuOpenCloseEvent> // 50
22#else
23 public IMenu // 00
24#endif
25 {
26 public:
27 inline static constexpr auto RTTI = RTTI_CreationClubMenu;
28 constexpr static std::string_view MENU_NAME = "Creation Club Menu";
29
31 {
32#define RUNTIME_DATA_CONTENT \
33 ImageData background; /* 00 */ \
34 ImageData details; /* 18 */
35
37 };
38 static_assert(sizeof(RUNTIME_DATA) == 0x30);
39
40 ~CreationClubMenu() override; // 00
41
42 // override (IMenu)
43 void AdvanceMovie(float a_interval, std::uint32_t a_currentTime) override; // 05
44
45#ifndef SKYRIM_CROSS_VR
46 // override (MenuEventHandler)
47 bool CanProcess(InputEvent* a_event) override; // 01
48 bool ProcessThumbstick(ThumbstickEvent* a_event) override; // 03
49
50 // override (GFxFunctionHandler)
51 void Call(Params& a_params) override; // 01
52
53 // override (BSTEventSink<MenuOpenCloseEvent>)
55#endif
56
57 [[nodiscard]] MenuEventHandler* AsMenuEventHandler() noexcept
58 {
59 return &REL::RelocateMember<MenuEventHandler>(this, 0x30, 0x40);
60 }
61
62 [[nodiscard]] const MenuEventHandler* AsMenuEventHandler() const noexcept
63 {
64 return const_cast<CreationClubMenu*>(this)->AsMenuEventHandler();
65 }
66
67 [[nodiscard]] GFxFunctionHandler* AsGFxFunctionHandler() noexcept
68 {
69 return &REL::RelocateMember<GFxFunctionHandler>(this, 0x40, 0x50);
70 }
71
72 [[nodiscard]] const GFxFunctionHandler* AsGFxFunctionHandler() const noexcept
73 {
74 return const_cast<CreationClubMenu*>(this)->AsGFxFunctionHandler();
75 }
76
78 {
79 return &REL::RelocateMember<BSTEventSink<MenuOpenCloseEvent>>(this, 0x50, 0x60);
80 }
81
82 [[nodiscard]] const BSTEventSink<MenuOpenCloseEvent>* AsMenuOpenCloseEventSink() const noexcept
83 {
84 return const_cast<CreationClubMenu*>(this)->AsMenuOpenCloseEventSink();
85 }
86
87 [[nodiscard]] inline RUNTIME_DATA& GetRuntimeData() noexcept
88 {
89 return REL::RelocateMember<RUNTIME_DATA>(this, 0x58, 0x68);
90 }
91
92 [[nodiscard]] inline const RUNTIME_DATA& GetRuntimeData() const noexcept
93 {
94 return REL::RelocateMember<RUNTIME_DATA>(this, 0x58, 0x68);
95 }
96
97 // members
98#ifndef SKYRIM_CROSS_VR
99 RUNTIME_DATA_CONTENT // 58, 68
100#endif
101 };
102#ifndef ENABLE_SKYRIM_VR
103 static_assert(sizeof(CreationClubMenu) == 0x88);
104#elif !defined(ENABLE_SKYRIM_AE) && !defined(ENABLE_SKYRIM_SE)
105 static_assert(sizeof(CreationClubMenu) == 0x98);
106#endif
107}
108#undef RUNTIME_DATA_CONTENT
#define RUNTIME_DATA_CONTENT
Definition Actor.h:633
Definition BSTEvent.h:143
Definition BSTEvent.h:19
Definition CreationClubMenu.h:25
BSEventNotifyControl ProcessEvent(const MenuOpenCloseEvent *a_event, BSTEventSource< MenuOpenCloseEvent > *a_eventSource) override
static constexpr auto RTTI
Definition CreationClubMenu.h:27
RUNTIME_DATA & GetRuntimeData() noexcept
Definition CreationClubMenu.h:87
GFxFunctionHandler * AsGFxFunctionHandler() noexcept
Definition CreationClubMenu.h:67
const BSTEventSink< MenuOpenCloseEvent > * AsMenuOpenCloseEventSink() const noexcept
Definition CreationClubMenu.h:82
bool ProcessThumbstick(ThumbstickEvent *a_event) override
bool CanProcess(InputEvent *a_event) override
~CreationClubMenu() override
const GFxFunctionHandler * AsGFxFunctionHandler() const noexcept
Definition CreationClubMenu.h:72
void Call(Params &a_params) override
static constexpr std::string_view MENU_NAME
Definition CreationClubMenu.h:28
const RUNTIME_DATA & GetRuntimeData() const noexcept
Definition CreationClubMenu.h:92
void AdvanceMovie(float a_interval, std::uint32_t a_currentTime) override
MenuEventHandler * AsMenuEventHandler() noexcept
Definition CreationClubMenu.h:57
BSTEventSink< MenuOpenCloseEvent > * AsMenuOpenCloseEventSink() noexcept
Definition CreationClubMenu.h:77
const MenuEventHandler * AsMenuEventHandler() const noexcept
Definition CreationClubMenu.h:62
Definition GFxFunctionHandler.h:12
Definition IMenu.h:55
Definition InputEvent.h:22
Definition MenuEventHandler.h:14
Definition MenuOpenCloseEvent.h:8
Definition ThumbstickEvent.h:8
Definition AbsorbEffect.h:6
constexpr REL::VariantID RTTI_CreationClubMenu(686415, 394235, 0x0)
BSEventNotifyControl
Definition BSTEvent.h:12
Definition CreationClubMenu.h:31
Definition GFxFunctionHandler.h:17