summaryrefslogtreecommitdiffstats
path: root/src/modelinfo
diff options
context:
space:
mode:
Diffstat (limited to 'src/modelinfo')
-rw-r--r--src/modelinfo/BaseModelInfo.cpp12
-rw-r--r--src/modelinfo/BaseModelInfo.h11
-rw-r--r--src/modelinfo/ModelIndices.h334
-rw-r--r--src/modelinfo/ModelInfo.cpp7
-rw-r--r--src/modelinfo/SimpleModelInfo.cpp2
-rw-r--r--src/modelinfo/VehicleModelInfo.h1
6 files changed, 202 insertions, 165 deletions
diff --git a/src/modelinfo/BaseModelInfo.cpp b/src/modelinfo/BaseModelInfo.cpp
index f05be242..d92e4941 100644
--- a/src/modelinfo/BaseModelInfo.cpp
+++ b/src/modelinfo/BaseModelInfo.cpp
@@ -1,10 +1,12 @@
#include "common.h"
#include "templates.h"
+#include "main.h"
#include "TxdStore.h"
#include "2dEffect.h"
#include "BaseModelInfo.h"
#include "ModelInfo.h"
+#include "KeyGen.h"
//--MIAMI: file done
@@ -18,6 +20,7 @@ CBaseModelInfo::CBaseModelInfo(ModelInfoType type)
m_type = type;
m_num2dEffects = 0;
m_bOwnsColModel = false;
+ m_name = new char[MAX_MODEL_NAME];
}
void
@@ -101,3 +104,12 @@ CBaseModelInfo::Get2dEffect(int n)
else
return nil;
}
+
+
+void
+CBaseModelInfo::SetModelName(const char *name)
+{
+ m_nameKey = CKeyGen::GetUppercaseKey(name);
+ if (!gUseChunkFiles)
+ strcpy(m_name, name);
+} \ No newline at end of file
diff --git a/src/modelinfo/BaseModelInfo.h b/src/modelinfo/BaseModelInfo.h
index 18e84c21..a93040b1 100644
--- a/src/modelinfo/BaseModelInfo.h
+++ b/src/modelinfo/BaseModelInfo.h
@@ -23,7 +23,9 @@ class C2dEffect;
class CBaseModelInfo
{
protected:
- char m_name[MAX_MODEL_NAME];
+ char *m_name;
+ uint32 m_nameKey;
+ RwObject *m_object;
uint8 m_type;
uint8 m_num2dEffects;
bool m_bOwnsColModel;
@@ -35,7 +37,11 @@ protected:
public:
CBaseModelInfo(ModelInfoType type);
+#ifdef FIX_BUGS
+ virtual ~CBaseModelInfo() { delete []m_name; }
+#else
virtual ~CBaseModelInfo() {}
+#endif
virtual void Shutdown(void);
virtual void DeleteRwObject(void) = 0;
virtual RwObject *CreateInstance(void) = 0;
@@ -51,7 +57,8 @@ public:
bool IsSimple(void) { return m_type == MITYPE_SIMPLE || m_type == MITYPE_TIME || m_type == MITYPE_WEAPON; }
bool IsClump(void) { return m_type == MITYPE_CLUMP || m_type == MITYPE_PED || m_type == MITYPE_VEHICLE; }
char *GetModelName(void) { return m_name; }
- void SetModelName(const char *name) { strncpy(m_name, name, MAX_MODEL_NAME); }
+ void SetModelName(const char *name);
+ uint32 GetNameHashKey() { return m_nameKey; }
void SetColModel(CColModel *col, bool owns = false){
m_colModel = col; m_bOwnsColModel = owns; }
CColModel *GetColModel(void) { return m_colModel; }
diff --git a/src/modelinfo/ModelIndices.h b/src/modelinfo/ModelIndices.h
index 182a0cea..792904fc 100644
--- a/src/modelinfo/ModelIndices.h
+++ b/src/modelinfo/ModelIndices.h
@@ -157,96 +157,85 @@ enum
MI_FIREMAN,
MI_MALE01,
- MI_HFYST = 9,
- MI_HFOST,
- MI_HMYST,
- MI_HMOST,
- MI_HFYRI,
- MI_HFORI,
- MI_HMYRI,
- MI_HMORI,
- MI_HFYBE,
- MI_HFOBE,
- MI_HMYBE,
- MI_HMOBE,
- MI_HFYBU,
- MI_HFYMD,
- MI_HFYCG,
- MI_HFYPR,
- MI_HFOTR,
- MI_HMOTR,
- MI_HMYAP,
- MI_HMOCA,
- MI_TAXI_D = MI_HMOCA,
- MI_BMODK,
- MI_BMYKR,
- MI_BFYST,
- MI_BFOST,
- MI_BMYST,
- MI_BMOST,
- MI_BFYRI,
- MI_BFORI,
- MI_BMYRI,
- MI_BFYBE,
- MI_BMYBE,
- MI_BFOBE,
- MI_BMOBE,
- MI_BMYBU,
- MI_BFYPR,
- MI_BFOTR,
- MI_BMOTR,
- MI_BMYPI,
- MI_BMYBB,
- MI_WMYCR,
- MI_WFYST,
- MI_WFOST,
- MI_WMYST,
- MI_WMOST,
- MI_WFYRI,
- MI_WFORI,
- MI_WMYRI,
- MI_WMORI,
- MI_WFYBE,
- MI_WMYBE,
- MI_WFOBE,
- MI_WMOBE,
- MI_WMYCW,
- MI_WMYGO,
- MI_WFOGO,
- MI_WMOGO,
- MI_WFYLG,
- MI_WMYLG,
- MI_WFYBU,
- MI_WMYBU,
- MI_WMOBU,
- MI_WFYPR,
- MI_WFOTR,
- MI_WMOTR,
- MI_WMYPI,
- MI_WMOCA,
- MI_WFYJG,
- MI_WMYJG,
- MI_WFYSK,
- MI_WMYSK,
- MI_WFYSH,
- MI_WFOSH,
- MI_JFOTO,
- MI_JMOTO,
-
- MI_CBA,// = 83,
- MI_CBB,
- MI_HNA,
- MI_HNB,
- MI_SGA,
- MI_SGB,
- MI_CLA,
- MI_CLB,
- MI_GDA,
- MI_GDB,
- MI_BKA,
- MI_BKB,
- MI_PGA,
- MI_PGB,
+ MI_TAXI_D = 9,
+ MI_PIMP,
+ MI_CRIMINAL01,
+ MI_CRIMINAL02,
+ MI_MALE02,
+ MI_MALE03,
+ MI_FATMALE01,
+ MI_FATMALE02,
+ MI_FEMALE01,
+ MI_FEMALE02,
+ MI_FEMALE03,
+ MI_FATFEMALE01,
+ MI_FATFEMALE02,
+ MI_PROSTITUTE,
+ MI_PROSTITUTE2,
+ MI_P_MAN1,
+ MI_P_MAN2,
+ MI_P_WOM1,
+ MI_P_WOM2,
+ MI_CT_MAN1,
+ MI_CT_MAN2,
+ MI_CT_WOM1,
+ MI_CT_WOM2,
+ MI_LI_MAN1,
+ MI_LI_MAN2,
+ MI_LI_WOM1,
+ MI_LI_WOM2,
+ MI_DOCKER1,
+ MI_DOCKER2,
+ MI_SCUM_MAN,
+ MI_SCUM_WOM,
+ MI_WORKER1,
+ MI_WORKER2,
+ MI_B_MAN1,
+ MI_B_MAN2,
+ MI_B_MAN3,
+ MI_B_WOM1,
+ MI_B_WOM2,
+ MI_B_WOM3,
+ MI_MOD_MAN,
+ MI_MOD_WOM,
+ MI_ST_MAN,
+ MI_ST_WOM,
+ MI_FAN_MAN1,
+ MI_FAN_MAN2,
+ MI_FAN_WOM,
+ MI_HOS_MAN,
+ MI_HOS_WOM,
+ MI_CONST1,
+ MI_CONST2,
+ MI_SHOPPER1,
+ MI_SHOPPER2,
+ MI_SHOPPER3,
+ MI_STUD_MAN,
+ MI_STUD_WOM,
+ MI_CAS_MAN,
+ MI_CAS_WOM,
+ MI_CAMP_MAN,
+ MI_CAMP_WOM,
+ MI_HITMAN,
+
+ MI_GANG01 = 79,
+ MI_GANG02,
+ MI_GANG03,
+ MI_GANG04,
+ MI_GANG05,
+ MI_GANG06,
+ MI_GANG07,
+ MI_GANG08,
+ MI_GANG09,
+ MI_GANG10,
+ MI_GANG11,
+ MI_GANG12,
+ MI_GANG13,
+ MI_GANG14,
+ MI_GANG15,
+ MI_GANG16,
+ MI_GANG17,
+ MI_GANG18,
MI_VICE1,
MI_VICE2,
MI_VICE3,
@@ -283,19 +272,20 @@ enum
MI_LAST_PED = MI_SPECIAL21,
MI_FIRST_VEHICLE,
- MI_LANDSTAL = MI_FIRST_VEHICLE,
+ MI_SPIDER = MI_FIRST_VEHICLE,
+ MI_LANDSTAL,
MI_IDAHO,
MI_STINGER,
MI_LINERUN,
MI_PEREN,
MI_SENTINEL,
- MI_RIO,
+ MI_PATRIOT,
MI_FIRETRUCK,
MI_TRASH,
MI_STRETCH,
MI_MANANA,
MI_INFERNUS,
- MI_VOODOO,
+ MI_BLISTA,
MI_PONY,
MI_MULE,
MI_CHEETAH,
@@ -304,100 +294,120 @@ enum
MI_MOONBEAM,
MI_ESPERANT,
MI_TAXI,
- MI_WASHING,
+ MI_KURUMA,
MI_BOBCAT,
MI_MRWHOOP,
MI_BFINJECT,
- MI_HUNTER,
+ MI_HEARSE,
MI_POLICE,
MI_ENFORCER,
MI_SECURICA,
MI_BANSHEE,
- MI_PREDATOR,
MI_BUS,
MI_RHINO,
MI_BARRACKS,
- MI_CUBAN,
- MI_CHOPPER,
- MI_ANGEL,
+ MI_DODO,
MI_COACH,
MI_CABBIE,
MI_STALLION,
MI_RUMPO,
MI_RCBANDIT,
- MI_ROMERO,
- MI_PACKER,
- MI_SENTXS,
- MI_ADMIRAL,
- MI_SQUALO,
- MI_SEASPAR,
- MI_PIZZABOY,
- MI_GANGBUR,
- MI_AIRTRAIN,
- MI_DEADDODO,
- MI_SPEEDER,
- MI_REEFER,
- MI_TROPIC,
+ MI_BELLYUP,
+ MI_MRWONGS,
+ MI_MAFIA,
+ MI_YARDIE,
+ MI_YAKUZA,
+ MI_DIABLOS,
+ MI_COLUMB,
+ MI_HOODS,
+ MI_PANLANT,
MI_FLATBED,
MI_YANKEE,
- MI_CADDY,
- MI_ZEBRA,
- MI_TOPFUN,
- MI_SKIMMER,
+ MI_BORGNINE,
+ MI_TOYZ,
+ MI_CAMPVAN,
+ MI_BALLOT,
+ MI_SHELBY,
+ MI_PONTIAC,
+ MI_ESPRIT,
+ MI_AMMOTRUK,
+ MI_HOTROD,
+ MI_SINDACCO_CAR,
+ MI_FORELLI_CAR,
+ MI_FERRY,
+ MI_GHOST,
+ MI_SPEEDER,
+ MI_REEFER,
+ MI_PREDATOR,
+ MI_TRAIN,
+ MI_ESCAPE,
+ MI_CHOPPER,
+ MI_AIRTRAIN,
+ MI_DEADDODO,
+ MI_ANGEL,
+ MI_PIZZABOY,
+ MI_NOODLEBOY,
MI_PCJ600,
MI_FAGGIO,
MI_FREEWAY,
- MI_RCBARON,
- MI_RCRAIDER,
- MI_GLENDALE,
- MI_OCEANIC,
+ MI_ANGEL2,
+ MI_SANCHEZ2,
MI_SANCHEZ,
+ MI_RCGOBLIN,
+ MI_RCRAIDER,
+ MI_HUNTER,
+ MI_MAVERICK,
+ MI_POLMAV,
+ MI_VCNMAV,
+
+ MI_LAST_VEHICLE = MI_VCNMAV,
+
+ // HACK HACK, hopefully temporary
+ MI_SEASPAR = -1000,
MI_SPARROW,
- MI_PATRIOT,
- MI_LOVEFIST,
+ MI_RCBARON,
+ MI_TOPFUN,
+ MI_CADDY,
+ MI_BAGGAGE,
+ MI_FBIRANCH,
+ MI_VICECHEE,
+ MI_RIO,
+ MI_SQUALO,
+ MI_JETMAX,
MI_COASTG,
MI_DINGHY,
- MI_HERMES,
- MI_SABRE,
- MI_SABRETUR,
+ MI_MARQUIS,
+ MI_SKIMMER,
+ MI_TROPIC,
+ MI_SANDKING,
+ MI_VOODOO,
+ MI_CUBAN,
MI_PHEONIX,
- MI_WALTON,
- MI_REGINA,
MI_COMET,
+ MI_SABRE,
+ MI_VIRGO,
+ MI_RANCHER,
+ MI_BLISTAC,
+ MI_WASHING,
+ MI_ADMIRAL,
+ MI_SABRETUR,
MI_DELUXO,
+ MI_HOTRING,
+ MI_REGINA,
+ MI_SENTXS,
+ MI_GLENDALE,
+ MI_OCEANIC,
+ MI_HERMES,
+ MI_GREENWOO,
+ MI_LOVEFIST,
+ MI_GANGBUR,
MI_BURRITO,
MI_SPAND,
- MI_MARQUIS,
- MI_BAGGAGE,
- MI_KAUFMAN,
- MI_MAVERICK,
- MI_VCNMAV,
- MI_RANCHER,
- MI_FBIRANCH,
- MI_VIRGO,
- MI_GREENWOO,
- MI_JETMAX,
- MI_HOTRING,
- MI_SANDKING,
- MI_BLISTAC,
- MI_POLMAV,
- MI_BOXVILLE,
- MI_BENSON,
- MI_MESA,
- MI_RCGOBLIN,
- MI_HOTRINA,
- MI_HOTRINB,
- MI_BLOODRA,
- MI_BLOODRB,
- MI_VICECHEE,
-
- // HACK
- MI_TRAIN = -1,
- MI_DODO = -2,
-
- MI_LAST_VEHICLE = MI_VICECHEE,
+ MI_PACKER,
+ MI_WALTON,
+ MI_ROMERO,
- MI_WHEEL_RIM,
+ MI_WHEEL_RIM = 237,
MI_WHEEL_OFFROAD,
MI_WHEEL_TRUCK,
@@ -458,14 +468,18 @@ enum
MI_FINGERS,
MI_MINIGUN2,
- MI_CUTOBJ01,// = 295,
+ MI_CUTOBJ01 = 120,
MI_CUTOBJ02,
MI_CUTOBJ03,
MI_CUTOBJ04,
MI_CUTOBJ05,
+ MI_CUTOBJ06,
+ MI_CUTOBJ07,
+ MI_CUTOBJ08,
+ MI_CUTOBJ09,
+ MI_CUTOBJ10,
-
- NUM_DEFAULT_MODELS,// = 300
+ NUM_DEFAULT_MODELS = 300
};
enum{
diff --git a/src/modelinfo/ModelInfo.cpp b/src/modelinfo/ModelInfo.cpp
index 0a542cf6..02df1be6 100644
--- a/src/modelinfo/ModelInfo.cpp
+++ b/src/modelinfo/ModelInfo.cpp
@@ -4,6 +4,7 @@
#include "TempColModels.h"
#include "ModelIndices.h"
#include "ModelInfo.h"
+#include "KeyGen.h"
// --MIAMI: file done
@@ -186,10 +187,11 @@ CModelInfo::AddVehicleModel(int id)
CBaseModelInfo*
CModelInfo::GetModelInfo(const char *name, int *id)
{
+ uint32 hashKey = CKeyGen::GetUppercaseKey(name);
CBaseModelInfo *modelinfo;
for(int i = 0; i < MODELINFOSIZE; i++){
modelinfo = CModelInfo::ms_modelInfoPtrs[i];
- if(modelinfo && !CGeneral::faststricmp(modelinfo->GetModelName(), name)){
+ if(modelinfo && hashKey == modelinfo->GetNameHashKey()){
if(id)
*id = i;
return modelinfo;
@@ -201,13 +203,14 @@ CModelInfo::GetModelInfo(const char *name, int *id)
CBaseModelInfo*
CModelInfo::GetModelInfo(const char *name, int minIndex, int maxIndex)
{
+ uint32 hashKey = CKeyGen::GetUppercaseKey(name);
if (minIndex > maxIndex)
return 0;
CBaseModelInfo *modelinfo;
for(int i = minIndex; i <= maxIndex; i++){
modelinfo = CModelInfo::ms_modelInfoPtrs[i];
- if(modelinfo && !CGeneral::faststricmp(modelinfo->GetModelName(), name))
+ if(modelinfo && hashKey == modelinfo->GetNameHashKey())
return modelinfo;
}
return nil;
diff --git a/src/modelinfo/SimpleModelInfo.cpp b/src/modelinfo/SimpleModelInfo.cpp
index 757a3721..d584dada 100644
--- a/src/modelinfo/SimpleModelInfo.cpp
+++ b/src/modelinfo/SimpleModelInfo.cpp
@@ -175,7 +175,7 @@ CSimpleModelInfo::FindRelatedModel(int32 minID, int32 maxID)
}
}
-#define NEAR_DRAW_DIST 0.0f // 100.0f in liberty city
+#define NEAR_DRAW_DIST 100.0f // 0.0f in vice city
void
CSimpleModelInfo::SetupBigBuilding(int32 minID, int32 maxID)
diff --git a/src/modelinfo/VehicleModelInfo.h b/src/modelinfo/VehicleModelInfo.h
index c7a41126..6c654284 100644
--- a/src/modelinfo/VehicleModelInfo.h
+++ b/src/modelinfo/VehicleModelInfo.h
@@ -31,6 +31,7 @@ enum eVehicleType {
VEHICLE_TYPE_HELI,
VEHICLE_TYPE_PLANE,
VEHICLE_TYPE_BIKE,
+ VEHICLE_TYPE_FERRY,
NUM_VEHICLE_TYPES
};