summaryrefslogtreecommitdiffstats
path: root/src/control/Script.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/control/Script.cpp')
-rw-r--r--src/control/Script.cpp54
1 files changed, 29 insertions, 25 deletions
diff --git a/src/control/Script.cpp b/src/control/Script.cpp
index 285b4cb7..bcfc6078 100644
--- a/src/control/Script.cpp
+++ b/src/control/Script.cpp
@@ -17,6 +17,9 @@
#include "FileMgr.h"
#include "Frontend.h"
#include "General.h"
+#ifdef MISSION_REPLAY
+#include "GenericGameStorage.h"
+#endif
#include "HandlingMgr.h"
#include "Heli.h"
#include "Hud.h"
@@ -495,11 +498,12 @@ void CRunningScript::Init()
}
#ifdef USE_DEBUG_SCRIPT_LOADER
-int scriptToLoad = 0;
+int CTheScripts::ScriptToLoad = 0;
-int open_script()
+int CTheScripts::OpenScript()
{
- switch (scriptToLoad) {
+ CFileMgr::ChangeDir("\\");
+ switch (ScriptToLoad) {
case 0: return CFileMgr::OpenFile("data\\main.scm", "rb");
case 1: return CFileMgr::OpenFile("data\\main_freeroam.scm", "rb");
case 2: return CFileMgr::OpenFile("data\\main_d.scm", "rb");
@@ -523,11 +527,11 @@ void CTheScripts::Init()
#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;
+ 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 = OpenScript();
#else
CFileMgr::SetDir("data");
int mainf = CFileMgr::OpenFile("main.scm", "rb");
@@ -663,25 +667,25 @@ void CTheScripts::Process()
#ifdef MISSION_REPLAY
static uint32 TimeToWaitTill;
switch (AllowMissionReplay) {
- case 2:
- AllowMissionReplay = 3;
+ case MISSION_RETRY_STAGE_START_PROCESSING:
+ AllowMissionReplay = MISSION_RETRY_STAGE_WAIT_FOR_DELAY;
TimeToWaitTill = CTimer::GetTimeInMilliseconds() + (AddExtraDeathDelay() > 1000 ? 4000 : 2500);
break;
- case 3:
+ case MISSION_RETRY_STAGE_WAIT_FOR_DELAY:
if (TimeToWaitTill < CTimer::GetTimeInMilliseconds())
- AllowMissionReplay = 4;
+ AllowMissionReplay = MISSION_RETRY_STAGE_WAIT_FOR_MENU;
break;
- case 4:
- AllowMissionReplay = 5;
+ case MISSION_RETRY_STAGE_WAIT_FOR_MENU:
+ AllowMissionReplay = MISSION_RETRY_STAGE_WAIT_FOR_USER;
RetryMission(0, 0);
break;
- case 6:
- AllowMissionReplay = 7;
+ case MISSION_RETRY_STAGE_START_RESTARTING:
+ AllowMissionReplay = MISSION_RETRY_STAGE_WAIT_FOR_TIMER_AFTER_RESTART;
TimeToWaitTill = CTimer::GetTimeInMilliseconds() + 500;
break;
- case 7:
+ case MISSION_RETRY_STAGE_WAIT_FOR_TIMER_AFTER_RESTART:
if (TimeToWaitTill < CTimer::GetTimeInMilliseconds()) {
- AllowMissionReplay = 0;
+ AllowMissionReplay = MISSION_RETRY_STAGE_NORMAL;
return;
}
break;
@@ -1298,11 +1302,11 @@ int8 CRunningScript::ProcessCommands0To99(int32 command)
CPlayerInfo* pPlayerInfo = &CWorld::Players[CWorld::PlayerInFocus];
#if 0 // makeing autosave is pointless and is a bit buggy
if (pPlayerInfo->m_pPed->GetPedState() != PED_DEAD && pPlayerInfo->m_WBState == WBSTATE_PLAYING && !m_bDeatharrestExecuted)
- SaveGameForPause(1);
+ SaveGameForPause(SAVE_TYPE_QUICKSAVE);
#endif
oldTargetX = oldTargetY = 0.0f;
- if (AllowMissionReplay == 1)
- AllowMissionReplay = 2;
+ if (AllowMissionReplay == MISSION_RETRY_STAGE_WAIT_FOR_SCRIPT_TO_TERMINATE)
+ AllowMissionReplay = MISSION_RETRY_STAGE_START_PROCESSING;
// I am fairly sure they forgot to set return value here
}
#endif
@@ -2310,7 +2314,7 @@ int8 CRunningScript::ProcessCommands100To199(int32 command)
wchar* key = TheText.Get((char*)&CTheScripts::ScriptSpace[m_nIp]);
#ifdef MISSION_REPLAY
if (strcmp((char*)&CTheScripts::ScriptSpace[m_nIp], "M_FAIL") == 0 && CanAllowMissionReplay())
- AllowMissionReplay = 1;
+ AllowMissionReplay = MISSION_RETRY_STAGE_WAIT_FOR_SCRIPT_TO_TERMINATE;
#endif
m_nIp += KEY_LENGTH_IN_SCRIPT;
CollectParameters(&m_nIp, 2);
@@ -2973,7 +2977,7 @@ int8 CRunningScript::ProcessCommands200To299(int32 command)
bool CRunningScript::CanAllowMissionReplay()
{
- if (AllowMissionReplay)
+ if (AllowMissionReplay != MISSION_RETRY_STAGE_NORMAL)
return false;
if (CStats::LastMissionPassedName[0] == '\0')
return false;
@@ -2995,14 +2999,14 @@ uint32 AddExtraDeathDelay()
void RetryMission(int type, int unk)
{
- if (type == 0) {
+ if (type == MISSION_RETRY_TYPE_SUGGEST_TO_PLAYER) {
doingMissionRetry = true;
FrontEndMenuManager.m_nCurrScreen = MENUPAGE_MISSION_RETRY;
FrontEndMenuManager.RequestFrontEndStartUp();
}
- else if (type == 2) {
+ else if (type == MISSION_RETRY_TYPE_BEGIN_RESTARTING) {
doingMissionRetry = false;
- AllowMissionReplay = 6;
+ AllowMissionReplay = MISSION_RETRY_STAGE_START_RESTARTING;
CTheScripts::MissionCleanUp.Process();
}
}