mirror of
https://github.com/PrimeDecomp/prime.git
synced 2025-12-17 23:25:22 +00:00
Add CStateManager area_sorter
This commit is contained in:
@@ -33,6 +33,15 @@ public:
|
||||
virtual rstl::pair< rstl::auto_ptr< uchar >, int > IGetScriptingMemoryAlways() const = 0;
|
||||
};
|
||||
|
||||
enum EChain {
|
||||
kC_Invalid = -1,
|
||||
kC_ToDeallocate,
|
||||
kC_Deallocated,
|
||||
kC_Loading,
|
||||
kC_Alive,
|
||||
kC_AliveJudgement,
|
||||
};
|
||||
|
||||
class Dock;
|
||||
class CToken;
|
||||
class IDvdRequest;
|
||||
@@ -67,6 +76,22 @@ public:
|
||||
void DisableFog();
|
||||
};
|
||||
|
||||
class CConstChainIterator {
|
||||
const CGameArea* m_area;
|
||||
|
||||
public:
|
||||
CConstChainIterator() : m_area(nullptr) {}
|
||||
explicit CConstChainIterator(const CGameArea* area) : m_area(area) {}
|
||||
const CGameArea& operator*() const { return *m_area; }
|
||||
const CGameArea* operator->() const { return m_area; }
|
||||
CConstChainIterator& operator++() {
|
||||
m_area = m_area->GetNext();
|
||||
return *this;
|
||||
}
|
||||
bool operator!=(const CConstChainIterator& other) const { return m_area != other.m_area; }
|
||||
bool operator==(const CConstChainIterator& other) const { return m_area == other.m_area; }
|
||||
};
|
||||
|
||||
~CGameArea();
|
||||
const CTransform4f& IGetTM() const override;
|
||||
CAssetId IGetStringTableAssetId() const override;
|
||||
@@ -77,9 +102,12 @@ public:
|
||||
int IGetAreaSaveId() const override;
|
||||
rstl::pair< rstl::auto_ptr< uchar >, int > IGetScriptingMemoryAlways() const override;
|
||||
|
||||
TAreaId GetId() const { return x4_selfIdx; }
|
||||
const CTransform4f& GetTM() const { return xc_transform; }
|
||||
bool IsLoaded() const { return xf0_24_postConstructed; }
|
||||
bool IsActive() const { return xf0_25_active; }
|
||||
const CAABox& GetAABB() const { return x6c_aabb; }
|
||||
CGameArea* GetNext() const; // { return x130_next; }
|
||||
|
||||
void SetXRaySpeedAndTarget(float speed, float target);
|
||||
void SetThermalSpeedAndTarget(float speed, float target);
|
||||
|
||||
@@ -8,6 +8,7 @@
|
||||
#include "Kyoto/Input/CFinalInput.hpp"
|
||||
#include "Kyoto/Math/CVector2f.hpp"
|
||||
#include "Kyoto/Math/CVector2i.hpp"
|
||||
#include "Kyoto/Math/CFrustumPlanes.hpp"
|
||||
#include "Kyoto/TOneStatic.hpp"
|
||||
#include "Kyoto/TToken.hpp"
|
||||
|
||||
@@ -56,6 +57,7 @@ class CWorldLayerState;
|
||||
class CLight;
|
||||
class CDamageInfo;
|
||||
class CTexture;
|
||||
class CViewport;
|
||||
|
||||
namespace SL {
|
||||
class CSortedListManager;
|
||||
@@ -157,6 +159,7 @@ public:
|
||||
void SetActorAreaId(CActor& actor, TAreaId);
|
||||
TAreaId GetNextAreaId() const { return x8cc_nextAreaId; }
|
||||
void SetCurrentAreaId(TAreaId);
|
||||
TAreaId GetVisAreaId() const;
|
||||
|
||||
bool CanCreateProjectile(TUniqueId, EWeaponType, int) const;
|
||||
|
||||
@@ -238,6 +241,10 @@ public:
|
||||
void RemoveWeaponId(TUniqueId, EWeaponType);
|
||||
void AddWeaponId(TUniqueId, EWeaponType);
|
||||
|
||||
// Draw
|
||||
CFrustumPlanes SetupViewForDraw(const CViewport&) const;
|
||||
void DrawWorld() const;
|
||||
|
||||
// State transitions
|
||||
void DeferStateTransition(EStateManagerTransition t);
|
||||
void EnterMapScreen() { DeferStateTransition(kSMT_MapScreen); }
|
||||
|
||||
@@ -75,6 +75,7 @@ public:
|
||||
int IGetAreaCount() const override;
|
||||
|
||||
void SetLoadPauseState(bool);
|
||||
void TouchSky() const;
|
||||
|
||||
const CGameArea& GetAreaAlways(TAreaId id) const { return *x18_areas[id.Value()]; }
|
||||
CGameArea* Area(TAreaId id) { return x18_areas[id.Value()].get(); }
|
||||
@@ -88,6 +89,9 @@ public:
|
||||
static void PropogateAreaChain(CGameArea::EOcclusionState occlusionState, CGameArea* area,
|
||||
CWorld* world);
|
||||
|
||||
CGameArea::CConstChainIterator GetChainHead(EChain chain) const { return CGameArea::CConstChainIterator(x4c_chainHeads[size_t(chain)]); }
|
||||
static CGameArea::CConstChainIterator GetAliveAreasEnd();
|
||||
|
||||
private:
|
||||
enum Phase {
|
||||
kP_Loading,
|
||||
|
||||
Reference in New Issue
Block a user