metaforce/Runtime/CWorldSaveGameInfo.hpp

51 lines
1.4 KiB
C++
Raw Permalink Normal View History

2018-10-06 20:42:33 -07:00
#pragma once
2016-06-23 12:40:09 -07:00
#include <vector>
#include "Runtime/CFactoryMgr.hpp"
#include "Runtime/RetroTypes.hpp"
2016-07-23 18:51:15 -07:00
2021-04-10 01:42:06 -07:00
namespace metaforce {
2016-07-24 00:39:58 -07:00
class CWorldSaveGameInfo {
2016-07-24 00:39:58 -07:00
public:
enum class EScanCategory { None, Data, Lore, Creature, Research, Artifact };
2018-12-07 21:30:43 -08:00
struct SScanState {
CAssetId x0_id;
EScanCategory x4_category;
};
struct SLayerState {
TAreaId x0_area;
u32 x4_layer;
};
2016-07-24 00:39:58 -07:00
private:
2018-12-07 21:30:43 -08:00
u32 x0_areaCount;
std::vector<TEditorId> x4_cinematics;
std::vector<TEditorId> x14_relays;
std::vector<SLayerState> x24_layers;
std::vector<TEditorId> x34_doors;
std::vector<SScanState> x44_scans;
2016-07-24 00:39:58 -07:00
public:
explicit CWorldSaveGameInfo(CInputStream& in);
2018-12-07 21:30:43 -08:00
u32 GetAreaCount() const;
u32 GetCinematicCount() const;
s32 GetCinematicIndex(const TEditorId& id) const;
const std::vector<TEditorId>& GetCinematics() const { return x4_cinematics; }
const std::vector<TEditorId>& GetDoors() const { return x34_doors; }
const std::vector<SScanState>& GetScans() const { return x44_scans; }
u32 GetRelayCount() const;
s32 GetRelayIndex(const TEditorId& id) const;
TEditorId GetRelayEditorId(u32 idx) const;
u32 GetDoorCount() const;
s32 GetDoorIndex(const TEditorId& id) const;
2016-06-23 12:40:09 -07:00
};
CFactoryFnReturn FWorldSaveGameInfoFactory(const SObjectTag& tag, CInputStream& in, const CVParamTransfer& param,
2021-06-07 12:29:18 -07:00
CObjectReference* selfRef);
2021-04-10 01:42:06 -07:00
} // namespace metaforce