summaryrefslogtreecommitdiffstats
path: root/src/modelinfo/ModelInfo.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/modelinfo/ModelInfo.h')
-rw-r--r--src/modelinfo/ModelInfo.h21
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);
};