-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathGameSettings.h
101 lines (85 loc) · 2.13 KB
/
GameSettings.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
#pragma once
// 0C
class Setting
{
public:
Setting();
virtual ~Setting();
virtual void Unk_01(void);
enum EType {
kSetting_Bool = 0,
kSetting_c,
kSetting_h,
kSetting_Integer,
kSetting_Unsigned,
kSetting_Float,
kSetting_String,
kSetting_r,
kSetting_a,
kSetting_Other
};
union Info {
UInt32 uint;
int i;
float f;
char * str;
};
// void ** vtbl // 00
Info data; // 04
char * name; // 08
UInt32 GetType();
bool Get(double& out);
bool Set(double newVal);
};
// 120
class GameSettingCollection // derived from SettingCollection
{
public:
GameSettingCollection();
virtual ~GameSettingCollection();
virtual void Unk_01(void);
virtual void Unk_02(void);
virtual void Unk_03(void);
virtual void Unk_04(void);
virtual void Unk_05(void);
virtual void Unk_06(void);
virtual void Unk_07(void);
virtual void Unk_08(void);
virtual void Unk_09(void);
virtual void Unk_0A(void);
// void ** vtbl // 000
UInt32 unk004[(0x10C - 0x004) >> 2]; // 004
NiTMapBase <const char*, Setting*> settingMap; // 10C BSTCaseInsensitiveStringMap
UInt8 unk11C; // 11C
UInt8 pad11D[3];
bool GetGameSetting(char* settingName, Setting** out);
static GameSettingCollection * GetSingleton();
};
STATIC_ASSERT(sizeof(GameSettingCollection) == 0x120);
// 114
// actually 2 classes used: IniSettingCollection and IniPrefSettingCollection. Layouts are the same
class IniSettingCollection
{
public:
IniSettingCollection();
virtual ~IniSettingCollection();
virtual void Unk_01(void);
virtual void Unk_02(void);
virtual void Unk_03(void);
virtual void Unk_04(void);
virtual void Unk_05(void);
virtual void Unk_06(void);
virtual void Unk_07(void);
virtual void Unk_08(void);
virtual void Unk_09(void);
virtual void Unk_0A(void);
// void ** vtbl // 000
char iniPath[0x100]; // 004
UInt32 unk104; // 104
UInt32 unk108; // 108
tList<Setting> settings; // 10C;
static IniSettingCollection * GetIniSettings();
static IniSettingCollection * GetIniPrefs();
};
STATIC_ASSERT(sizeof(IniSettingCollection) == 0x114);
bool GetIniSetting(const char* settingName, Setting** out);