CutsceneMgr done + use original VB audio + make interiors visible + use hashed model info names a bit

This commit is contained in:
Sergeanur
2021-01-11 19:53:15 +02:00
parent cf11b32849
commit a223157000
32 changed files with 1588 additions and 3128 deletions

View File

@ -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);
}

View File

@ -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(RwMatrix *) = 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; }

View File

@ -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;