mirror of
https://gitlab.com/GaryOderNichts/re3-wiiu.git
synced 2024-11-25 18:46:52 +01:00
Fix debug script loader crashing missions
* open_script is now exposed in Script.h, perhaps it should be namespaced as a static method on CTheScripts? I'm unsure what is preferred. * I've moved the joypad code out of open_script to prevent buttons held down at mission load time from changing the scriptToLoad.
This commit is contained in:
parent
71f28c8cf5
commit
33c45e4ae0
@ -1771,20 +1771,12 @@ int scriptToLoad = 0;
|
|||||||
|
|
||||||
int open_script()
|
int open_script()
|
||||||
{
|
{
|
||||||
// glfwGetKey doesn't work because of CGame::Initialise is blocking
|
|
||||||
CPad::UpdatePads();
|
|
||||||
if (CPad::GetPad(0)->GetChar('G'))
|
|
||||||
scriptToLoad = 0;
|
|
||||||
if (CPad::GetPad(0)->GetChar('R'))
|
|
||||||
scriptToLoad = 1;
|
|
||||||
if (CPad::GetPad(0)->GetChar('D'))
|
|
||||||
scriptToLoad = 2;
|
|
||||||
switch (scriptToLoad) {
|
switch (scriptToLoad) {
|
||||||
case 0: return CFileMgr::OpenFile("main.scm", "rb");
|
case 0: return CFileMgr::OpenFile("data\\main.scm", "rb");
|
||||||
case 1: return CFileMgr::OpenFile("main_freeroam.scm", "rb");
|
case 1: return CFileMgr::OpenFile("data\\main_freeroam.scm", "rb");
|
||||||
case 2: return CFileMgr::OpenFile("main_d.scm", "rb");
|
case 2: return CFileMgr::OpenFile("data\\main_d.scm", "rb");
|
||||||
}
|
}
|
||||||
return CFileMgr::OpenFile("main.scm", "rb");
|
return CFileMgr::OpenFile("data\\main.scm", "rb");
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@ -1800,10 +1792,16 @@ void CTheScripts::Init()
|
|||||||
MissionCleanUp.Init();
|
MissionCleanUp.Init();
|
||||||
UpsideDownCars.Init();
|
UpsideDownCars.Init();
|
||||||
StuckCars.Init();
|
StuckCars.Init();
|
||||||
CFileMgr::SetDir("data");
|
|
||||||
#ifdef USE_DEBUG_SCRIPT_LOADER
|
#ifdef USE_DEBUG_SCRIPT_LOADER
|
||||||
|
// glfwGetKey doesn't work because of CGame::Initialise is blocking
|
||||||
|
CPad::UpdatePads();
|
||||||
|
if(CPad::GetPad(0)->GetChar('G')) scriptToLoad = 0;
|
||||||
|
if(CPad::GetPad(0)->GetChar('R')) scriptToLoad = 1;
|
||||||
|
if(CPad::GetPad(0)->GetChar('D')) scriptToLoad = 2;
|
||||||
|
|
||||||
int mainf = open_script();
|
int mainf = open_script();
|
||||||
#else
|
#else
|
||||||
|
CFileMgr::SetDir("data");
|
||||||
int mainf = CFileMgr::OpenFile("main.scm", "rb");
|
int mainf = CFileMgr::OpenFile("main.scm", "rb");
|
||||||
#endif
|
#endif
|
||||||
CFileMgr::Read(mainf, (char*)ScriptSpace, SIZE_MAIN_SCRIPT);
|
CFileMgr::Read(mainf, (char*)ScriptSpace, SIZE_MAIN_SCRIPT);
|
||||||
|
@ -591,5 +591,6 @@ void RetryMission(int, int);
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef USE_DEBUG_SCRIPT_LOADER
|
#ifdef USE_DEBUG_SCRIPT_LOADER
|
||||||
|
int open_script();
|
||||||
extern int scriptToLoad;
|
extern int scriptToLoad;
|
||||||
#endif
|
#endif
|
@ -305,7 +305,11 @@ int8 CRunningScript::ProcessCommands1000To1099(int32 command)
|
|||||||
CTimer::Suspend();
|
CTimer::Suspend();
|
||||||
int offset = CTheScripts::MultiScriptArray[ScriptParams[0]];
|
int offset = CTheScripts::MultiScriptArray[ScriptParams[0]];
|
||||||
CFileMgr::ChangeDir("\\");
|
CFileMgr::ChangeDir("\\");
|
||||||
|
#ifdef USE_DEBUG_SCRIPT_LOADER
|
||||||
|
int handle = open_script();
|
||||||
|
#else
|
||||||
int handle = CFileMgr::OpenFile("data\\main.scm", "rb");
|
int handle = CFileMgr::OpenFile("data\\main.scm", "rb");
|
||||||
|
#endif
|
||||||
CFileMgr::Seek(handle, offset, 0);
|
CFileMgr::Seek(handle, offset, 0);
|
||||||
CFileMgr::Read(handle, (const char*)&CTheScripts::ScriptSpace[SIZE_MAIN_SCRIPT], SIZE_MISSION_SCRIPT);
|
CFileMgr::Read(handle, (const char*)&CTheScripts::ScriptSpace[SIZE_MAIN_SCRIPT], SIZE_MISSION_SCRIPT);
|
||||||
CFileMgr::CloseFile(handle);
|
CFileMgr::CloseFile(handle);
|
||||||
|
Loading…
Reference in New Issue
Block a user