mirror of
https://github.com/GTAmodding/re3.git
synced 2024-11-25 10:43:43 +00:00
small refactoring
This commit is contained in:
parent
15f770531c
commit
63046894b0
8 changed files with 73 additions and 42 deletions
|
@ -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();
|
||||
}
|
||||
}
|
||||
|
|
|
@ -584,6 +584,11 @@ public:
|
|||
static void SwitchToMission(int32 mission);
|
||||
#endif
|
||||
|
||||
#ifdef USE_DEBUG_SCRIPT_LOADER
|
||||
static int ScriptToLoad;
|
||||
static int OpenScript();
|
||||
#endif
|
||||
|
||||
#ifdef USE_ADVANCED_SCRIPT_DEBUG_OUTPUT
|
||||
static void LogAfterScriptInitializing();
|
||||
static void LogBeforeScriptProcessing();
|
||||
|
@ -601,9 +606,21 @@ extern bool doingMissionRetry;
|
|||
|
||||
uint32 AddExtraDeathDelay();
|
||||
void RetryMission(int, int);
|
||||
#endif
|
||||
|
||||
#ifdef USE_DEBUG_SCRIPT_LOADER
|
||||
int open_script();
|
||||
extern int scriptToLoad;
|
||||
#endif
|
||||
enum {
|
||||
MISSION_RETRY_TYPE_SUGGEST_TO_PLAYER = 0,
|
||||
MISSION_RETRY_TYPE_1,
|
||||
MISSION_RETRY_TYPE_BEGIN_RESTARTING
|
||||
};
|
||||
|
||||
enum {
|
||||
MISSION_RETRY_STAGE_NORMAL = 0,
|
||||
MISSION_RETRY_STAGE_WAIT_FOR_SCRIPT_TO_TERMINATE,
|
||||
MISSION_RETRY_STAGE_START_PROCESSING,
|
||||
MISSION_RETRY_STAGE_WAIT_FOR_DELAY,
|
||||
MISSION_RETRY_STAGE_WAIT_FOR_MENU,
|
||||
MISSION_RETRY_STAGE_WAIT_FOR_USER,
|
||||
MISSION_RETRY_STAGE_START_RESTARTING,
|
||||
MISSION_RETRY_STAGE_WAIT_FOR_TIMER_AFTER_RESTART,
|
||||
};
|
||||
#endif
|
||||
|
|
|
@ -1239,10 +1239,10 @@ void CRunningScript::DoDeatharrestCheck()
|
|||
if (!pPlayer->IsRestartingAfterDeath() && !pPlayer->IsRestartingAfterArrest() && !CTheScripts::UpsideDownCars.AreAnyCarsUpsideDown())
|
||||
return;
|
||||
#ifdef MISSION_REPLAY
|
||||
if (AllowMissionReplay != 0)
|
||||
if (AllowMissionReplay != MISSION_RETRY_STAGE_NORMAL)
|
||||
return;
|
||||
if (CanAllowMissionReplay())
|
||||
AllowMissionReplay = 1;
|
||||
AllowMissionReplay = MISSION_RETRY_STAGE_WAIT_FOR_SCRIPT_TO_TERMINATE;
|
||||
#endif
|
||||
script_assert(m_nStackPointer > 0);
|
||||
while (m_nStackPointer > 1)
|
||||
|
|
|
@ -82,8 +82,8 @@ int8 CRunningScript::ProcessCommands1000To1099(int32 command)
|
|||
{
|
||||
CollectParameters(&m_nIp, 1);
|
||||
#ifdef MISSION_REPLAY
|
||||
AllowMissionReplay = 0;
|
||||
SaveGameForPause(3);
|
||||
AllowMissionReplay = MISSION_RETRY_STAGE_NORMAL;
|
||||
SaveGameForPause(SAVE_TYPE_QUICKSAVE_FOR_MISSION_REPLAY);
|
||||
#endif
|
||||
CPlayerInfo* pPlayerInfo = &CWorld::Players[ScriptParams[0]];
|
||||
CPad::GetPad(ScriptParams[0])->SetDisablePlayerControls(PLAYERCONTROL_CUTSCENE);
|
||||
|
@ -304,10 +304,10 @@ int8 CRunningScript::ProcessCommands1000To1099(int32 command)
|
|||
#endif
|
||||
CTimer::Suspend();
|
||||
int offset = CTheScripts::MultiScriptArray[ScriptParams[0]];
|
||||
CFileMgr::ChangeDir("\\");
|
||||
#ifdef USE_DEBUG_SCRIPT_LOADER
|
||||
int handle = open_script();
|
||||
int handle = CTheScripts::OpenScript();
|
||||
#else
|
||||
CFileMgr::ChangeDir("\\");
|
||||
int handle = CFileMgr::OpenFile("data\\main.scm", "rb");
|
||||
#endif
|
||||
CFileMgr::Seek(handle, offset, 0);
|
||||
|
|
|
@ -1423,10 +1423,10 @@ CTheScripts::SwitchToMission(int32 mission)
|
|||
#endif
|
||||
CTimer::Suspend();
|
||||
int offset = CTheScripts::MultiScriptArray[mission];
|
||||
CFileMgr::ChangeDir("\\");
|
||||
#ifdef USE_DEBUG_SCRIPT_LOADER
|
||||
int handle = open_script();
|
||||
int handle = OpenScript();
|
||||
#else
|
||||
CFileMgr::ChangeDir("\\");
|
||||
int handle = CFileMgr::OpenFile("data\\main.scm", "rb");
|
||||
#endif
|
||||
CFileMgr::Seek(handle, offset, 0);
|
||||
|
|
|
@ -4182,7 +4182,7 @@ CMenuManager::Process(void)
|
|||
#endif
|
||||
if (CheckSlotDataValid(m_nCurrSaveSlot)) {
|
||||
#ifdef USE_DEBUG_SCRIPT_LOADER
|
||||
scriptToLoad = 0;
|
||||
CTheScripts::ScriptToLoad = 0;
|
||||
#endif
|
||||
#ifdef PC_PLAYER_CONTROLS
|
||||
TheCamera.m_bUseMouse3rdPerson = m_ControlMethod == CONTROL_STANDARD;
|
||||
|
@ -4312,12 +4312,12 @@ CMenuManager::ProcessButtonPresses(void)
|
|||
#ifdef USE_DEBUG_SCRIPT_LOADER
|
||||
if (m_nCurrScreen == MENUPAGE_START_MENU || m_nCurrScreen == MENUPAGE_NEW_GAME || m_nCurrScreen == MENUPAGE_NEW_GAME_RELOAD) {
|
||||
if (CPad::GetPad(0)->GetChar('R')) {
|
||||
scriptToLoad = 1;
|
||||
CTheScripts::ScriptToLoad = 1;
|
||||
DoSettingsBeforeStartingAGame();
|
||||
return;
|
||||
}
|
||||
if (CPad::GetPad(0)->GetChar('D')) {
|
||||
scriptToLoad = 2;
|
||||
CTheScripts::ScriptToLoad = 2;
|
||||
DoSettingsBeforeStartingAGame();
|
||||
return;
|
||||
}
|
||||
|
|
|
@ -1153,7 +1153,9 @@ void DisplaySaveResult(int unk, char* name)
|
|||
|
||||
bool SaveGameForPause(int type)
|
||||
{
|
||||
if (AllowMissionReplay != 0 || type != 3 && WaitForSave > CTimer::GetTimeInMilliseconds())
|
||||
if (AllowMissionReplay != MISSION_RETRY_STAGE_NORMAL)
|
||||
return false;
|
||||
if (type != SAVE_TYPE_QUICKSAVE_FOR_MISSION_REPLAY && WaitForSave > CTimer::GetTimeInMilliseconds())
|
||||
return false;
|
||||
WaitForSave = 0;
|
||||
if (gGameState != GS_PLAYING_GAME || CTheScripts::IsPlayerOnAMission() || CStats::LastMissionPassedName[0] == '\0') {
|
||||
|
|
|
@ -52,4 +52,12 @@ const char TopLineEmptyFile[] = "THIS FILE IS NOT VALID YET";
|
|||
extern int8 IsQuickSave; // originally int
|
||||
|
||||
bool SaveGameForPause(int);
|
||||
|
||||
enum {
|
||||
SAVE_TYPE_NORMAL,
|
||||
SAVE_TYPE_QUICKSAVE,
|
||||
SAVE_TYPE_2,
|
||||
SAVE_TYPE_QUICKSAVE_FOR_MISSION_REPLAY
|
||||
};
|
||||
|
||||
#endif
|
||||
|
|
Loading…
Reference in a new issue