summaryrefslogtreecommitdiffstats
path: root/src/control
diff options
context:
space:
mode:
authorNikolay Korolev <nickvnuk@gmail.com>2021-01-18 21:58:26 +0100
committerNikolay Korolev <nickvnuk@gmail.com>2021-01-18 21:58:26 +0100
commit47c697fecafbf5b9d2aa30c271a744e41568670f (patch)
treebe94d1bcc04a2e1981bfad703d64e27d71f5a4cc /src/control
parentMerge branch 'lcs' into lcs-dev (diff)
downloadre3-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.cpp20
-rw-r--r--src/control/Script4.cpp2
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);