Merge pull request #298 from Sergeanur/save

save
This commit is contained in:
aap
2020-01-31 12:57:25 +01:00
committed by GitHub
12 changed files with 614 additions and 61 deletions

View File

@ -16,7 +16,7 @@
#include "ModelIndices.h"
#include "Camera.h"
#include "win.h"
#include "PCSave.h"
#include "GenericGameStorage.h"
CControllerConfigManager &ControlsManager = *(CControllerConfigManager*)0x8F43A4;

View File

@ -15,7 +15,7 @@
#include "Streaming.h"
#include "TxdStore.h"
#include "General.h"
#include "PCSave.h"
#include "GenericGameStorage.h"
#include "Script.h"
#include "Camera.h"
#include "MenuScreens.h"
@ -448,7 +448,7 @@ void CMenuManager::Draw()
str = TheText.Get(aScreens[m_nCurrScreen].m_aEntries[0].m_EntryName);
break;
case MENUPAGE_SAVE_OVERWRITE_CONFIRM:
if (Slots[m_nCurrSaveSlot] == 1)
if (Slots[m_nCurrSaveSlot] == SLOT_EMPTY)
str = TheText.Get("FESZ_QZ");
else
str = TheText.Get(aScreens[m_nCurrScreen].m_aEntries[0].m_EntryName);
@ -588,7 +588,7 @@ void CMenuManager::Draw()
CFont::SetRightJustifyOff();
textToPrint[MENUCOLUMN_LEFT] = GetNameOfSavedGame(i - 1);
if (Slots[i-1] != 1)
if (Slots[i-1] != SLOT_EMPTY)
textToPrint[MENUCOLUMN_RIGHT] = GetSavedGameDateAndTime(i - 1);
if (textToPrint[MENUCOLUMN_LEFT][0] == '\0') {
@ -2228,40 +2228,37 @@ void CMenuManager::ResetHelperText()
void CMenuManager::SaveLoadFileError_SetUpErrorScreen()
{
// TO-DO: Enum
switch (PcSaveHelper.m_nHelper) {
case 1:
case 2:
case 3:
switch (PcSaveHelper.nErrorCode) {
case SAVESTATUS_ERR_SAVE_CREATE:
case SAVESTATUS_ERR_SAVE_WRITE:
case SAVESTATUS_ERR_SAVE_CLOSE:
m_nPrevScreen = m_nCurrScreen;
m_nCurrScreen = MENUPAGE_SAVE_FAILED;
m_nCurrOption = 0;
m_nScreenChangeDelayTimer = CTimer::GetTimeInMillisecondsPauseMode();
break;
case 4:
case 5:
case 6:
case SAVESTATUS_ERR_LOAD_OPEN:
case SAVESTATUS_ERR_LOAD_READ:
case SAVESTATUS_ERR_LOAD_CLOSE:
m_nPrevScreen = m_nCurrScreen;
m_nCurrScreen = MENUPAGE_LOAD_FAILED;
m_nCurrOption = 0;
m_nScreenChangeDelayTimer = CTimer::GetTimeInMillisecondsPauseMode();
break;
case 7:
case SAVESTATUS_ERR_DATA_INVALID:
m_nPrevScreen = m_nCurrScreen;
m_nCurrScreen = MENUPAGE_LOAD_FAILED_2;
m_nCurrOption = 0;
m_nScreenChangeDelayTimer = CTimer::GetTimeInMillisecondsPauseMode();
break;
case 8:
case 9:
case 10:
case SAVESTATUS_DELETEFAILED8:
case SAVESTATUS_DELETEFAILED9:
case SAVESTATUS_DELETEFAILED10:
m_nPrevScreen = m_nCurrScreen;
m_nCurrScreen = MENUPAGE_DELETE_FAILED;
m_nCurrOption = 0;
m_nScreenChangeDelayTimer = CTimer::GetTimeInMillisecondsPauseMode();
break;
default:
return;
}
}

View File

@ -1,20 +0,0 @@
#include "common.h"
#include "patcher.h"
#include "Frontend.h"
#include "PCSave.h"
WRAPPER void C_PcSave::SetSaveDirectory(const char *path) { EAXJMP(0x591EA0); }
WRAPPER int8 C_PcSave::PopulateSlotInfo() { EAXJMP(0x592090); }
WRAPPER int8 C_PcSave::DeleteSlot(int) { EAXJMP(0x5922F0); }
WRAPPER int8 C_PcSave::SaveSlot(int) { EAXJMP(0x591EC0); }
WRAPPER int8 CheckSlotDataValid(int) { EAXJMP(0x591A40); }
WRAPPER wchar *GetNameOfSavedGame(int counter) { EAXJMP(0x591B60); }
WRAPPER wchar *GetSavedGameDateAndTime(int counter) { EAXJMP(0x591B50); }
C_PcSave PcSaveHelper = *(C_PcSave*)0x8E2C60;
int *Slots = (int*)0x728040;
int *SlotFileName = (int*)0x6F07C8;
int *SlotSaveDate = (int*)0x72B858;

View File

@ -1,23 +0,0 @@
#pragma once
class C_PcSave
{
public:
int32 m_nHelper;
static void SetSaveDirectory(const char *path);
int8 PopulateSlotInfo();
int8 DeleteSlot(int);
int8 SaveSlot(int);
};
extern int8 CheckSlotDataValid(int);
extern wchar *GetNameOfSavedGame(int counter);
extern wchar *GetSavedGameDateAndTime(int counter);
extern C_PcSave PcSaveHelper;
extern int *Slots;
extern int *SlotFileName;
extern int *SlotSaveDate;
const char TopLineEmptyFile[] = "THIS FILE IS NOT VALID YET";

View File

@ -19,6 +19,8 @@ extern wchar *gUString2;
extern bool &b_FoundRecentSavedGameWantToLoad;
extern bool gbPrintShite;
extern bool &gbModelViewer;
extern bool &StillToFadeOut;
extern bool &JustLoadedDontFadeInYet;
class CSprite2d;