CommonLibVR
Loading...
Searching...
No Matches
BGSSaveLoadManager.h
Go to the documentation of this file.
1#pragma once
2
3#include "RE/B/BSAtomic.h"
5#include "RE/B/BSTArray.h"
6#include "RE/B/BSTEvent.h"
7#include "RE/B/BSTHashMap.h"
10#include "RE/B/BSThread.h"
12#include "RE/R/Request.h"
13
14namespace RE
15{
16 class BSSaveDataEvent;
17 class BSSystemEvent;
18 struct BGSSaveLoadManagerEvent;
19
21 {
22 public:
23 enum class SaveType
24 {
25 kAutosave = 0x0,
26 kSave = 0x1,
27 kQuicksave = 0x2,
28 kCustom = 0x3
29 };
30
32
33 // members
40 std::int32_t saveVersion; // 30
41 std::uint32_t saveNumber; // 34
42 std::uint32_t characterLevel; // 38
43 float currentExperience; // 3C
44 float requiredExperience; // 40
45 std::uint32_t screenshotWidth; // 44
46 std::uint32_t screenshotHeight; // 48
47 std::uint32_t unk4C; // 4C
50 std::int32_t unk60; // 60
51 bool loaded; // 64
52 bool unk65; // 65
53 bool unk66; // 66
54 std::uint8_t unk67; // 67
55 std::uint8_t unk68; // 68
56 bool modded; // 69
57 std::uint16_t pad6A; // 6A
58 std::uint32_t characterID; // 6C
60 std::uint32_t pad74; // 74
61 private:
63 };
64 static_assert(sizeof(BGSSaveLoadFileEntry) == 0x78);
65
67 public BSTEventSink<BSSaveDataEvent>, // 000
68 public BSTEventSink<RaceSexMenuEvent::NameChangedEvent>, // 008
69 public BSTEventSource<BGSSaveLoadManagerEvent>, // 018
70 public BSTEventSink<BSSystemEvent> // 010
71 {
72 public:
73 inline static constexpr auto RTTI = RTTI_BGSSaveLoadManager;
74 inline static constexpr auto VTABLE = VTABLE_BGSSaveLoadManager;
75
76 class Thread : public BSThread
77 {
78 public:
79 inline static constexpr auto RTTI = RTTI_BGSSaveLoadManager__Thread;
80 inline static constexpr auto VTABLE = VTABLE_BGSSaveLoadManager__Thread;
81
82 ~Thread() override; // 00
83
84 void Unk_01(void) override; // 01
85 void Unk_02(void) override; // 02
86
87 // members
88 bool isRunnning; // 50
89 bool isBusy; // 51
90 std::uint16_t pad52; // 52
91 std::uint32_t pad54; // 54
94 };
95 static_assert(sizeof(Thread) == 0xC0);
96
97 struct SaveEntry
98 {
99 std::uint32_t characterID; // 00
100 std::uint32_t isModded; // 04
101 std::uint32_t manualSaveCount; // 08
102 std::uint32_t autoSaveCount; // 0C
105 };
106 static_assert(sizeof(SaveEntry) == 0x48);
107
108 ~BGSSaveLoadManager() override; // 00
109
110 // override (BSTEventSink<BSSaveDataEvent>)
111 BSEventNotifyControl ProcessEvent(const BSSaveDataEvent* a_event, BSTEventSource<BSSaveDataEvent>* a_eventSource) override; // 01
112
113 // override (BSTEventSink<RaceSexMenuEvent::NameChangedEvent>)
115
116 // override (BSTEventSink<BSSystemEvent>)
117 BSEventNotifyControl ProcessEvent(const BSSystemEvent* a_event, BSTEventSource<BSSystemEvent>* a_eventSource) override; // 01
118
120
122 void Save(const char* a_fileName);
123 void Load(const char* a_fileName);
124 void Load(const char* a_fileName, bool a_checkForMods);
127
128 // members
130 std::uint64_t unk0A0; // 0A0
131 std::uint32_t unk0A8; // 0A8
132 std::uint32_t unk0AC; // 0AC
133 std::uint32_t unk0B0; // 0B0
134 std::uint32_t unk0B4; // 0B4
135 std::uint64_t unk0B8; // 0B8
136 std::uint64_t unk0C0; // 0C0
137 std::uint64_t unk0C8; // 0C8
138 std::uint32_t currentCharacterID; // 0D0
139 std::uint32_t currentCharacterModded; // 0D4
140 std::uint32_t displayCharacterID; // 0D8
141 std::uint32_t displayCharacterModded; // 0DC
142 std::uint32_t unk0E0; // 0E0
143 std::uint32_t unk0E4; // 0E4
145
147 std::uint8_t unk118; // 118
148 std::uint8_t pad119; // 119
149 std::uint16_t pad11A; // 11A
150 std::uint32_t saveCount; // 11C
151 std::uint8_t unk120; // 120
152 std::uint8_t pad121; // 121
153 std::uint16_t pad122; // 122
154 std::uint32_t pad124; // 124
155 std::uint64_t tickCount; // 128
156 std::uint8_t unk130; // 130
157 std::uint8_t pad131; // 131
158 std::uint16_t pad132; // 132
159 std::uint32_t pad134; // 134
160 const char lastFileFullName[0x104]; // 138
161 std::uint32_t pad23C; // 23C
163 std::uint16_t lastFileNameLength; // 248
164 std::uint16_t maxFileNameLength; // 24A
165 std::uint32_t unk24C; // 24C
166 std::int32_t unk250; // 250
167 std::uint32_t pad254; // 254
168 std::uint64_t unk258; // 258
169 std::uint16_t unk260; // 260
170 std::uint16_t unk262; // 262
171 std::uint32_t unk264; // 264
172 std::uint64_t unk268; // 268
173 std::uint32_t unk270; // 270
174 std::uint32_t unk274; // 274
175 std::uint64_t unk278; // 278
176 std::uint64_t unk280; // 280
177 std::uint32_t unk288; // 288
178 std::uint32_t unk28C; // 28C
179 std::uint64_t unk290; // 290
180 std::uint64_t unk298; // 298
181 std::uint32_t unk2A0; // 2A0
182 std::uint32_t unk2A4; // 2A4
183 std::uint64_t unk2A8; // 2A8
184#ifdef SKYRIM_SUPPORT_AE
185 std::uint16_t unk2B0; // 2B0
186 std::uint16_t unk2B2; // 2B2
187 std::uint64_t unk2B8; // 2B8
188 BSTArray<void*> unk2C0; // 2C0
189 BSTArray<void*> unk2D8; // 2D8
190 std::uint8_t unk2F0; // 2F0
191#endif
193
195
196 uint64_t unk3D0; // 3D0;
197
198 protected:
199 bool Save_Impl(std::int32_t a_deviceID, std::uint32_t a_outputStats, const char* a_fileName);
200 bool Load_Impl(const char* a_fileName, std::int32_t a_deviceID, std::uint32_t a_outputStats, bool a_checkForMods);
201
202 private:
204 };
205#ifndef SKYRIMVR
206# ifdef SKYRIM_SUPPORT_AE
207 static_assert(sizeof(BGSSaveLoadManager) == 0x418);
208# else
209 static_assert(sizeof(BGSSaveLoadManager) == 0x3D8);
210# endif
211#else
212 static_assert(sizeof(BGSSaveLoadManager) == 0x3D8);
213#endif
214}
#define KEEP_FOR_RE()
Definition PCH.h:518
Definition EnumSet.h:9
Definition BGSSaveLoadManager.h:21
std::uint32_t pad74
Definition BGSSaveLoadManager.h:60
BSFixedString playTime
Definition BGSSaveLoadManager.h:38
std::uint32_t characterID
Definition BGSSaveLoadManager.h:58
bool unk65
Definition BGSSaveLoadManager.h:52
bool unk66
Definition BGSSaveLoadManager.h:53
BSFixedString fileName
Definition BGSSaveLoadManager.h:34
std::int32_t saveVersion
Definition BGSSaveLoadManager.h:40
bool loaded
Definition BGSSaveLoadManager.h:51
std::uint32_t characterLevel
Definition BGSSaveLoadManager.h:42
std::uint32_t screenshotHeight
Definition BGSSaveLoadManager.h:46
std::uint16_t pad6A
Definition BGSSaveLoadManager.h:57
std::int32_t unk60
Definition BGSSaveLoadManager.h:50
BSFixedString characterName
Definition BGSSaveLoadManager.h:35
std::uint32_t saveNumber
Definition BGSSaveLoadManager.h:41
std::uint32_t screenshotWidth
Definition BGSSaveLoadManager.h:45
float currentExperience
Definition BGSSaveLoadManager.h:43
REX::EnumSet< SaveType, std::uint32_t > saveType
Definition BGSSaveLoadManager.h:59
BSFixedString currentLocation
Definition BGSSaveLoadManager.h:37
std::uint8_t unk68
Definition BGSSaveLoadManager.h:55
SaveType
Definition BGSSaveLoadManager.h:24
BSFixedString characterRace
Definition BGSSaveLoadManager.h:39
REX::W32::FILETIME fileTime
Definition BGSSaveLoadManager.h:48
std::uint32_t unk4C
Definition BGSSaveLoadManager.h:47
REX::W32::FILETIME saveTime
Definition BGSSaveLoadManager.h:49
BSFixedString characterTitle
Definition BGSSaveLoadManager.h:36
std::uint8_t unk67
Definition BGSSaveLoadManager.h:54
float requiredExperience
Definition BGSSaveLoadManager.h:44
bool modded
Definition BGSSaveLoadManager.h:56
Definition BGSSaveLoadManager.h:77
void Unk_02(void) override
bool isBusy
Definition BGSSaveLoadManager.h:89
static constexpr auto VTABLE
Definition BGSSaveLoadManager.h:80
std::uint32_t pad54
Definition BGSSaveLoadManager.h:91
void Unk_01(void) override
static constexpr auto RTTI
Definition BGSSaveLoadManager.h:79
BSTCommonStaticMessageQueue< BSTSmartPointer< bgs::saveload::Request >, 8 > asyncSaveLoadOperationQueue
Definition BGSSaveLoadManager.h:93
std::uint16_t pad52
Definition BGSSaveLoadManager.h:90
BSEventFlag haveTask
Definition BGSSaveLoadManager.h:92
bool isRunnning
Definition BGSSaveLoadManager.h:88
Definition BGSSaveLoadManager.h:71
std::uint32_t displayCharacterModded
Definition BGSSaveLoadManager.h:141
std::int32_t unk250
Definition BGSSaveLoadManager.h:166
BSTCommonStaticMessageQueue< BSTSmartPointer< bgs::saveload::Request >, 8 > unk370
Definition BGSSaveLoadManager.h:194
std::uint8_t pad119
Definition BGSSaveLoadManager.h:148
std::uint32_t unk24C
Definition BGSSaveLoadManager.h:165
std::uint32_t unk2A4
Definition BGSSaveLoadManager.h:182
std::uint16_t pad122
Definition BGSSaveLoadManager.h:153
static constexpr auto RTTI
Definition BGSSaveLoadManager.h:73
std::uint64_t unk278
Definition BGSSaveLoadManager.h:175
BSTArray< SaveEntry > loadedEntries
Definition BGSSaveLoadManager.h:144
std::uint32_t currentCharacterID
Definition BGSSaveLoadManager.h:138
std::uint8_t unk118
Definition BGSSaveLoadManager.h:147
std::uint32_t unk2A0
Definition BGSSaveLoadManager.h:181
std::uint32_t unk0B0
Definition BGSSaveLoadManager.h:133
std::uint32_t unk0E4
Definition BGSSaveLoadManager.h:143
std::uint32_t pad23C
Definition BGSSaveLoadManager.h:161
BSEventNotifyControl ProcessEvent(const BSSaveDataEvent *a_event, BSTEventSource< BSSaveDataEvent > *a_eventSource) override
std::uint16_t pad132
Definition BGSSaveLoadManager.h:158
void Save(const char *a_fileName)
std::uint16_t lastFileNameLength
Definition BGSSaveLoadManager.h:163
Thread thread
Definition BGSSaveLoadManager.h:192
BSEventNotifyControl ProcessEvent(const RaceSexMenuEvent::NameChangedEvent *a_event, BSTEventSource< RaceSexMenuEvent::NameChangedEvent > *a_eventSource) override
static constexpr auto VTABLE
Definition BGSSaveLoadManager.h:74
std::uint16_t maxFileNameLength
Definition BGSSaveLoadManager.h:164
std::uint32_t unk270
Definition BGSSaveLoadManager.h:173
std::uint64_t unk258
Definition BGSSaveLoadManager.h:168
uint64_t unk3D0
Definition BGSSaveLoadManager.h:196
std::uint16_t unk262
Definition BGSSaveLoadManager.h:170
std::uint16_t pad11A
Definition BGSSaveLoadManager.h:149
std::uint32_t unk0B4
Definition BGSSaveLoadManager.h:134
BSEventNotifyControl ProcessEvent(const BSSystemEvent *a_event, BSTEventSource< BSSystemEvent > *a_eventSource) override
BSFixedString lastFileName
Definition BGSSaveLoadManager.h:162
std::uint8_t pad131
Definition BGSSaveLoadManager.h:157
bool Load_Impl(const char *a_fileName, std::int32_t a_deviceID, std::uint32_t a_outputStats, bool a_checkForMods)
std::uint64_t unk0A0
Definition BGSSaveLoadManager.h:130
std::uint64_t unk2A8
Definition BGSSaveLoadManager.h:183
std::uint32_t pad134
Definition BGSSaveLoadManager.h:159
std::uint64_t unk280
Definition BGSSaveLoadManager.h:176
std::uint32_t saveCount
Definition BGSSaveLoadManager.h:150
std::uint64_t tickCount
Definition BGSSaveLoadManager.h:155
std::uint64_t unk290
Definition BGSSaveLoadManager.h:179
std::uint32_t unk274
Definition BGSSaveLoadManager.h:174
void Load(const char *a_fileName, bool a_checkForMods)
std::uint32_t unk288
Definition BGSSaveLoadManager.h:177
std::uint8_t unk130
Definition BGSSaveLoadManager.h:156
std::uint64_t unk0C8
Definition BGSSaveLoadManager.h:137
std::uint32_t unk0AC
Definition BGSSaveLoadManager.h:132
std::uint16_t unk260
Definition BGSSaveLoadManager.h:169
std::uint32_t unk0E0
Definition BGSSaveLoadManager.h:142
std::uint32_t pad254
Definition BGSSaveLoadManager.h:167
std::uint32_t displayCharacterID
Definition BGSSaveLoadManager.h:140
std::uint64_t unk0B8
Definition BGSSaveLoadManager.h:135
void Load(const char *a_fileName)
std::uint32_t pad124
Definition BGSSaveLoadManager.h:154
std::uint8_t unk120
Definition BGSSaveLoadManager.h:151
BSTHashMap< std::uint64_t, BSFixedString > characterIDNameMap
Definition BGSSaveLoadManager.h:129
std::uint32_t currentCharacterModded
Definition BGSSaveLoadManager.h:139
std::uint64_t unk268
Definition BGSSaveLoadManager.h:172
~BGSSaveLoadManager() override
std::uint64_t unk298
Definition BGSSaveLoadManager.h:180
static BGSSaveLoadManager * GetSingleton()
std::uint32_t unk0A8
Definition BGSSaveLoadManager.h:131
std::uint32_t unk28C
Definition BGSSaveLoadManager.h:178
BSTArray< BGSSaveLoadFileEntry * > saveGameList
Definition BGSSaveLoadManager.h:146
std::uint32_t unk264
Definition BGSSaveLoadManager.h:171
std::uint8_t pad121
Definition BGSSaveLoadManager.h:152
const char lastFileFullName[0x104]
Definition BGSSaveLoadManager.h:160
std::uint64_t unk0C0
Definition BGSSaveLoadManager.h:136
bool Save_Impl(std::int32_t a_deviceID, std::uint32_t a_outputStats, const char *a_fileName)
Definition BSAtomic.h:57
Definition BSTArray.h:378
Definition BSTMessageQueue.h:81
Definition BSTEvent.h:185
Definition BSTEvent.h:19
Definition BSTHashMap.h:21
Definition BSThread.h:8
Definition AbsorbEffect.h:6
constexpr std::array< REL::ID, 3 > VTABLE_BGSSaveLoadManager
Definition Offsets_VTABLE.h:8849
constexpr REL::ID RTTI_BGSSaveLoadManager(static_cast< std::uint64_t >(686602))
constexpr REL::ID RTTI_BGSSaveLoadManager__Thread(static_cast< std::uint64_t >(686610))
BSEventNotifyControl
Definition BSTEvent.h:12
constexpr std::array< REL::ID, 1 > VTABLE_BGSSaveLoadManager__Thread
Definition Offsets_VTABLE.h:8850
Definition BASE.h:41
Definition BGSSaveLoadManager.h:98
BSTHashMap< std::uint32_t, BSFixedString > autoSaves
Definition BGSSaveLoadManager.h:103
BSFixedString lastQuicksave
Definition BGSSaveLoadManager.h:104
std::uint32_t isModded
Definition BGSSaveLoadManager.h:100
std::uint32_t characterID
Definition BGSSaveLoadManager.h:99
std::uint32_t manualSaveCount
Definition BGSSaveLoadManager.h:101
std::uint32_t autoSaveCount
Definition BGSSaveLoadManager.h:102
Definition RaceSexMenuEvent.h:9