Initial commit
This commit is contained in:
359
engines/hpl1/penumbra-overture/SaveHandler.h
Normal file
359
engines/hpl1/penumbra-overture/SaveHandler.h
Normal file
@@ -0,0 +1,359 @@
|
||||
/* ScummVM - Graphic Adventure Engine
|
||||
*
|
||||
* ScummVM is the legal property of its developers, whose names
|
||||
* are too numerous to list here. Please refer to the COPYRIGHT
|
||||
* file distributed with this source distribution.
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
*/
|
||||
|
||||
/*
|
||||
* Copyright (C) 2006-2010 - Frictional Games
|
||||
*
|
||||
* This file is part of Penumbra Overture.
|
||||
*/
|
||||
|
||||
#ifndef GAME_SAVE_HANDLER_H
|
||||
#define GAME_SAVE_HANDLER_H
|
||||
|
||||
#include "hpl1/engine/engine.h"
|
||||
|
||||
using namespace hpl;
|
||||
|
||||
class cInit;
|
||||
|
||||
#include "hpl1/penumbra-overture/GameTypes.h"
|
||||
#include "hpl1/penumbra-overture/SaveTypes.h"
|
||||
|
||||
class iGameEntity_SaveData;
|
||||
|
||||
//---------------------------------------------
|
||||
|
||||
class cMusic_GlobalSave : public iSerializable {
|
||||
kSerializableClassInit(cMusic_GlobalSave) public : tString msName;
|
||||
float mfVolume;
|
||||
bool mbLoop;
|
||||
};
|
||||
|
||||
//---------------------------------------------
|
||||
|
||||
class cGameMusic_GlobalSave : public iSerializable {
|
||||
kSerializableClassInit(cGameMusic_GlobalSave) public : tString msFile;
|
||||
bool mbLoop;
|
||||
float mfVolume;
|
||||
};
|
||||
|
||||
class cGameMusicHandler_GlobalSave : public iSerializable {
|
||||
kSerializableClassInit(cGameMusicHandler_GlobalSave) public : int mlCurrentMaxPrio;
|
||||
bool mbAttackPlaying;
|
||||
bool mbEnemyClosePlaying;
|
||||
|
||||
cContainerVec<cGameMusic_GlobalSave> mvGameMusic;
|
||||
};
|
||||
|
||||
//---------------------------------------------
|
||||
|
||||
class cNotebookTask_GlobalSave : public iSerializable {
|
||||
kSerializableClassInit(cNotebookTask_GlobalSave) public : tString msName;
|
||||
tWString msText;
|
||||
};
|
||||
|
||||
class cNotebookNote_GlobalSave : public iSerializable {
|
||||
kSerializableClassInit(cNotebookNote_GlobalSave) public : tWString msName;
|
||||
bool mbRead;
|
||||
tString msTextCat;
|
||||
tString msTextEntry;
|
||||
};
|
||||
|
||||
class cNotebook_GlobalSave : public iSerializable {
|
||||
kSerializableClassInit(cNotebook_GlobalSave) public :
|
||||
|
||||
cContainerList<cNotebookNote_GlobalSave> mlstNotes;
|
||||
cContainerList<cNotebookTask_GlobalSave> mlstTasks;
|
||||
};
|
||||
|
||||
//---------------------------------------------
|
||||
|
||||
class cInventorySlot_GlobalSave : public iSerializable {
|
||||
kSerializableClassInit(cInventorySlot_GlobalSave) public : tString msItemName;
|
||||
};
|
||||
|
||||
class cInventoryItem_GlobalSave : public iSerializable {
|
||||
kSerializableClassInit(cInventoryItem_GlobalSave) public : tString msName;
|
||||
tWString msGameName;
|
||||
tWString msDescription;
|
||||
|
||||
tString msSubType;
|
||||
|
||||
eGameItemType mItemType;
|
||||
|
||||
tString msEntityFile;
|
||||
tString msGfxObjectFile;
|
||||
|
||||
tString msHudModelFile;
|
||||
tString msHudModelName;
|
||||
|
||||
bool mbCanBeDropped;
|
||||
bool mbHasCount;
|
||||
int mlCount;
|
||||
};
|
||||
|
||||
class cInventory_GlobalSave : public iSerializable {
|
||||
kSerializableClassInit(cInventory_GlobalSave) public : bool mbNoteBookActive;
|
||||
|
||||
cContainerList<cInventorySlot_GlobalSave> mlstSlots;
|
||||
cContainerVec<cInventorySlot_GlobalSave> mvEquipSlots;
|
||||
|
||||
cContainerList<cInventoryItem_GlobalSave> mlstItems;
|
||||
};
|
||||
|
||||
//---------------------------------------------
|
||||
|
||||
class cSceneLoadedMap_GlobalSave : public iSerializable {
|
||||
kSerializableClassInit(cSceneLoadedMap_GlobalSave) public : tString msName;
|
||||
};
|
||||
|
||||
//---------------------------------------------
|
||||
|
||||
class cMapHandlerLoadedMap_GlobalSave : public iSerializable {
|
||||
kSerializableClassInit(cMapHandlerLoadedMap_GlobalSave) public : tString msName;
|
||||
double mfTime;
|
||||
};
|
||||
|
||||
/////////////
|
||||
|
||||
class cMapHandlerTimer_GlobalSave : public iSerializable {
|
||||
kSerializableClassInit(cMapHandlerTimer_GlobalSave) public : tString msName;
|
||||
tString msCallback;
|
||||
|
||||
bool mbGlobal;
|
||||
|
||||
float mfTime;
|
||||
|
||||
bool mbDeleteMe;
|
||||
bool mbPaused;
|
||||
};
|
||||
|
||||
/////////////
|
||||
|
||||
class cMapHandler_GlobalSave : public iSerializable {
|
||||
kSerializableClassInit(cMapHandler_GlobalSave);
|
||||
|
||||
public:
|
||||
double mfGameTime;
|
||||
tString msCurrentMap;
|
||||
|
||||
cContainerVec<cMapHandlerLoadedMap_GlobalSave> mvLoadedMaps;
|
||||
cContainerList<cMapHandlerTimer_GlobalSave> mlstTimers;
|
||||
};
|
||||
|
||||
//---------------------------------------------
|
||||
|
||||
class cPlayer_GlobalSave_CameraPS : public iSerializable {
|
||||
kSerializableClassInit(cPlayer_GlobalSave_CameraPS);
|
||||
|
||||
public:
|
||||
tString msName;
|
||||
tString msFile;
|
||||
};
|
||||
|
||||
class cPlayer_GlobalSave : public iSerializable {
|
||||
kSerializableClassInit(cPlayer_GlobalSave);
|
||||
|
||||
public:
|
||||
//////////////////////////////
|
||||
// Stats
|
||||
int mlStat_NumOfSaves;
|
||||
|
||||
//////////////////////////////
|
||||
// Global vars
|
||||
float mfForwardUpMul;
|
||||
float mfForwardRightMul;
|
||||
|
||||
float mfUpMul;
|
||||
float mfRightMul;
|
||||
|
||||
bool mbPickAtPoint;
|
||||
bool mbRotateWithPlayer;
|
||||
bool mbUseNormalMass;
|
||||
|
||||
float mfGrabMassMul;
|
||||
|
||||
//////////////////////////////
|
||||
// Private
|
||||
bool mbActive;
|
||||
|
||||
float mfHeightAdd;
|
||||
|
||||
float mfSpeedMul;
|
||||
float mfHealthSpeedMul;
|
||||
|
||||
float mfHeadMoveSizeMul;
|
||||
float mfHeadMoveSpeedMul;
|
||||
|
||||
ePlayerState mState;
|
||||
|
||||
ePlayerMoveState mMoveState;
|
||||
|
||||
eCrossHairState mCrossHairState;
|
||||
|
||||
bool mbItemFlash;
|
||||
|
||||
float mfHealth;
|
||||
|
||||
float mfPower;
|
||||
|
||||
float mfMass;
|
||||
|
||||
cContainerVec<cPlayer_GlobalSave_CameraPS> mvOnCameraPS;
|
||||
|
||||
//////////////////////////////
|
||||
// Lights
|
||||
bool mbFlashlightActive;
|
||||
bool mbFlashlightDisabled;
|
||||
bool mbGlowstickActive;
|
||||
bool mbFlareActive;
|
||||
float mfFlareTime;
|
||||
|
||||
//////////////////////////////
|
||||
// Body and Camera Specific
|
||||
cVector3f mvPosition;
|
||||
float mfYaw;
|
||||
float mfPitch;
|
||||
};
|
||||
|
||||
//---------------------------------------------
|
||||
|
||||
class cSavedWorld : public iSerializable {
|
||||
kSerializableClassInit_nodestructor(cSavedWorld) public : ~cSavedWorld();
|
||||
|
||||
void Reset();
|
||||
|
||||
tString msName;
|
||||
tWString msGameName;
|
||||
|
||||
// Ambient color
|
||||
cColor mAmbientColor;
|
||||
|
||||
// Fog
|
||||
bool mbFogActive;
|
||||
float mfFogStartDist;
|
||||
float mfFogEndDist;
|
||||
cColor mFogColor;
|
||||
bool mbFogCulling;
|
||||
|
||||
// Skybox
|
||||
bool mbSkyboxActive;
|
||||
cColor mSkyboxColor;
|
||||
tString msSkyboxFile;
|
||||
|
||||
// Script variables
|
||||
cContainerList<cScriptVar> mlstVars;
|
||||
|
||||
// Inventory variables
|
||||
cContainerList<cInventoryUseCallback> mlstUseCallbacks;
|
||||
cContainerList<cInventoryPickupCallback> mlstPickupCallbacks;
|
||||
cContainerList<cInventoryCombineCallback> mlstCombineCallbacks;
|
||||
|
||||
// Player collider callbacks
|
||||
cContainerList<cSaveGame_cGameCollideScript> mlstCollideCallbacks;
|
||||
|
||||
// Local Timers
|
||||
cContainerList<cGameTimer> mlstTimers;
|
||||
|
||||
// Entities
|
||||
cContainerList<iGameEntity_SaveData *> mlstEntities;
|
||||
|
||||
// Engine types
|
||||
cContainerList<cEngineLight_SaveData> mlstLights;
|
||||
cContainerList<cEnginePS_SaveData> mlstPS;
|
||||
cContainerList<cEngineBeam_SaveData> mlstBeams;
|
||||
cContainerList<cEngineSound_SaveData> mlstSounds;
|
||||
|
||||
cContainerList<cEngineJoint_SaveData> mlstJoints;
|
||||
|
||||
bool PSExists(cParticleSystem3D *apPS);
|
||||
bool BeamExists(cBeam *apPS);
|
||||
bool SoundExists(cSoundEntity *apSound);
|
||||
bool JointExists(iPhysicsJoint *apJoint);
|
||||
};
|
||||
|
||||
//----------------------------
|
||||
|
||||
class cSavedGame : public iSerializable {
|
||||
kSerializableClassInit_nodestructor(cSavedGame) public : ~cSavedGame();
|
||||
|
||||
void Reset();
|
||||
void ResetWorlds();
|
||||
void ResetGlobalData();
|
||||
cSavedWorld *GetSavedWorld(const tString &asName);
|
||||
|
||||
// Variables:
|
||||
eGameDifficulty mDifficulty;
|
||||
|
||||
tString msOnRadioEndCallback;
|
||||
|
||||
cPlayer_GlobalSave mPlayer;
|
||||
cMapHandler_GlobalSave mMapHandler;
|
||||
cInventory_GlobalSave mInventory;
|
||||
cNotebook_GlobalSave mNotebook;
|
||||
cGameMusicHandler_GlobalSave mGameMusicHandler;
|
||||
cMusic_GlobalSave mMusic;
|
||||
|
||||
cContainerList<cSceneLoadedMap_GlobalSave> mvSceneLoadedMap;
|
||||
cContainerList<cScriptVar> mlstScriptVars;
|
||||
|
||||
cContainerList<cSavedWorld *> mlstWorlds;
|
||||
};
|
||||
|
||||
//----------------------------
|
||||
|
||||
class cSaveHandler : public iUpdateable {
|
||||
public:
|
||||
cSaveHandler(cInit *apInit);
|
||||
~cSaveHandler();
|
||||
|
||||
static cDate parseDate(const Common::String &saveFile);
|
||||
|
||||
void SaveData(const tString &asName);
|
||||
void LoadData(const tString &asName);
|
||||
|
||||
void SaveGameToFile(const tWString &asFile);
|
||||
void LoadGameFromFile(const tWString &asFile, bool drawLoadingScreen = true);
|
||||
|
||||
void AutoSave(const tWString &asDir, int alMaxSaves);
|
||||
void AutoLoad(const tWString &asDir);
|
||||
|
||||
void ClearSavedMaps();
|
||||
|
||||
void OnWorldLoad();
|
||||
void OnStart();
|
||||
void Reset();
|
||||
|
||||
void OnExit();
|
||||
|
||||
const tWString &GetSaveDir() { return msSaveDir; }
|
||||
|
||||
void DeleteOldestIfMax(const tWString &asDir, const tWString &asMask, int alMaxFiles);
|
||||
tWString GetLatest(const tWString &asMask);
|
||||
|
||||
private:
|
||||
cInit *mpInit;
|
||||
|
||||
cSavedGame *mpSavedGame;
|
||||
tWString msSaveDir;
|
||||
};
|
||||
|
||||
#endif // GAME_SAVE_HANDLER_H
|
||||
Reference in New Issue
Block a user