Path: blob/master/RSDKv5/RSDK/Core/Legacy/ModAPILegacy.cpp
1163 views
1#if RETRO_USE_MOD_LOADER23char RSDK::Legacy::modTypeNames[OBJECT_COUNT][0x40];4char RSDK::Legacy::modScriptPaths[OBJECT_COUNT][0x40];5uint8 RSDK::Legacy::modScriptFlags[OBJECT_COUNT];6uint8 RSDK::Legacy::modObjCount = 0;78void RSDK::Legacy::v4::RefreshEngine() { RSDK::ApplyModChanges(); }9void RSDK::Legacy::v4::GetModCount() { scriptEng.checkResult = RSDK::GetModCount(false); }10void RSDK::Legacy::v4::GetModName(int32 *textMenu, int32 *highlight, uint32 *id, int32 *unused)11{12if (*id >= modList.size())13return;1415TextMenu *menu = &gameMenu[*textMenu];16menu->entryHighlight[menu->rowCount] = *highlight;17AddTextMenuEntry(menu, modList[*id].name.c_str());18}19void RSDK::Legacy::v4::GetModDescription(int32 *textMenu, int32 *highlight, uint32 *id, int32 *unused)20{21if (*id >= modList.size())22return;2324TextMenu *menu = &gameMenu[*textMenu];25menu->entryHighlight[menu->rowCount] = *highlight;26AddTextMenuEntry(menu, modList[*id].desc.c_str());27}28void RSDK::Legacy::v4::GetModAuthor(int32 *textMenu, int32 *highlight, uint32 *id, int32 *unused)29{30if (*id >= modList.size())31return;3233TextMenu *menu = &gameMenu[*textMenu];34menu->entryHighlight[menu->rowCount] = *highlight;35AddTextMenuEntry(menu, modList[*id].author.c_str());36}37void RSDK::Legacy::v4::GetModVersion(int32 *textMenu, int32 *highlight, uint32 *id, int32 *unused)38{39if (*id >= modList.size())40return;4142TextMenu *menu = &gameMenu[*textMenu];43menu->entryHighlight[menu->rowCount] = *highlight;44AddTextMenuEntry(menu, modList[*id].version.c_str());45}46void RSDK::Legacy::v4::GetModActive(uint32 *id, int32 *unused)47{48scriptEng.checkResult = false;49if (*id >= modList.size())50return;5152scriptEng.checkResult = modList[*id].active;53}54void RSDK::Legacy::v4::SetModActive(uint32 *id, int32 *active)55{56if (*id >= modList.size())57return;5859modList[*id].active = *active;60}61void RSDK::Legacy::v4::MoveMod(uint32 *id, int32 *up)62{63if (!id || !up)64return;6566int32 preOption = *id;67int32 option = preOption + (*up ? -1 : 1);68if (option < 0 || preOption < 0)69return;7071if (option >= (int32)modList.size() || preOption >= (int32)modList.size())72return;7374ModInfo swap = modList[preOption];75modList[preOption] = modList[option];76modList[option] = swap;77}7879void RSDK::Legacy::v4::ExitGame() { RSDK::SKU::ExitGame(); }8081void RSDK::Legacy::v4::FileExists(int32 *unused, const char *filePath)82{83FileInfo info;84InitFileInfo(&info);8586scriptEng.checkResult = false;87if (LoadFile(&info, filePath, FMODE_RB)) {88scriptEng.checkResult = true;89CloseFile(&info);90}91}9293void RSDK::Legacy::v4::AddGameAchievement(int32 *unused, const char *name) { RSDK::RegisterAchievement(name, name, ""); }94void RSDK::Legacy::v4::SetAchievementDescription(uint32 *id, const char *desc)95{96if (*id >= (int32)achievementList.size())97return;9899achievementList[*id].description = desc;100}101void RSDK::Legacy::v4::ClearAchievements() { achievementList.clear(); }102void RSDK::Legacy::v4::GetAchievementCount() { scriptEng.checkResult = (int32)achievementList.size(); }103void RSDK::Legacy::v4::GetAchievementName(uint32 *id, int32 *textMenu)104{105if (*id >= (int32)achievementList.size())106return;107108TextMenu *menu = &gameMenu[*textMenu];109menu->entryHighlight[menu->rowCount] = false;110AddTextMenuEntry(menu, achievementList[*id].name.c_str());111}112void RSDK::Legacy::v4::GetAchievementDescription(uint32 *id, int32 *textMenu)113{114if (*id >= (int32)achievementList.size())115return;116117TextMenu *menu = &gameMenu[*textMenu];118menu->entryHighlight[menu->rowCount] = false;119AddTextMenuEntry(menu, achievementList[*id].description.c_str());120}121void RSDK::Legacy::v4::GetAchievement(uint32 *id, void *unused)122{123if (*id >= (int32)achievementList.size())124return;125scriptEng.checkResult = achievementList[*id].achieved ? 100 : 0;126}127128void RSDK::Legacy::v4::GetScreenWidth() { scriptEng.checkResult = videoSettings.pixWidth; }129void RSDK::Legacy::v4::SetScreenWidth(int32 *width, int32 *unused)130{131if (!width)132return;133134int32 scale = GetVideoSetting(VIDEOSETTING_WINDOW_WIDTH) / videoSettings.pixWidth;135136videoSettings.pixWidth = *width;137SetVideoSetting(VIDEOSETTING_WINDOW_WIDTH, videoSettings.pixWidth * scale);138}139void RSDK::Legacy::v4::GetWindowScale() { scriptEng.checkResult = GetVideoSetting(VIDEOSETTING_WINDOW_WIDTH) / videoSettings.pixWidth; }140void RSDK::Legacy::v4::SetWindowScale(int32 *scale, int32 *unused)141{142if (!scale)143return;144145SetVideoSetting(VIDEOSETTING_WINDOW_WIDTH, videoSettings.pixWidth * *scale);146SetVideoSetting(VIDEOSETTING_WINDOW_HEIGHT, SCREEN_YSIZE * *scale);147}148void RSDK::Legacy::v4::GetWindowScaleMode() { scriptEng.checkResult = GetVideoSetting(VIDEOSETTING_SHADERID); }149void RSDK::Legacy::v4::SetWindowScaleMode(int32 *mode, int32 *unused)150{151if (!mode)152return;153154SetVideoSetting(VIDEOSETTING_SHADERID, *mode % shaderCount);155}156void RSDK::Legacy::v4::GetWindowFullScreen() { scriptEng.checkResult = GetVideoSetting(VIDEOSETTING_WINDOWED) ^ 1; }157void RSDK::Legacy::v4::SetWindowFullScreen(int32 *fullscreen, int32 *unused)158{159if (!fullscreen)160return;161162SetVideoSetting(VIDEOSETTING_WINDOWED, *fullscreen ^ 1);163}164void RSDK::Legacy::v4::GetWindowBorderless() { scriptEng.checkResult = GetVideoSetting(VIDEOSETTING_BORDERED) ^ 1; }165void RSDK::Legacy::v4::SetWindowBorderless(int32 *borderless, int32 *unused)166{167if (!borderless)168return;169170SetVideoSetting(VIDEOSETTING_BORDERED, *borderless ^ 1);171}172void RSDK::Legacy::v4::GetWindowVSync() { scriptEng.checkResult = GetVideoSetting(VIDEOSETTING_VSYNC); }173void RSDK::Legacy::v4::SetWindowVSync(int32 *enabled, int32 *unused)174{175if (!enabled)176return;177178SetVideoSetting(VIDEOSETTING_VSYNC, *enabled);179}180void RSDK::Legacy::v4::ApplyWindowChanges() { RSDK::UpdateGameWindow(); }181182#endif183184