Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
Rubberduckycooly
GitHub Repository: Rubberduckycooly/RSDKv5-Decompilation
Path: blob/master/RSDKv5/RSDK/Core/Legacy/ModAPILegacy.cpp
1163 views
1
2
#if RETRO_USE_MOD_LOADER
3
4
char RSDK::Legacy::modTypeNames[OBJECT_COUNT][0x40];
5
char RSDK::Legacy::modScriptPaths[OBJECT_COUNT][0x40];
6
uint8 RSDK::Legacy::modScriptFlags[OBJECT_COUNT];
7
uint8 RSDK::Legacy::modObjCount = 0;
8
9
void RSDK::Legacy::v4::RefreshEngine() { RSDK::ApplyModChanges(); }
10
void RSDK::Legacy::v4::GetModCount() { scriptEng.checkResult = RSDK::GetModCount(false); }
11
void RSDK::Legacy::v4::GetModName(int32 *textMenu, int32 *highlight, uint32 *id, int32 *unused)
12
{
13
if (*id >= modList.size())
14
return;
15
16
TextMenu *menu = &gameMenu[*textMenu];
17
menu->entryHighlight[menu->rowCount] = *highlight;
18
AddTextMenuEntry(menu, modList[*id].name.c_str());
19
}
20
void RSDK::Legacy::v4::GetModDescription(int32 *textMenu, int32 *highlight, uint32 *id, int32 *unused)
21
{
22
if (*id >= modList.size())
23
return;
24
25
TextMenu *menu = &gameMenu[*textMenu];
26
menu->entryHighlight[menu->rowCount] = *highlight;
27
AddTextMenuEntry(menu, modList[*id].desc.c_str());
28
}
29
void RSDK::Legacy::v4::GetModAuthor(int32 *textMenu, int32 *highlight, uint32 *id, int32 *unused)
30
{
31
if (*id >= modList.size())
32
return;
33
34
TextMenu *menu = &gameMenu[*textMenu];
35
menu->entryHighlight[menu->rowCount] = *highlight;
36
AddTextMenuEntry(menu, modList[*id].author.c_str());
37
}
38
void RSDK::Legacy::v4::GetModVersion(int32 *textMenu, int32 *highlight, uint32 *id, int32 *unused)
39
{
40
if (*id >= modList.size())
41
return;
42
43
TextMenu *menu = &gameMenu[*textMenu];
44
menu->entryHighlight[menu->rowCount] = *highlight;
45
AddTextMenuEntry(menu, modList[*id].version.c_str());
46
}
47
void RSDK::Legacy::v4::GetModActive(uint32 *id, int32 *unused)
48
{
49
scriptEng.checkResult = false;
50
if (*id >= modList.size())
51
return;
52
53
scriptEng.checkResult = modList[*id].active;
54
}
55
void RSDK::Legacy::v4::SetModActive(uint32 *id, int32 *active)
56
{
57
if (*id >= modList.size())
58
return;
59
60
modList[*id].active = *active;
61
}
62
void RSDK::Legacy::v4::MoveMod(uint32 *id, int32 *up)
63
{
64
if (!id || !up)
65
return;
66
67
int32 preOption = *id;
68
int32 option = preOption + (*up ? -1 : 1);
69
if (option < 0 || preOption < 0)
70
return;
71
72
if (option >= (int32)modList.size() || preOption >= (int32)modList.size())
73
return;
74
75
ModInfo swap = modList[preOption];
76
modList[preOption] = modList[option];
77
modList[option] = swap;
78
}
79
80
void RSDK::Legacy::v4::ExitGame() { RSDK::SKU::ExitGame(); }
81
82
void RSDK::Legacy::v4::FileExists(int32 *unused, const char *filePath)
83
{
84
FileInfo info;
85
InitFileInfo(&info);
86
87
scriptEng.checkResult = false;
88
if (LoadFile(&info, filePath, FMODE_RB)) {
89
scriptEng.checkResult = true;
90
CloseFile(&info);
91
}
92
}
93
94
void RSDK::Legacy::v4::AddGameAchievement(int32 *unused, const char *name) { RSDK::RegisterAchievement(name, name, ""); }
95
void RSDK::Legacy::v4::SetAchievementDescription(uint32 *id, const char *desc)
96
{
97
if (*id >= (int32)achievementList.size())
98
return;
99
100
achievementList[*id].description = desc;
101
}
102
void RSDK::Legacy::v4::ClearAchievements() { achievementList.clear(); }
103
void RSDK::Legacy::v4::GetAchievementCount() { scriptEng.checkResult = (int32)achievementList.size(); }
104
void RSDK::Legacy::v4::GetAchievementName(uint32 *id, int32 *textMenu)
105
{
106
if (*id >= (int32)achievementList.size())
107
return;
108
109
TextMenu *menu = &gameMenu[*textMenu];
110
menu->entryHighlight[menu->rowCount] = false;
111
AddTextMenuEntry(menu, achievementList[*id].name.c_str());
112
}
113
void RSDK::Legacy::v4::GetAchievementDescription(uint32 *id, int32 *textMenu)
114
{
115
if (*id >= (int32)achievementList.size())
116
return;
117
118
TextMenu *menu = &gameMenu[*textMenu];
119
menu->entryHighlight[menu->rowCount] = false;
120
AddTextMenuEntry(menu, achievementList[*id].description.c_str());
121
}
122
void RSDK::Legacy::v4::GetAchievement(uint32 *id, void *unused)
123
{
124
if (*id >= (int32)achievementList.size())
125
return;
126
scriptEng.checkResult = achievementList[*id].achieved ? 100 : 0;
127
}
128
129
void RSDK::Legacy::v4::GetScreenWidth() { scriptEng.checkResult = videoSettings.pixWidth; }
130
void RSDK::Legacy::v4::SetScreenWidth(int32 *width, int32 *unused)
131
{
132
if (!width)
133
return;
134
135
int32 scale = GetVideoSetting(VIDEOSETTING_WINDOW_WIDTH) / videoSettings.pixWidth;
136
137
videoSettings.pixWidth = *width;
138
SetVideoSetting(VIDEOSETTING_WINDOW_WIDTH, videoSettings.pixWidth * scale);
139
}
140
void RSDK::Legacy::v4::GetWindowScale() { scriptEng.checkResult = GetVideoSetting(VIDEOSETTING_WINDOW_WIDTH) / videoSettings.pixWidth; }
141
void RSDK::Legacy::v4::SetWindowScale(int32 *scale, int32 *unused)
142
{
143
if (!scale)
144
return;
145
146
SetVideoSetting(VIDEOSETTING_WINDOW_WIDTH, videoSettings.pixWidth * *scale);
147
SetVideoSetting(VIDEOSETTING_WINDOW_HEIGHT, SCREEN_YSIZE * *scale);
148
}
149
void RSDK::Legacy::v4::GetWindowScaleMode() { scriptEng.checkResult = GetVideoSetting(VIDEOSETTING_SHADERID); }
150
void RSDK::Legacy::v4::SetWindowScaleMode(int32 *mode, int32 *unused)
151
{
152
if (!mode)
153
return;
154
155
SetVideoSetting(VIDEOSETTING_SHADERID, *mode % shaderCount);
156
}
157
void RSDK::Legacy::v4::GetWindowFullScreen() { scriptEng.checkResult = GetVideoSetting(VIDEOSETTING_WINDOWED) ^ 1; }
158
void RSDK::Legacy::v4::SetWindowFullScreen(int32 *fullscreen, int32 *unused)
159
{
160
if (!fullscreen)
161
return;
162
163
SetVideoSetting(VIDEOSETTING_WINDOWED, *fullscreen ^ 1);
164
}
165
void RSDK::Legacy::v4::GetWindowBorderless() { scriptEng.checkResult = GetVideoSetting(VIDEOSETTING_BORDERED) ^ 1; }
166
void RSDK::Legacy::v4::SetWindowBorderless(int32 *borderless, int32 *unused)
167
{
168
if (!borderless)
169
return;
170
171
SetVideoSetting(VIDEOSETTING_BORDERED, *borderless ^ 1);
172
}
173
void RSDK::Legacy::v4::GetWindowVSync() { scriptEng.checkResult = GetVideoSetting(VIDEOSETTING_VSYNC); }
174
void RSDK::Legacy::v4::SetWindowVSync(int32 *enabled, int32 *unused)
175
{
176
if (!enabled)
177
return;
178
179
SetVideoSetting(VIDEOSETTING_VSYNC, *enabled);
180
}
181
void RSDK::Legacy::v4::ApplyWindowChanges() { RSDK::UpdateGameWindow(); }
182
183
#endif
184