Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
rubberduckycooly
GitHub Repository: rubberduckycooly/Sonic-Mania-Decompilation
Path: blob/master/SonicMania/Objects/Helpers/Options.h
338 views
1
#ifndef OBJ_OPTIONS_H
2
#define OBJ_OPTIONS_H
3
4
#include "Game.h"
5
6
// Using a seperate OptionsRAM struct
7
// Normally (and officially) the EntityOptions struct was used here
8
// but due to v5U updating the entity (and thus the OptionsRAM "spec")
9
// EntityOptions is no longer easily compatible across versions
10
// so I gave it dummy data and will be using this struct to interact with optionsRAM
11
typedef struct {
12
uint8 padding[0x58];
13
14
uint8 language;
15
int32 overrideLanguage;
16
int32 screenShader;
17
bool32 overrideShader;
18
int32 volMusic;
19
bool32 overrideMusicVol;
20
int32 volSfx;
21
bool32 overrideSfxVol;
22
bool32 vSync;
23
uint8 windowSize;
24
bool32 windowBorder;
25
bool32 windowed;
26
bool32 tripleBuffering;
27
} OptionsRAM;
28
29
// Object Class
30
struct ObjectOptions {
31
#if !MANIA_USE_PLUS
32
RSDK_OBJECT
33
Entity *loadEntityPtr;
34
void (*loadCallback)(bool32 success);
35
Entity *saveEntityPtr;
36
void (*saveCallback)(void);
37
#else
38
Entity *loadEntityPtr;
39
void (*loadCallback)(bool32 success);
40
Entity *saveEntityPtr;
41
void (*saveCallback)(bool32 success);
42
#endif
43
bool32 changed;
44
};
45
46
// Entity Class
47
struct EntityOptions {
48
RSDK_ENTITY
49
// padding to match whatever it would be normally
50
// not required, but its for safety :)
51
uint8 padding[sizeof(OptionsRAM) - sizeof(Entity)];
52
};
53
54
// Object Struct
55
extern ObjectOptions *Options;
56
57
// Standard Entity Events
58
void Options_Update(void);
59
void Options_LateUpdate(void);
60
void Options_StaticUpdate(void);
61
void Options_Draw(void);
62
void Options_Create(void *data);
63
void Options_StageLoad(void);
64
#if GAME_INCLUDE_EDITOR
65
void Options_EditorDraw(void);
66
void Options_EditorLoad(void);
67
#endif
68
void Options_Serialize(void);
69
70
// Extra Entity Functions
71
OptionsRAM *Options_GetOptionsRAM(void);
72
void Options_Reload(void);
73
void Options_GetWinSize(void);
74
void Options_LoadCallback(bool32 success);
75
void Options_LoadFile(void (*callback)(bool32 success));
76
#if MANIA_USE_PLUS
77
void Options_SaveFile(void (*callback)(bool32 success));
78
#else
79
void Options_SaveFile(void (*callback)(void));
80
#endif
81
void Options_SetLanguage(int32 language);
82
void Options_LoadValuesFromSettings(OptionsRAM *options);
83
void Options_LoadOptionsCallback(int32 status);
84
void Options_SaveOptionsCallback(int32 status);
85
86
#endif //! OBJ_OPTIONS_H
87
88