diff options
Diffstat (limited to 'src/modelinfo/ModelInfo.h')
-rw-r--r-- | src/modelinfo/ModelInfo.h | 21 |
1 files changed, 20 insertions, 1 deletions
diff --git a/src/modelinfo/ModelInfo.h b/src/modelinfo/ModelInfo.h index a0ee0015..60a5e98f 100644 --- a/src/modelinfo/ModelInfo.h +++ b/src/modelinfo/ModelInfo.h @@ -8,11 +8,15 @@ #include "ClumpModelInfo.h" #include "PedModelInfo.h" #include "VehicleModelInfo.h" +#include "XtraCompsModelInfo.h" #include "templates.h" +extern C2dEffect *gp2dEffects; + class CModelInfo { - static CBaseModelInfo *ms_modelInfoPtrs[MODELINFOSIZE]; + static CBaseModelInfo **ms_modelInfoPtrs; + static int32 msNumModelInfos; static CStore<CSimpleModelInfo, SIMPLEMODELSIZE> ms_simpleModelStore; static CStore<CTimeModelInfo, TIMEMODELSIZE> ms_timeModelStore; static CStore<CWeaponModelInfo, WEAPONMODELSIZE> ms_weaponModelStore; @@ -22,6 +26,10 @@ class CModelInfo static CStore<C2dEffect, TWODFXSIZE> ms_2dEffectStore; public: + // these fields are in the resource image + int32 resNumModelInfos; + CBaseModelInfo **resModelInfoPtrs; + static void Initialise(void); static void ShutDown(void); @@ -33,12 +41,18 @@ public: static CVehicleModelInfo *AddVehicleModel(int id); static CStore<C2dEffect, TWODFXSIZE> &Get2dEffectStore(void) { return ms_2dEffectStore; } + static C2dEffect *Get2dEffect(int32 id) { return &gp2dEffects[id]; } + static int32 Get2dEffectIndex(C2dEffect *effect) { return effect - gp2dEffects; } + static int32 GetNumModelInfos(void) { return msNumModelInfos; } static CBaseModelInfo *GetModelInfo(const char *name, int *id); static CBaseModelInfo *GetModelInfo(int id){ + if(id < 0 || id >= msNumModelInfos) + return nil; return ms_modelInfoPtrs[id]; } static CBaseModelInfo *GetModelInfo(const char *name, int minIndex, int maxIndex); + static CBaseModelInfo *GetModelInfoFromHashKey(uint32 hashKey, int *id); static CColModel *GetColModel(int id){ return ms_modelInfoPtrs[id]->GetColModel(); } @@ -46,7 +60,12 @@ public: static bool IsBoatModel(int32 id); static bool IsBikeModel(int32 id); static bool IsCarModel(int32 id); + static bool IsTrainModel(int32 id); static bool IsHeliModel(int32 id); static bool IsPlaneModel(int32 id); static void ReInit2dEffects(); + + static void Load(uint32 numModelInfos, CBaseModelInfo **modelInfos); + static void Load2dEffects(uint32 numEffects, C2dEffect *effects); + CModelInfo *Write(base::cRelocatableChunkWriter &writer); }; |