metaforce/Runtime/CGameState.hpp

70 lines
1.9 KiB
C++
Raw Normal View History

2016-04-13 06:07:23 +00:00
#ifndef __URDE_CGAMESTATE_HPP__
#define __URDE_CGAMESTATE_HPP__
2015-08-17 05:26:58 +00:00
2015-08-17 20:33:58 +00:00
#include <memory>
2015-08-20 02:52:07 +00:00
#include "CBasics.hpp"
2015-08-17 20:33:58 +00:00
#include "CPlayerState.hpp"
#include "CGameOptions.hpp"
#include "CRelayTracker.hpp"
2016-04-16 23:48:29 +00:00
#include "World/CWorldTransManager.hpp"
#include "AutoMapper/CMapWorldInfo.hpp"
2016-03-04 23:04:53 +00:00
namespace urde
{
class CWorldState
{
ResId x0_mlvlId;
TAreaId x4_areaId;
std::shared_ptr<CRelayTracker> x8_relayTracker;
std::shared_ptr<CMapWorldInfo> xc_mapWorldInfo;
/* std::shared_ptr<> x14_ */
public:
CWorldState(ResId id) : x0_mlvlId(id) {}
ResId GetWorldAssetId() const {return x0_mlvlId;}
void SetAreaId(TAreaId aid) { x4_areaId = aid; }
const TAreaId& GetCurrentAreaId() const { return x4_areaId; }
std::shared_ptr<CRelayTracker> RelayTracker() { return x8_relayTracker; }
std::shared_ptr<CMapWorldInfo> MapWorldInfo() { return xc_mapWorldInfo; }
};
2015-08-17 05:26:58 +00:00
class CGameState
{
friend class CStateManager;
2016-08-15 20:58:07 +00:00
bool x0_[128] = {};
ResId x84_mlvlId = -1;
std::vector<CWorldState> x88_worldStates;
2016-08-15 20:58:07 +00:00
std::shared_ptr<CPlayerState> x98_playerState;
std::shared_ptr<CWorldTransManager> x9c_transManager;
2015-08-17 20:33:58 +00:00
CGameOptions m_gameOpts;
2016-03-28 08:54:02 +00:00
double xa0_playTime;
u32 xa4_;
/* x17c_ */
/* x1f8_ */
union
{
struct
{
bool x228_24_;
bool x228_25_deferPowerupInit;
};
u8 _dummy = 0;
};
2015-08-17 20:33:58 +00:00
public:
CGameState();
2016-03-19 19:19:43 +00:00
CGameState(CBitStreamReader& stream);
void SetCurrentWorldId(unsigned int id);
2016-08-16 22:49:19 +00:00
std::shared_ptr<CPlayerState> GetPlayerState() {return x98_playerState;}
std::shared_ptr<CWorldTransManager> GetWorldTransitionManager() {return x9c_transManager;}
2016-03-28 08:54:02 +00:00
void SetTotalPlayTime(float time);
CWorldState& StateForWorld(ResId mlvlId);
CWorldState& CurrentWorldState() { return StateForWorld(x84_mlvlId); }
2016-08-15 20:58:07 +00:00
ResId CurrentWorldAssetId() const { return x84_mlvlId; }
2015-08-17 05:26:58 +00:00
};
}
2016-04-13 06:07:23 +00:00
#endif // __URDE_CGAMESTATE_HPP__