CommonLibSSE NG
MenuTopicManager.h
Go to the documentation of this file.
1 #pragma once
2 
3 #include "RE/B/BSFixedString.h"
4 #include "RE/B/BSPointerHandle.h"
5 #include "RE/B/BSString.h"
6 #include "RE/B/BSTEvent.h"
7 #include "RE/B/BSTList.h"
8 #include "RE/B/BSTSingleton.h"
9 
10 #include "REX/W32/BASE.h"
11 
12 namespace RE
13 {
14  class BGSDialogueBranch;
15  class DialogueResponse;
16  class MenuOpenCloseEvent;
17  class TESQuest;
18  class TESTopic;
19  class TESTopicInfo;
20  struct PositionPlayerEvent;
21 
23  public BSTSingletonSDM<MenuTopicManager>, // 0x10
24  public BSTEventSink<MenuOpenCloseEvent>, // 0x00
25  public BSTEventSink<PositionPlayerEvent> // 0x08
26  {
27  public:
28  inline static constexpr auto RTTI = RTTI_MenuTopicManager;
29 
30  struct Dialogue
31  {
32  public:
33  // members
35  bool unk10; // 10
36  bool unk11; // 11
37  bool unk12; // 12 - data.topic->formID == 0xFD || data.topic->formID == 0x118
38  std::uint8_t unk13; // 13
39  std::uint32_t unk14; // 14
45  std::uint8_t unk48; // 48
46  bool neverSaid; // 49
47  std::uint16_t unk4A; // 4A
48  std::uint32_t unk4C; // 4C
49  TESTopic* unk50; // 50
50  };
51  static_assert(sizeof(Dialogue) == 0x58);
52 
53  ~MenuTopicManager() override; // 00
54 
55  // override (BSTEventSink<MenuOpenCloseEvent>)
57 
58  // override (BSTEventSink<PositionPlayerEvent>)
60 
62  {
63  REL::Relocation<MenuTopicManager**> singleton{ RELOCATION_ID(514959, 401099) };
64  return *singleton;
65  }
66 
67  // members
70  std::uint64_t unk28; // 28
75  ObjectRefHandle lastSpeaker; // 6C - used if the dialogue menu was closed but the NPC is still talking
76  TESTopicInfo* currentTopicInfo; // 70 - only valid when the NPC is talking
77  TESTopicInfo* lastTopicInfo; // 78 - used if the dialogue menu was closed but the NPC is still talking
80  bool isGreetingPlayer; // B0
81  bool unkB1; // B1
82  bool isSayingGoodbye; // B2
83  bool unkB3; // B3
84  bool unkB4; // B4
85  bool unkB5; // B5
86  bool unkB6; // B6
87  bool unkB7; // B7
88  bool unkB8; // B8
89  bool unkB9; // B9
90  bool unkBA; // BA
91  bool unkBB; // BB
92  std::uint16_t padBC; // BC
94  };
95  static_assert(sizeof(MenuTopicManager) == 0xD8);
96 }
#define RELOCATION_ID(a_se, a_ae)
Definition: PCH.h:724
Definition: Relocation.h:204
Definition: BSTList.h:10
Definition: BSTArray.h:377
Definition: BSTEvent.h:143
Definition: MenuOpenCloseEvent.h:8
Definition: MenuTopicManager.h:26
bool unkB5
Definition: MenuTopicManager.h:85
bool unkB6
Definition: MenuTopicManager.h:86
TESTopicInfo * rootTopicInfo
Definition: MenuTopicManager.h:71
BSTArray< BGSDialogueBranch * > topLevelBranches
Definition: MenuTopicManager.h:79
BSEventNotifyControl ProcessEvent(const MenuOpenCloseEvent *a_event, BSTEventSource< MenuOpenCloseEvent > *a_eventSource) override
bool unkB8
Definition: MenuTopicManager.h:88
std::uint16_t padBC
Definition: MenuTopicManager.h:92
BSTArray< TESTopic * > unkC0
Definition: MenuTopicManager.h:93
BSEventNotifyControl ProcessEvent(const PositionPlayerEvent *a_event, BSTEventSource< PositionPlayerEvent > *a_eventSource) override
REX::W32::CRITICAL_SECTION criticalSection
Definition: MenuTopicManager.h:73
Dialogue * lastSelectedDialogue
Definition: MenuTopicManager.h:72
bool unkB3
Definition: MenuTopicManager.h:83
bool unkBB
Definition: MenuTopicManager.h:91
BSTArray< BGSDialogueBranch * > blockingBranches
Definition: MenuTopicManager.h:78
BSSimpleList< Dialogue * >::Node * selectedResponseNode
Definition: MenuTopicManager.h:68
std::uint64_t unk28
Definition: MenuTopicManager.h:70
bool isSayingGoodbye
Definition: MenuTopicManager.h:82
bool unkBA
Definition: MenuTopicManager.h:90
static MenuTopicManager * GetSingleton()
Definition: MenuTopicManager.h:61
static constexpr auto RTTI
Definition: MenuTopicManager.h:28
bool unkB4
Definition: MenuTopicManager.h:84
TESTopicInfo * currentTopicInfo
Definition: MenuTopicManager.h:76
ObjectRefHandle lastSpeaker
Definition: MenuTopicManager.h:75
bool isGreetingPlayer
Definition: MenuTopicManager.h:80
BSSimpleList< Dialogue * > * dialogueList
Definition: MenuTopicManager.h:69
ObjectRefHandle speaker
Definition: MenuTopicManager.h:74
~MenuTopicManager() override
bool unkB9
Definition: MenuTopicManager.h:89
bool unkB1
Definition: MenuTopicManager.h:81
TESTopicInfo * lastTopicInfo
Definition: MenuTopicManager.h:77
bool unkB7
Definition: MenuTopicManager.h:87
Definition: TESQuest.h:189
Definition: TESTopicInfo.h:42
Definition: TESTopic.h:135
Definition: AbsorbEffect.h:6
constexpr REL::VariantID RTTI_MenuTopicManager(686590, 394426, 0x1f01a10)
BSEventNotifyControl
Definition: BSTEvent.h:12
Definition: BASE.h:137
Definition: BSTList.h:18
Definition: BSTSingleton.h:50
Definition: MenuTopicManager.h:31
BSSimpleList< DialogueResponse * >::Node * currentResponse
Definition: MenuTopicManager.h:44
TESTopic * unk50
Definition: MenuTopicManager.h:49
std::uint8_t unk13
Definition: MenuTopicManager.h:38
bool unk12
Definition: MenuTopicManager.h:37
BSString topicText
Definition: MenuTopicManager.h:34
bool neverSaid
Definition: MenuTopicManager.h:46
TESTopic * parentTopic
Definition: MenuTopicManager.h:43
bool unk11
Definition: MenuTopicManager.h:36
std::uint32_t unk4C
Definition: MenuTopicManager.h:48
std::uint32_t unk14
Definition: MenuTopicManager.h:39
bool unk10
Definition: MenuTopicManager.h:35
std::uint16_t unk4A
Definition: MenuTopicManager.h:47
BSSimpleList< DialogueResponse * > responses
Definition: MenuTopicManager.h:40
TESTopicInfo * parentTopicInfo
Definition: MenuTopicManager.h:42
TESQuest * parentQuest
Definition: MenuTopicManager.h:41
std::uint8_t unk48
Definition: MenuTopicManager.h:45
Definition: PositionPlayerEvent.h:7