diff options
author | Nikolay Korolev <nickvnuk@gmail.com> | 2021-01-18 21:58:26 +0100 |
---|---|---|
committer | Nikolay Korolev <nickvnuk@gmail.com> | 2021-01-18 21:58:26 +0100 |
commit | 47c697fecafbf5b9d2aa30c271a744e41568670f (patch) | |
tree | be94d1bcc04a2e1981bfad703d64e27d71f5a4cc /src/control | |
parent | Merge branch 'lcs' into lcs-dev (diff) | |
download | re3-47c697fecafbf5b9d2aa30c271a744e41568670f.tar re3-47c697fecafbf5b9d2aa30c271a744e41568670f.tar.gz re3-47c697fecafbf5b9d2aa30c271a744e41568670f.tar.bz2 re3-47c697fecafbf5b9d2aa30c271a744e41568670f.tar.lz re3-47c697fecafbf5b9d2aa30c271a744e41568670f.tar.xz re3-47c697fecafbf5b9d2aa30c271a744e41568670f.tar.zst re3-47c697fecafbf5b9d2aa30c271a744e41568670f.zip |
Diffstat (limited to 'src/control')
-rw-r--r-- | src/control/Script.cpp | 20 | ||||
-rw-r--r-- | src/control/Script4.cpp | 2 |
2 files changed, 9 insertions, 13 deletions
diff --git a/src/control/Script.cpp b/src/control/Script.cpp index 1efcbc9d..c6c13c50 100644 --- a/src/control/Script.cpp +++ b/src/control/Script.cpp @@ -5246,23 +5246,19 @@ CTheScripts::SwitchToMission(int32 mission) CStats::LastMissionPassedName[0] = '\0'; #endif CTimer::Suspend(); - int offset = CTheScripts::MultiScriptArray[mission]; -#ifdef USE_DEBUG_SCRIPT_LOADER - CFileMgr::ChangeDir("\\data\\"); - int handle = CFileMgr::OpenFile(scriptfile, "rb"); - CFileMgr::ChangeDir("\\"); -#else - CFileMgr::ChangeDir("\\"); - int handle = CFileMgr::OpenFile("data\\main.scm", "rb"); -#endif - CFileMgr::Seek(handle, offset, 0); - CFileMgr::Read(handle, (const char*)&CTheScripts::ScriptSpace[CTheScripts::MainScriptSize], CTheScripts::MainScriptSize); - CFileMgr::CloseFile(handle); + int offset = CTheScripts::MultiScriptArray[mission] + 8; + int size = CTheScripts::MultiScriptArray[mission + 1] - CTheScripts::MultiScriptArray[mission]; + if (size <= 0) + size = CTheScripts::LargestMissionScriptSize; + CFileMgr::Seek(gScriptsFile, offset, 0); + CFileMgr::Read(gScriptsFile, (const char*)&CTheScripts::ScriptSpace[CTheScripts::MainScriptSize], size); CRunningScript* pMissionScript = CTheScripts::StartNewScript(CTheScripts::MainScriptSize); CTimer::Resume(); pMissionScript->m_bIsMissionScript = true; pMissionScript->m_bMissionFlag = true; CTheScripts::bAlreadyRunningAMissionScript = true; + memset(&CTheScripts::ScriptSpace[CTheScripts::NumTrueGlobals * 4 + 8], 0, CTheScripts::MostGlobals * 4); CGameLogic::ClearShortCut(); + pMissionScript->Process(); } #endif diff --git a/src/control/Script4.cpp b/src/control/Script4.cpp index 2fbe527c..20e041da 100644 --- a/src/control/Script4.cpp +++ b/src/control/Script4.cpp @@ -1495,7 +1495,7 @@ int8 CRunningScript::ProcessCommands900To999(int32 command) CVehicle* pVehicle = CPools::GetVehiclePool()->GetAt(GET_INTEGER_PARAM(0)); script_assert(pVehicle); const CVector& pos = pVehicle->GetPosition(); - float heading = CGeneral::GetATanOfXY(pos.y - GET_FLOAT_PARAM(2), pos.x - GET_FLOAT_PARAM(1)) + HALFPI; + float heading = CGeneral::GetATanOfXY(pos.x - GET_FLOAT_PARAM(1), pos.y - GET_FLOAT_PARAM(2)) + HALFPI; if (heading > TWOPI) heading -= TWOPI; pVehicle->SetHeading(heading); |