2016-04-13 06:07:23 +00:00
|
|
|
#ifndef __URDE_CMEMORYCARDSYS_HPP__
|
|
|
|
#define __URDE_CMEMORYCARDSYS_HPP__
|
2015-08-17 05:26:58 +00:00
|
|
|
|
2016-09-25 01:58:20 +00:00
|
|
|
#include "CToken.hpp"
|
|
|
|
#include "World/CWorld.hpp"
|
|
|
|
#include "CGameHintInfo.hpp"
|
2016-09-30 22:43:19 +00:00
|
|
|
#include "CSaveWorld.hpp"
|
2016-09-25 01:58:20 +00:00
|
|
|
#include <vector>
|
|
|
|
|
2016-03-04 23:04:53 +00:00
|
|
|
namespace urde
|
2015-08-17 22:05:00 +00:00
|
|
|
{
|
2016-09-25 01:58:20 +00:00
|
|
|
class CDummyWorld;
|
2016-09-30 22:43:19 +00:00
|
|
|
class CStringTable;
|
2016-09-25 01:58:20 +00:00
|
|
|
|
|
|
|
class CSaveWorldMemory
|
|
|
|
{
|
2016-09-30 22:43:19 +00:00
|
|
|
friend class CMemoryCardSys;
|
|
|
|
ResId x0_strgId = -1;
|
|
|
|
ResId x4_savwId = -1;
|
|
|
|
u32 x8_areaCount;
|
2016-10-09 07:45:04 +00:00
|
|
|
std::vector<ResId> xc_areaIds;
|
|
|
|
std::vector<CWorldLayers::Area> x1c_defaultLayerStates;
|
2016-09-30 22:43:19 +00:00
|
|
|
TLockedToken<CStringTable> x2c_worldName; /* used to be optional */
|
|
|
|
TLockedToken<CSaveWorld> x3c_saveWorld; /* used to be optional */
|
2016-09-25 01:58:20 +00:00
|
|
|
|
|
|
|
public:
|
2016-09-30 22:43:19 +00:00
|
|
|
ResId GetSaveWorldAssetId() const { return x4_savwId; }
|
|
|
|
u32 GetAreaCount() const { return x8_areaCount; }
|
|
|
|
|
|
|
|
const TLockedToken<CStringTable>& GetWorldName() const { return x2c_worldName; }
|
|
|
|
const TLockedToken<CSaveWorld>& GetSaveWorld() const { return x3c_saveWorld; }
|
2016-09-25 01:58:20 +00:00
|
|
|
};
|
|
|
|
|
2016-09-30 22:43:19 +00:00
|
|
|
class CSaveWorldIntermediate
|
2016-09-25 01:58:20 +00:00
|
|
|
{
|
2016-09-30 22:43:19 +00:00
|
|
|
friend class CMemoryCardSys;
|
2016-10-08 20:32:36 +00:00
|
|
|
ResId x0_mlvlId;
|
|
|
|
ResId x4_strgId;
|
|
|
|
ResId x8_savwId;
|
|
|
|
std::vector<ResId> xc_areaIds;
|
2016-10-09 07:45:04 +00:00
|
|
|
std::vector<CWorldLayers::Area> x1c_defaultLayerStates;
|
2016-09-30 22:43:19 +00:00
|
|
|
std::unique_ptr<CDummyWorld> x2c_dummyWorld;
|
|
|
|
TLockedToken<CSaveWorld> x34_saveWorld; /* Used to be auto_ptr */
|
|
|
|
|
|
|
|
public:
|
|
|
|
CSaveWorldIntermediate(ResId mlvl, ResId savw);
|
|
|
|
|
|
|
|
bool InitializePump();
|
2016-09-25 01:58:20 +00:00
|
|
|
};
|
2015-08-17 22:05:00 +00:00
|
|
|
|
2015-08-17 05:26:58 +00:00
|
|
|
class CMemoryCardSys
|
|
|
|
{
|
2016-09-25 01:58:20 +00:00
|
|
|
TLockedToken<CGameHintInfo> x0_hints;
|
2016-09-30 22:43:19 +00:00
|
|
|
std::vector<std::pair<ResId, CSaveWorldMemory>> xc_memoryWorlds; /* MLVL as key */
|
|
|
|
std::experimental::optional<std::vector<CSaveWorldIntermediate>> x1c_worldInter; /* used to be auto_ptr of vector */
|
|
|
|
std::unordered_map<ResId, CSaveWorld::EScanCategory> x20_scanStates;
|
2016-09-25 01:58:20 +00:00
|
|
|
public:
|
|
|
|
const std::vector<CGameHintInfo::CGameHint>& GetHints() const { return x0_hints->GetHints(); }
|
2016-09-30 22:43:19 +00:00
|
|
|
const std::vector<std::pair<ResId, CSaveWorldMemory>>& GetMemoryWorlds() const { return xc_memoryWorlds; }
|
2016-09-25 01:58:20 +00:00
|
|
|
CMemoryCardSys();
|
2016-09-30 22:43:19 +00:00
|
|
|
bool InitializePump();
|
2015-08-17 05:26:58 +00:00
|
|
|
};
|
|
|
|
|
2015-08-17 22:05:00 +00:00
|
|
|
}
|
|
|
|
|
2016-04-13 06:07:23 +00:00
|
|
|
#endif // __URDE_CMEMORYCARDSYS_HPP__
|