CommonLibSSE NG
Loading...
Searching...
No Matches
DialogueMenu.h
Go to the documentation of this file.
1#pragma once
2
3#include "RE/B/BSTArray.h"
4#include "RE/B/BSTEvent.h"
5#include "RE/I/IMenu.h"
6
7namespace RE
8{
9 class MenuOpenCloseEvent;
10
11 // menuDepth = 3
12 // flags = kUpdateUsesCursor | kDontHideCursorWhenTopmost
13 // context = kMenuMode
15#ifndef SKYRIM_CROSS_VR
16 public IMenu, // 00
17 public BSTEventSink<MenuOpenCloseEvent> // 30
18#else
19 public IMenu // 00
20#endif
21 {
22 public:
23 inline static constexpr auto RTTI = RTTI_DialogueMenu;
24 constexpr static std::string_view MENU_NAME = "Dialogue Menu";
25
26 struct Data
27 {
28 void* unk00; // 00
29 std::uint64_t unk08; // 08
30 };
31 static_assert(sizeof(Data) == 0x10);
32
34 {
35#define RUNTIME_DATA_CONTENT BSTArray<Data> unk38; /* 00 */
37 };
38
39 ~DialogueMenu() override; // 00
40
41 // override (IMenu)
42 void Accept(CallbackProcessor* a_processor) override; // 01
43 UI_MESSAGE_RESULTS ProcessMessage(UIMessage& a_message) override; // 04
44
45#ifndef SKYRIM_CROSS_VR
46 // override (BSTEventSink<MenuOpenCloseEvent>)
48#endif
49
51 {
52 return &REL::RelocateMember<BSTEventSink<MenuOpenCloseEvent>>(this, 0x30, 0x40);
53 }
54
55 [[nodiscard]] const BSTEventSink<MenuOpenCloseEvent>* AsMenuOpenCloseEventSink() const noexcept
56 {
57 return const_cast<DialogueMenu*>(this)->AsMenuOpenCloseEventSink();
58 }
59
60 [[nodiscard]] inline RUNTIME_DATA& GetRuntimeData() noexcept
61 {
62 return REL::RelocateMember<RUNTIME_DATA>(this, 0x38, 0x48);
63 }
64
65 [[nodiscard]] inline const RUNTIME_DATA& GetRuntimeData() const noexcept
66 {
67 return REL::RelocateMember<RUNTIME_DATA>(this, 0x38, 0x48);
68 }
69
70 // members
71#ifndef SKYRIM_CROSS_VR
72 RUNTIME_DATA_CONTENT // 38, 48
73#endif
74 };
75#ifndef ENABLE_SKYRIM_VR
76 static_assert(sizeof(DialogueMenu) == 0x50);
77#elif !defined(ENABLE_SKYRIM_AE) && !defined(ENABLE_SKYRIM_SE)
78 static_assert(sizeof(DialogueMenu) == 0x60);
79#endif
80}
81#undef RUNTIME_DATA_CONTENT
#define RUNTIME_DATA_CONTENT
Definition Actor.h:633
Definition BSTEvent.h:143
Definition BSTEvent.h:19
Definition DialogueMenu.h:21
~DialogueMenu() override
const RUNTIME_DATA & GetRuntimeData() const noexcept
Definition DialogueMenu.h:65
RUNTIME_DATA & GetRuntimeData() noexcept
Definition DialogueMenu.h:60
BSTEventSink< MenuOpenCloseEvent > * AsMenuOpenCloseEventSink() noexcept
Definition DialogueMenu.h:50
UI_MESSAGE_RESULTS ProcessMessage(UIMessage &a_message) override
const BSTEventSink< MenuOpenCloseEvent > * AsMenuOpenCloseEventSink() const noexcept
Definition DialogueMenu.h:55
static constexpr auto RTTI
Definition DialogueMenu.h:23
BSEventNotifyControl ProcessEvent(const MenuOpenCloseEvent *a_event, BSTEventSource< MenuOpenCloseEvent > *a_eventSource) override
void Accept(CallbackProcessor *a_processor) override
static constexpr std::string_view MENU_NAME
Definition DialogueMenu.h:24
Definition FxDelegateHandler.h:19
Definition IMenu.h:55
Definition MenuOpenCloseEvent.h:8
Definition UIMessage.h:28
Definition AbsorbEffect.h:6
UI_MESSAGE_RESULTS
Definition IMenu.h:48
constexpr REL::VariantID RTTI_DialogueMenu(688829, 396681, 0x1f46728)
BSEventNotifyControl
Definition BSTEvent.h:12
Definition DialogueMenu.h:27
std::uint64_t unk08
Definition DialogueMenu.h:29
void * unk00
Definition DialogueMenu.h:28
Definition DialogueMenu.h:34