1
0
Fork 0
mirror of https://git.rip/DMCA_FUCKER/re3.git synced 2024-12-23 16:10:01 +00:00

first commit for LCS

This commit is contained in:
aap 2021-01-08 01:41:40 +01:00
parent bc363a74f5
commit ebdf08a514
35 changed files with 534 additions and 533 deletions

View file

@ -58,7 +58,7 @@ function getarch(a)
return a return a
end end
workspace "reVC" workspace "reLCS"
language "C++" language "C++"
configurations { "Debug", "Release" } configurations { "Debug", "Release" }
location "build" location "build"
@ -225,9 +225,9 @@ local function addSrcFiles( prefix )
return prefix .. "/*cpp", prefix .. "/*.h", prefix .. "/*.c", prefix .. "/*.ico", prefix .. "/*.rc" return prefix .. "/*cpp", prefix .. "/*.h", prefix .. "/*.c", prefix .. "/*.ico", prefix .. "/*.rc"
end end
project "reVC" project "reLCS"
kind "WindowedApp" kind "WindowedApp"
targetname "reVC" targetname "reLCS"
targetdir "bin/%{cfg.platform}/%{cfg.buildcfg}" targetdir "bin/%{cfg.platform}/%{cfg.buildcfg}"
defines { "MIAMI" } defines { "MIAMI" }
@ -303,8 +303,8 @@ project "reVC"
defines { "AUDIO_OAL" } defines { "AUDIO_OAL" }
filter {} filter {}
if(os.getenv("GTA_VC_RE_DIR")) then if(os.getenv("GTA_LCS_RE_DIR")) then
setpaths("$(GTA_VC_RE_DIR)/", "%(cfg.buildtarget.name)", "") setpaths("$(GTA_LCS_RE_DIR)/", "%(cfg.buildtarget.name)", "")
end end
filter "platforms:win*" filter "platforms:win*"

View file

@ -633,8 +633,8 @@ CCutsceneMgr::RemoveEverythingFromTheWorldForTheBiggestFuckoffCutsceneEver()
CStreaming::RemoveCurrentZonesModels(); CStreaming::RemoveCurrentZonesModels();
CStreaming::SetModelIsDeletable(MI_MALE01); CStreaming::SetModelIsDeletable(MI_MALE01);
CStreaming::SetModelTxdIsDeletable(MI_MALE01); CStreaming::SetModelTxdIsDeletable(MI_MALE01);
CStreaming::SetModelIsDeletable(MI_HMOCA); CStreaming::SetModelIsDeletable(MI_TAXI_D);
CStreaming::SetModelTxdIsDeletable(MI_HMOCA); CStreaming::SetModelTxdIsDeletable(MI_TAXI_D);
CStreaming::SetModelIsDeletable(MI_NIGHTSTICK); CStreaming::SetModelIsDeletable(MI_NIGHTSTICK);
CStreaming::SetModelTxdIsDeletable(MI_NIGHTSTICK); CStreaming::SetModelTxdIsDeletable(MI_NIGHTSTICK);
CStreaming::SetModelIsDeletable(MI_MISSILE); CStreaming::SetModelIsDeletable(MI_MISSILE);

View file

@ -5296,6 +5296,7 @@ cAudioManager::GetPedCommentSfx(CPed *ped, int32 sound)
case MI_MEDIC: return GetMedicTalkSfx(ped, sound); case MI_MEDIC: return GetMedicTalkSfx(ped, sound);
case MI_FIREMAN: return GetFiremanTalkSfx(ped, sound); case MI_FIREMAN: return GetFiremanTalkSfx(ped, sound);
case MI_MALE01: return GetDefaultTalkSfx(ped, sound); case MI_MALE01: return GetDefaultTalkSfx(ped, sound);
/* LCS: removed for now
case MI_HFYST: return GetHFYSTTalkSfx(ped, sound); case MI_HFYST: return GetHFYSTTalkSfx(ped, sound);
case MI_HFOST: return GetHFOSTTalkSfx(ped, sound); case MI_HFOST: return GetHFOSTTalkSfx(ped, sound);
case MI_HMYST: return GetHMYSTTalkSfx(ped, sound); case MI_HMYST: return GetHMYSTTalkSfx(ped, sound);
@ -5384,6 +5385,7 @@ cAudioManager::GetPedCommentSfx(CPed *ped, int32 sound)
case MI_BKB: return GetBKTalkSfx(ped, sound); case MI_BKB: return GetBKTalkSfx(ped, sound);
case MI_PGA: case MI_PGA:
case MI_PGB: return GetPGTalkSfx(ped, sound); case MI_PGB: return GetPGTalkSfx(ped, sound);
*/
case MI_VICE1: case MI_VICE1:
case MI_VICE2: case MI_VICE2:
case MI_VICE3: case MI_VICE3:
@ -7567,7 +7569,8 @@ cAudioManager::GetSGTalkSfx(CPed *ped, int16 sound)
case SOUND_PED_CHAT: GetPhrase(sfx, ped->m_lastComment, 1064, 12); break; case SOUND_PED_CHAT: GetPhrase(sfx, ped->m_lastComment, 1064, 12); break;
default: return GetGenericMaleTalkSfx(ped, sound); default: return GetGenericMaleTalkSfx(ped, sound);
} }
if(ped->GetModelIndex() == MI_SGB) sfx += 93; // LCS removed for now
// if(ped->GetModelIndex() == MI_SGB) sfx += 93;
return sfx; return sfx;
} }

View file

@ -1295,7 +1295,7 @@ cMusicManager::UsesPoliceRadio(CVehicle *veh)
bool bool
cMusicManager::UsesTaxiRadio(CVehicle *veh) cMusicManager::UsesTaxiRadio(CVehicle *veh)
{ {
if (veh->GetModelIndex() != MI_KAUFMAN) return false; if (veh->GetModelIndex() != MI_CABBIE) return false;
return CTheScripts::bPlayerHasMetDebbieHarry; return CTheScripts::bPlayerHasMetDebbieHarry;
} }

View file

@ -546,8 +546,7 @@ cAudioManager::SetupSuspectLastSeenReport()
break; break;
case MI_TAXI: case MI_TAXI:
case MI_CABBIE: case MI_CABBIE:
case MI_ZEBRA: case MI_BORGNINE:
case MI_KAUFMAN:
sample = SFX_POLICE_RADIO_TAXI; sample = SFX_POLICE_RADIO_TAXI;
break; break;
case MI_BOBCAT: case MI_BOBCAT:

View file

@ -420,7 +420,7 @@ CGameLogic::SetUpShortCut(CVector vStartPos, float fStartAngle, CVector vEndPos,
ShortCutStartOrientation = fStartAngle; ShortCutStartOrientation = fStartAngle;
ShortCutDestination = vEndPos; ShortCutDestination = vEndPos;
ShortCutDestinationOrientation = fEndAngle; ShortCutDestinationOrientation = fEndAngle;
CStreaming::RequestModel(MI_KAUFMAN, 0); CStreaming::RequestModel(MI_CABBIE, 0);
} }
void void
@ -452,11 +452,11 @@ CGameLogic::UpdateShortCut()
{ {
switch (ShortCutState) { switch (ShortCutState) {
case SHORTCUT_INIT: case SHORTCUT_INIT:
if (!CStreaming::HasModelLoaded(MI_KAUFMAN)) { if (!CStreaming::HasModelLoaded(MI_CABBIE)) {
CStreaming::RequestModel(MI_KAUFMAN, 0); CStreaming::RequestModel(MI_CABBIE, 0);
return; return;
} }
pShortCutTaxi = new CAutomobile(MI_KAUFMAN, RANDOM_VEHICLE); pShortCutTaxi = new CAutomobile(MI_CABBIE, RANDOM_VEHICLE);
if (!pShortCutTaxi) if (!pShortCutTaxi)
return; return;
pShortCutTaxi->SetPosition(ShortCutStart); pShortCutTaxi->SetPosition(ShortCutStart);

View file

@ -2201,7 +2201,7 @@ int open_script()
#endif #endif
switch (scriptToLoad) { switch (scriptToLoad) {
case 0: scriptfile = "main.scm"; break; case 0: scriptfile = "main.scm"; break;
case 1: scriptfile = "freeroam_miami.scm"; break; case 1: scriptfile = "freeroam_lcs.scm"; break;
case 2: scriptfile = "main_d.scm"; break; case 2: scriptfile = "main_d.scm"; break;
} }
return CFileMgr::OpenFile(scriptfile, "rb"); return CFileMgr::OpenFile(scriptfile, "rb");

View file

@ -1817,6 +1817,7 @@ int8 CRunningScript::ProcessCommands900To999(int32 command)
continue; continue;
if (CModelInfo::IsCarModel(model) || CModelInfo::IsBikeModel(model)) { if (CModelInfo::IsCarModel(model) || CModelInfo::IsBikeModel(model)) {
switch (model) { switch (model) {
// TODO(LCS): do it right
case MI_LANDSTAL: case MI_LANDSTAL:
case MI_LINERUN: case MI_LINERUN:
case MI_RIO: case MI_RIO:
@ -1842,13 +1843,13 @@ int8 CRunningScript::ProcessCommands900To999(int32 command)
case MI_ANGEL: case MI_ANGEL:
case MI_COACH: case MI_COACH:
case MI_RCBANDIT: case MI_RCBANDIT:
case MI_ROMERO: //case MI_ROMERO:
case MI_PACKER: //case MI_PACKER:
case MI_SENTXS: //case MI_SENTXS:
case MI_SQUALO: case MI_SQUALO:
case MI_SEASPAR: case MI_SEASPAR:
case MI_PIZZABOY: case MI_PIZZABOY:
case MI_GANGBUR: //case MI_GANGBUR:
case MI_AIRTRAIN: case MI_AIRTRAIN:
case MI_DEADDODO: case MI_DEADDODO:
case MI_SPEEDER: case MI_SPEEDER:
@ -1857,44 +1858,44 @@ int8 CRunningScript::ProcessCommands900To999(int32 command)
case MI_FLATBED: case MI_FLATBED:
case MI_YANKEE: case MI_YANKEE:
case MI_CADDY: case MI_CADDY:
case MI_ZEBRA: //case MI_ZEBRA:
case MI_TOPFUN: case MI_TOPFUN:
case MI_SKIMMER: case MI_SKIMMER:
case MI_RCBARON: case MI_RCBARON:
case MI_RCRAIDER: case MI_RCRAIDER:
case MI_SPARROW: case MI_SPARROW:
case MI_PATRIOT: case MI_PATRIOT:
case MI_LOVEFIST: //case MI_LOVEFIST:
case MI_COASTG: case MI_COASTG:
case MI_DINGHY: case MI_DINGHY:
case MI_HERMES: //case MI_HERMES:
case MI_SABRETUR: //case MI_SABRETUR:
case MI_PHEONIX: case MI_PHEONIX:
case MI_WALTON: //case MI_WALTON:
case MI_COMET: case MI_COMET:
case MI_DELUXO: //case MI_DELUXO:
case MI_BURRITO: //case MI_BURRITO:
case MI_SPAND: //case MI_SPAND:
case MI_MARQUIS: case MI_MARQUIS:
case MI_BAGGAGE: case MI_BAGGAGE:
case MI_KAUFMAN: //case MI_KAUFMAN:
case MI_MAVERICK: case MI_MAVERICK:
case MI_VCNMAV: case MI_VCNMAV:
case MI_RANCHER: //case MI_RANCHER:
case MI_FBIRANCH: case MI_FBIRANCH:
case MI_JETMAX: case MI_JETMAX:
case MI_HOTRING: //case MI_HOTRING:
case MI_SANDKING: case MI_SANDKING:
case MI_BLISTAC: //case MI_BLISTAC:
case MI_POLMAV: case MI_POLMAV:
case MI_BOXVILLE: //case MI_BOXVILLE:
case MI_BENSON: //case MI_BENSON:
case MI_MESA: //case MI_MESA:
case MI_RCGOBLIN: case MI_RCGOBLIN:
case MI_HOTRINA: //case MI_HOTRINA:
case MI_HOTRINB: //case MI_HOTRINB:
case MI_BLOODRA: //case MI_BLOODRA:
case MI_BLOODRB: //case MI_BLOODRB:
case MI_VICECHEE: case MI_VICECHEE:
model = -1; model = -1;
break; break;
@ -1909,23 +1910,23 @@ int8 CRunningScript::ProcessCommands900To999(int32 command)
case MI_MOONBEAM: case MI_MOONBEAM:
case MI_ESPERANT: case MI_ESPERANT:
case MI_TAXI: case MI_TAXI:
case MI_WASHING: //case MI_WASHING:
case MI_BOBCAT: case MI_BOBCAT:
case MI_BANSHEE: case MI_BANSHEE:
case MI_CABBIE: case MI_CABBIE:
case MI_STALLION: case MI_STALLION:
case MI_RUMPO: case MI_RUMPO:
case MI_ADMIRAL: //case MI_ADMIRAL:
case MI_PCJ600: case MI_PCJ600:
case MI_FAGGIO: case MI_FAGGIO:
case MI_FREEWAY: case MI_FREEWAY:
case MI_GLENDALE: //case MI_GLENDALE:
case MI_OCEANIC: //case MI_OCEANIC:
case MI_SANCHEZ: case MI_SANCHEZ:
case MI_SABRE: //case MI_SABRE:
case MI_REGINA: //case MI_REGINA:
case MI_VIRGO: //case MI_VIRGO:
case MI_GREENWOO: //case MI_GREENWOO:
break; break;
default: default:
printf("CREATE_RANDOM_CAR_FOR_CAR_PARK - Unknown car model %d\n", CStreaming::ms_vehiclesLoaded[index]); printf("CREATE_RANDOM_CAR_FOR_CAR_PARK - Unknown car model %d\n", CStreaming::ms_vehiclesLoaded[index]);

View file

@ -846,14 +846,15 @@ CFileLoader::LoadVehicleObject(const char *line)
char type[8], handlingId[16], gamename[32], animFile[16], vehclass[12]; char type[8], handlingId[16], gamename[32], animFile[16], vehclass[12];
uint32 frequency, comprules; uint32 frequency, comprules;
int32 level, misc; int32 level, misc;
float wheelScale; float wheelScale, normalSplay;
CVehicleModelInfo *mi; CVehicleModelInfo *mi;
char *p; char *p;
sscanf(line, "%d %s %s %s %s %s %s %s %d %d %x %d %f", sscanf(line, "%d %s %s %s %s %s %s %s %d %d %x %d %f %f",
&id, model, txd, &id, model, txd,
type, handlingId, gamename, animFile, vehclass, type, handlingId, gamename, animFile, vehclass,
&frequency, &level, &comprules, &misc, &wheelScale); &frequency, &level, &comprules, &misc, &wheelScale,
&normalSplay);
mi = CModelInfo::AddVehicleModel(id); mi = CModelInfo::AddVehicleModel(id);
mi->SetName(model); mi->SetName(model);
@ -873,6 +874,8 @@ CFileLoader::LoadVehicleObject(const char *line)
mi->m_vehicleType = VEHICLE_TYPE_BOAT; mi->m_vehicleType = VEHICLE_TYPE_BOAT;
}else if(strcmp(type, "train") == 0){ }else if(strcmp(type, "train") == 0){
mi->m_vehicleType = VEHICLE_TYPE_TRAIN; mi->m_vehicleType = VEHICLE_TYPE_TRAIN;
}else if(strcmp(type, "ferry") == 0){
mi->m_vehicleType = VEHICLE_TYPE_FERRY;
}else if(strcmp(type, "heli") == 0){ }else if(strcmp(type, "heli") == 0){
mi->m_vehicleType = VEHICLE_TYPE_HELI; mi->m_vehicleType = VEHICLE_TYPE_HELI;
}else if(strcmp(type, "plane") == 0){ }else if(strcmp(type, "plane") == 0){

View file

@ -375,7 +375,7 @@ bool CGame::Initialise(const char* datFile)
#ifdef USE_TEXTURE_POOL #ifdef USE_TEXTURE_POOL
_TexturePoolsUnknown(false); _TexturePoolsUnknown(false);
#endif #endif
currLevel = LEVEL_BEACH; currLevel = LEVEL_INDUSTRIAL;
currArea = AREA_MAIN_MAP; currArea = AREA_MAIN_MAP;
PUSH_MEMID(MEMID_TEXTURES); PUSH_MEMID(MEMID_TEXTURES);
@ -441,7 +441,7 @@ bool CGame::Initialise(const char* datFile)
CdStreamAddImage("MODELS\\GTA3.IMG"); CdStreamAddImage("MODELS\\GTA3.IMG");
CFileLoader::LoadLevel("DATA\\DEFAULT.DAT"); // CFileLoader::LoadLevel("DATA\\DEFAULT.DAT");
CFileLoader::LoadLevel(datFile); CFileLoader::LoadLevel(datFile);
#ifdef EXTENDED_PIPELINES #ifdef EXTENDED_PIPELINES
// for generic fallback // for generic fallback
@ -661,8 +661,9 @@ void CGame::ReInitGameObjectVariables(void)
CDraw::SetFOV(120.0f); CDraw::SetFOV(120.0f);
CDraw::ms_fLODDistance = 500.0f; CDraw::ms_fLODDistance = 500.0f;
CStreaming::RequestBigBuildings(LEVEL_GENERIC); CStreaming::RequestBigBuildings(LEVEL_GENERIC);
CStreaming::RemoveIslandsNotUsed(LEVEL_BEACH); CStreaming::RemoveIslandsNotUsed(LEVEL_INDUSTRIAL);
CStreaming::RemoveIslandsNotUsed(LEVEL_MAINLAND); CStreaming::RemoveIslandsNotUsed(LEVEL_COMMERCIAL);
CStreaming::RemoveIslandsNotUsed(LEVEL_SUBURBAN);
CStreaming::LoadAllRequestedModels(false); CStreaming::LoadAllRequestedModels(false);
currArea = AREA_MAIN_MAP; currArea = AREA_MAIN_MAP;
CPed::Initialise(); CPed::Initialise();

View file

@ -3,10 +3,11 @@
enum eLevelName { enum eLevelName {
LEVEL_IGNORE = -1, // beware, this is only used in CPhysical's m_nZoneLevel LEVEL_IGNORE = -1, // beware, this is only used in CPhysical's m_nZoneLevel
LEVEL_GENERIC = 0, LEVEL_GENERIC = 0,
LEVEL_BEACH, LEVEL_INDUSTRIAL,
LEVEL_MAINLAND, LEVEL_COMMERCIAL,
LEVEL_SUBURBAN,
NUM_LEVELS NUM_LEVELS // LCS: should be 5 eventually...
}; };
enum eAreaName { enum eAreaName {

View file

@ -97,6 +97,7 @@ extern bool gbFastTime;
extern bool gGravityCheat; extern bool gGravityCheat;
#endif #endif
/* LCS: removed
void SpecialCarCheats() void SpecialCarCheats()
{ {
if ( !CVehicle::bCheat9 ) if ( !CVehicle::bCheat9 )
@ -145,6 +146,7 @@ void SpecialCarCheats()
CPad::bHasPlayerCheated = true; CPad::bHasPlayerCheated = true;
} }
} }
*/
void PickUpChicksCheat() void PickUpChicksCheat()
{ {
@ -370,7 +372,7 @@ void ChangePlayerCheat()
do do
{ {
do { do {
modelId = CGeneral::GetRandomNumberInRange(0, MI_PGA); modelId = CGeneral::GetRandomNumberInRange(0, MI_GANG18);
anotherModelId = modelId+1; anotherModelId = modelId+1;
} while (!CModelInfo::GetModelInfo(anotherModelId)); } while (!CModelInfo::GetModelInfo(anotherModelId));
} while (anotherModelId >= MI_SPECIAL01 && anotherModelId <= MI_SPECIAL04 || modelId == MI_TAXI_D); } while (anotherModelId >= MI_SPECIAL01 && anotherModelId <= MI_SPECIAL04 || modelId == MI_TAXI_D);
@ -589,16 +591,18 @@ void SuicideCheat(void) {
} }
void DoChicksWithGunsCheat(void) { void DoChicksWithGunsCheat(void) {
/* // broken in LCS
CHud::SetHelpMessage(TheText.Get("CHEAT1"), true); CHud::SetHelpMessage(TheText.Get("CHEAT1"), true);
CStreaming::SetModelIsDeletable(CGangs::GetGangPedModel1(GANG_PLAYER)); CStreaming::SetModelIsDeletable(CGangs::GetGangPedModel1(GANG_PLAYER));
CStreaming::SetModelIsDeletable(CGangs::GetGangPedModel2(GANG_PLAYER)); CStreaming::SetModelIsDeletable(CGangs::GetGangPedModel2(GANG_PLAYER));
CStreaming::SetModelTxdIsDeletable(CGangs::GetGangPedModel1(GANG_PLAYER)); CStreaming::SetModelTxdIsDeletable(CGangs::GetGangPedModel1(GANG_PLAYER));
CStreaming::SetModelTxdIsDeletable(CGangs::GetGangPedModel2(GANG_PLAYER)); CStreaming::SetModelTxdIsDeletable(CGangs::GetGangPedModel2(GANG_PLAYER));
CStreaming::RemoveCurrentZonesModels(); CStreaming::RemoveCurrentZonesModels();
CGangs::SetGangPedModels(GANG_PLAYER, MI_HFYBE, MI_WFYBE); CGangs::SetGangPedModels(GANG_PLAYER, MI_CAS_WOM, MI_HOS_WOM);
CGangs::SetGangWeapons(GANG_PLAYER, WEAPONTYPE_M4, WEAPONTYPE_M4); CGangs::SetGangWeapons(GANG_PLAYER, WEAPONTYPE_M4, WEAPONTYPE_M4);
CStats::CheatedCount += 1000; CStats::CheatedCount += 1000;
CPad::bHasPlayerCheated = true; CPad::bHasPlayerCheated = true;
*/
} }
////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////
@ -1420,6 +1424,8 @@ void CPad::AddToPCCheatString(char c)
KeyBoardCheatString[0] = ' '; KeyBoardCheatString[0] = ' ';
BlackCarsCheat(); BlackCarsCheat();
} }
/*
// LCS: removed for now
// "TRAVELINSTYLE" // "TRAVELINSTYLE"
else if (!Cheat_strncmp(KeyBoardCheatString, "HQ`U`iLSFaNZ[")) { else if (!Cheat_strncmp(KeyBoardCheatString, "HQ`U`iLSFaNZ[")) {
KeyBoardCheatString[0] = ' '; KeyBoardCheatString[0] = ' ';
@ -1515,6 +1521,7 @@ void CPad::AddToPCCheatString(char c)
KeyBoardCheatString[0] = ' '; KeyBoardCheatString[0] = ' ';
ChangePlayerModel("igdiaz"); ChangePlayerModel("igdiaz");
} }
*/
// DEEPFRIEDMARSBARS // DEEPFRIEDMARSBARS
else if (!Cheat_strncmp(KeyBoardCheatString, "VWHC`mDTEPVZMpRK")) { else if (!Cheat_strncmp(KeyBoardCheatString, "VWHC`mDTEPVZMpRK")) {
KeyBoardCheatString[0] = ' '; KeyBoardCheatString[0] = ' ';
@ -1530,11 +1537,13 @@ void CPad::AddToPCCheatString(char c)
KeyBoardCheatString[0] = ' '; KeyBoardCheatString[0] = ' ';
BackToTheFuture(); BackToTheFuture();
} }
/* LCS: removed
// LOADSOFLITTLETHINGS // LOADSOFLITTLETHINGS
else if (!Cheat_strncmp(KeyBoardCheatString, "VLUJUoHSU_VTMo`J]bV")) { else if (!Cheat_strncmp(KeyBoardCheatString, "VLUJUoHSU_VTMo`J]bV")) {
KeyBoardCheatString[0] = ' '; KeyBoardCheatString[0] = ' ';
SpecialCarCheats(); SpecialCarCheats();
} }
*/
// HOPINGIRL // HOPINGIRL
else if (!Cheat_strncmp(KeyBoardCheatString, "OWPH[dSVI")) { else if (!Cheat_strncmp(KeyBoardCheatString, "OWPH[dSVI")) {
KeyBoardCheatString[0] = ' '; KeyBoardCheatString[0] = ' ';

View file

@ -78,10 +78,16 @@ size_t CStreaming::ms_memoryAvailable;
int32 desiredNumVehiclesLoaded = 12; int32 desiredNumVehiclesLoaded = 12;
CEntity *pIslandLODmainlandEntity; CEntity *pIslandLODindustEntity;
CEntity *pIslandLODbeachEntity; CEntity *pIslandLODcomIndEntity;
int32 islandLODmainland; CEntity *pIslandLODcomSubEntity;
int32 islandLODbeach; CEntity *pIslandLODsubIndEntity;
CEntity *pIslandLODsubComEntity;
int32 islandLODindust;
int32 islandLODcomInd;
int32 islandLODcomSub;
int32 islandLODsubInd;
int32 islandLODsubCom;
#ifndef MASTER #ifndef MASTER
bool gbPrintStats; bool gbPrintStats;
@ -240,12 +246,21 @@ CStreaming::Init2(void)
// find island LODs // find island LODs
pIslandLODmainlandEntity = nil; pIslandLODindustEntity = nil;
pIslandLODbeachEntity = nil; pIslandLODcomIndEntity = nil;
islandLODmainland = -1; pIslandLODcomSubEntity = nil;
islandLODbeach = -1; pIslandLODsubIndEntity = nil;
CModelInfo::GetModelInfo("IslandLODmainland", &islandLODmainland); pIslandLODsubComEntity = nil;
CModelInfo::GetModelInfo("IslandLODbeach", &islandLODbeach); islandLODindust = -1;
islandLODcomInd = -1;
islandLODcomSub = -1;
islandLODsubInd = -1;
islandLODsubCom = -1;
CModelInfo::GetModelInfo("IslandLODInd", &islandLODindust);
CModelInfo::GetModelInfo("IslandLODcomIND", &islandLODcomInd);
CModelInfo::GetModelInfo("IslandLODcomSUB", &islandLODcomSub);
CModelInfo::GetModelInfo("IslandLODsubIND", &islandLODsubInd);
CModelInfo::GetModelInfo("IslandLODsubCOM", &islandLODsubCom);
#ifndef MASTER #ifndef MASTER
VarConsole.Add("Streaming Debug", &gbPrintStats, true); VarConsole.Add("Streaming Debug", &gbPrintStats, true);
@ -912,13 +927,17 @@ CStreaming::RequestIslands(eLevelName level)
{ {
ISLAND_LOADING_ISNT(HIGH) ISLAND_LOADING_ISNT(HIGH)
switch(level){ switch(level){
case LEVEL_MAINLAND: case LEVEL_INDUSTRIAL:
if(islandLODbeach != -1) RequestModel(islandLODcomInd, BIGBUILDINGFLAGS);
RequestModel(islandLODbeach, BIGBUILDINGFLAGS); RequestModel(islandLODsubInd, BIGBUILDINGFLAGS);
break; break;
case LEVEL_BEACH: case LEVEL_COMMERCIAL:
if(islandLODmainland != -1) RequestModel(islandLODindust, BIGBUILDINGFLAGS);
RequestModel(islandLODmainland, BIGBUILDINGFLAGS); RequestModel(islandLODsubCom, BIGBUILDINGFLAGS);
break;
case LEVEL_SUBURBAN:
RequestModel(islandLODindust, BIGBUILDINGFLAGS);
RequestModel(islandLODcomSub, BIGBUILDINGFLAGS);
break; break;
default: break; default: break;
} }
@ -1127,10 +1146,12 @@ CStreaming::RemoveModel(int32 id)
void void
CStreaming::RemoveUnusedBuildings(eLevelName level) CStreaming::RemoveUnusedBuildings(eLevelName level)
{ {
if(level != LEVEL_BEACH) if(level != LEVEL_INDUSTRIAL)
RemoveBuildings(LEVEL_BEACH); RemoveBuildings(LEVEL_INDUSTRIAL);
if(level != LEVEL_MAINLAND) if(level != LEVEL_COMMERCIAL)
RemoveBuildings(LEVEL_MAINLAND); RemoveBuildings(LEVEL_COMMERCIAL);
if(level != LEVEL_SUBURBAN)
RemoveBuildings(LEVEL_SUBURBAN);
} }
void void
@ -1253,10 +1274,12 @@ CStreaming::RemoveUnusedBigBuildings(eLevelName level)
{ {
ISLAND_LOADING_IS(LOW) ISLAND_LOADING_IS(LOW)
{ {
if(level != LEVEL_BEACH) if(level != LEVEL_INDUSTRIAL)
RemoveBigBuildings(LEVEL_BEACH); RemoveBigBuildings(LEVEL_INDUSTRIAL);
if(level != LEVEL_MAINLAND) if(level != LEVEL_COMMERCIAL)
RemoveBigBuildings(LEVEL_MAINLAND); RemoveBigBuildings(LEVEL_COMMERCIAL);
if(level != LEVEL_SUBURBAN)
RemoveBigBuildings(LEVEL_SUBURBAN);
} }
RemoveIslandsNotUsed(level); RemoveIslandsNotUsed(level);
} }
@ -1278,15 +1301,21 @@ void
CStreaming::RemoveIslandsNotUsed(eLevelName level) CStreaming::RemoveIslandsNotUsed(eLevelName level)
{ {
int i; int i;
if(pIslandLODmainlandEntity == nil) if(pIslandLODindustEntity == nil)
for(i = CPools::GetBuildingPool()->GetSize()-1; i >= 0; i--){ for(i = CPools::GetBuildingPool()->GetSize()-1; i >= 0; i--){
CBuilding *building = CPools::GetBuildingPool()->GetSlot(i); CBuilding *building = CPools::GetBuildingPool()->GetSlot(i);
if(building == nil) if(building == nil)
continue; continue;
if(building->GetModelIndex() == islandLODmainland) if(building->GetModelIndex() == islandLODindust)
pIslandLODmainlandEntity = building; pIslandLODindustEntity = building;
if(building->GetModelIndex() == islandLODbeach) else if(building->GetModelIndex() == islandLODcomInd)
pIslandLODbeachEntity = building; pIslandLODcomIndEntity = building;
else if(building->GetModelIndex() == islandLODcomSub)
pIslandLODcomSubEntity = building;
else if(building->GetModelIndex() == islandLODsubInd)
pIslandLODsubIndEntity = building;
else if(building->GetModelIndex() == islandLODsubCom)
pIslandLODsubComEntity = building;
} }
#ifdef NO_ISLAND_LOADING #ifdef NO_ISLAND_LOADING
if(FrontEndMenuManager.m_PrefsIslandLoading == CMenuManager::ISLAND_LOADING_HIGH) { if(FrontEndMenuManager.m_PrefsIslandLoading == CMenuManager::ISLAND_LOADING_HIGH) {
@ -1295,12 +1324,27 @@ CStreaming::RemoveIslandsNotUsed(eLevelName level)
} else } else
#endif #endif
switch(level){ switch(level){
case LEVEL_MAINLAND: case LEVEL_INDUSTRIAL:
DeleteIsland(pIslandLODmainlandEntity); DeleteIsland(pIslandLODindustEntity);
DeleteIsland(pIslandLODcomSubEntity);
DeleteIsland(pIslandLODsubComEntity);
break; break;
case LEVEL_BEACH: case LEVEL_COMMERCIAL:
DeleteIsland(pIslandLODbeachEntity); DeleteIsland(pIslandLODcomIndEntity);
DeleteIsland(pIslandLODcomSubEntity);
DeleteIsland(pIslandLODsubIndEntity);
break;
case LEVEL_SUBURBAN:
DeleteIsland(pIslandLODsubIndEntity);
DeleteIsland(pIslandLODsubComEntity);
DeleteIsland(pIslandLODcomIndEntity);
break;
default:
DeleteIsland(pIslandLODindustEntity);
DeleteIsland(pIslandLODcomIndEntity);
DeleteIsland(pIslandLODcomSubEntity);
DeleteIsland(pIslandLODsubIndEntity);
DeleteIsland(pIslandLODsubComEntity);
break; break;
} }
} }
@ -1562,6 +1606,7 @@ CStreaming::IsObjectInCdImage(int32 id)
void void
CStreaming::SetModelIsDeletable(int32 id) CStreaming::SetModelIsDeletable(int32 id)
{ {
assert(id >= 0); // guard against fake IDs
ms_aInfoForModel[id].m_flags &= ~STREAMFLAGS_DONT_REMOVE; ms_aInfoForModel[id].m_flags &= ~STREAMFLAGS_DONT_REMOVE;
if ((id >= STREAM_OFFSET_TXD && id < STREAM_OFFSET_COL || CModelInfo::GetModelInfo(id)->GetModelType() != MITYPE_VEHICLE) && if ((id >= STREAM_OFFSET_TXD && id < STREAM_OFFSET_COL || CModelInfo::GetModelInfo(id)->GetModelType() != MITYPE_VEHICLE) &&
(ms_aInfoForModel[id].m_flags & STREAMFLAGS_SCRIPTOWNED) == 0){ (ms_aInfoForModel[id].m_flags & STREAMFLAGS_SCRIPTOWNED) == 0){
@ -1640,11 +1685,11 @@ CStreaming::StreamVehiclesAndPeds(void)
} }
if(FindPlayerPed()->m_pWanted->AreFbiRequired()){ if(FindPlayerPed()->m_pWanted->AreFbiRequired()){
RequestModel(MI_FBIRANCH, STREAMFLAGS_DONT_REMOVE); RequestModel(MI_FBICAR, STREAMFLAGS_DONT_REMOVE);
RequestModel(MI_FBI, STREAMFLAGS_DONT_REMOVE); RequestModel(MI_FBI, STREAMFLAGS_DONT_REMOVE);
}else{ }else{
SetModelIsDeletable(MI_FBIRANCH); SetModelIsDeletable(MI_FBICAR);
if(!HasModelLoaded(MI_FBIRANCH)) if(!HasModelLoaded(MI_FBICAR))
SetModelIsDeletable(MI_FBI); SetModelIsDeletable(MI_FBI);
} }
@ -1664,6 +1709,7 @@ CStreaming::StreamVehiclesAndPeds(void)
else else
SetModelIsDeletable(MI_CHOPPER); SetModelIsDeletable(MI_CHOPPER);
/* LCS: removed
if (FindPlayerPed()->m_pWanted->AreMiamiViceRequired()) { if (FindPlayerPed()->m_pWanted->AreMiamiViceRequired()) {
SetModelIsDeletable(MI_VICE1); SetModelIsDeletable(MI_VICE1);
SetModelIsDeletable(MI_VICE2); SetModelIsDeletable(MI_VICE2);
@ -1705,6 +1751,7 @@ CStreaming::StreamVehiclesAndPeds(void)
SetModelIsDeletable(MI_VICE7); SetModelIsDeletable(MI_VICE7);
SetModelIsDeletable(MI_VICE8); SetModelIsDeletable(MI_VICE8);
} }
*/
if(timeBeforeNextLoad >= 0) if(timeBeforeNextLoad >= 0)
timeBeforeNextLoad--; timeBeforeNextLoad--;

View file

@ -16,7 +16,7 @@
#define WORLD_SIZE_X (NUMSECTORS_X * SECTOR_SIZE_X) #define WORLD_SIZE_X (NUMSECTORS_X * SECTOR_SIZE_X)
#define WORLD_SIZE_Y (NUMSECTORS_Y * SECTOR_SIZE_Y) #define WORLD_SIZE_Y (NUMSECTORS_Y * SECTOR_SIZE_Y)
#define WORLD_MIN_X (-2400.0f) #define WORLD_MIN_X (-2000.0f)
#define WORLD_MIN_Y (-2000.0f) #define WORLD_MIN_Y (-2000.0f)
#define WORLD_MAX_X (WORLD_MIN_X + WORLD_SIZE_X) #define WORLD_MAX_X (WORLD_MIN_X + WORLD_SIZE_X)

View file

@ -88,20 +88,20 @@ CTheZones::Init(void)
TotalNumberOfInfoZones = 1; TotalNumberOfInfoZones = 1;
strcpy(InfoZoneArray[0].name, "CITYINF"); strcpy(InfoZoneArray[0].name, "CITYINF");
InfoZoneArray[0].minx = -2400.0f; InfoZoneArray[0].minx = -2000.0f;
InfoZoneArray[0].miny = -2000.0f; InfoZoneArray[0].miny = -2000.0f;
InfoZoneArray[0].minz = -500.0f; InfoZoneArray[0].minz = -500.0f;
InfoZoneArray[0].maxx = 1600.0f; InfoZoneArray[0].maxx = 2000.0f;
InfoZoneArray[0].maxy = 2000.0f; InfoZoneArray[0].maxy = 2000.0f;
InfoZoneArray[0].maxz = 500.0f; InfoZoneArray[0].maxz = 500.0f;
InfoZoneArray[0].level = LEVEL_GENERIC; InfoZoneArray[0].level = LEVEL_GENERIC;
InfoZoneArray[0].type = ZONE_INFO; InfoZoneArray[0].type = ZONE_INFO;
strcpy(NavigationZoneArray[0].name, "VICE_C"); strcpy(NavigationZoneArray[0].name, "VICE_C");
NavigationZoneArray[0].minx = -2400.0f; NavigationZoneArray[0].minx = -2000.0f;
NavigationZoneArray[0].miny = -2000.0f; NavigationZoneArray[0].miny = -2000.0f;
NavigationZoneArray[0].minz = -500.0f; NavigationZoneArray[0].minz = -500.0f;
NavigationZoneArray[0].maxx = 1600.0f; NavigationZoneArray[0].maxx = 2000.0f;
NavigationZoneArray[0].maxy = 2000.0f; NavigationZoneArray[0].maxy = 2000.0f;
NavigationZoneArray[0].maxz = 500.0f; NavigationZoneArray[0].maxz = 500.0f;
NavigationZoneArray[0].level = LEVEL_GENERIC; NavigationZoneArray[0].level = LEVEL_GENERIC;
@ -115,10 +115,10 @@ CTheZones::Init(void)
} }
TotalNumberOfMapZones = 1; TotalNumberOfMapZones = 1;
strcpy(MapZoneArray[0].name, "THEMAP"); strcpy(MapZoneArray[0].name, "THEMAP");
MapZoneArray[0].minx = -2400.0f; MapZoneArray[0].minx = -2000.0f;
MapZoneArray[0].miny = -2000.0f; MapZoneArray[0].miny = -2000.0f;
MapZoneArray[0].minz = -500.0f; MapZoneArray[0].minz = -500.0f;
MapZoneArray[0].maxx = 1600.0f; MapZoneArray[0].maxx = 2000.0f;
MapZoneArray[0].maxy = 2000.0f; MapZoneArray[0].maxy = 2000.0f;
MapZoneArray[0].maxz = 500.0f; MapZoneArray[0].maxz = 500.0f;
MapZoneArray[0].level = LEVEL_GENERIC; MapZoneArray[0].level = LEVEL_GENERIC;

View file

@ -7,15 +7,15 @@ enum Config {
MAX_CDIMAGES = 8, // additional cdimages MAX_CDIMAGES = 8, // additional cdimages
MAX_CDCHANNELS = 5, MAX_CDCHANNELS = 5,
MODELINFOSIZE = 6500, // 4900 on PS2 MODELINFOSIZE = 6500, // only 4900
TXDSTORESIZE = 1385, TXDSTORESIZE = 1385, // only 1200
COLSTORESIZE = 31, COLSTORESIZE = 31, // only 15
EXTRADIRSIZE = 256, EXTRADIRSIZE = 256,
CUTSCENEDIRSIZE = 512, CUTSCENEDIRSIZE = 512,
SIMPLEMODELSIZE = 3885, SIMPLEMODELSIZE = 3885,
TIMEMODELSIZE = 385, TIMEMODELSIZE = 385,
CLUMPMODELSIZE = 5, CLUMPMODELSIZE = 10,
WEAPONMODELSIZE = 37, WEAPONMODELSIZE = 37,
PEDMODELSIZE = 130, PEDMODELSIZE = 130,
VEHICLEMODELSIZE = 110, VEHICLEMODELSIZE = 110,
@ -26,19 +26,19 @@ enum Config {
NUMOBJECTINFO = 210, NUMOBJECTINFO = 210,
// Pool sizes // Pool sizes
NUMPTRNODES = 50000, NUMPTRNODES = 50000, // only 30100
NUMENTRYINFOS = 3200, NUMENTRYINFOS = 4000,
NUMPEDS = 140, NUMPEDS = 140, // only 70
NUMVEHICLES = 110, NUMVEHICLES = 110, // only 70
NUMBUILDINGS = 7000, NUMBUILDINGS = 7000, // only 6757
NUMTREADABLES = 1, NUMTREADABLES = 1300,
NUMOBJECTS = 460, NUMOBJECTS = 475,
NUMDUMMIES = 2340, NUMDUMMIES = 3000,
NUMAUDIOSCRIPTOBJECTS = 192, NUMAUDIOSCRIPTOBJECTS = 192,
NUMCOLMODELS = 4400, NUMCOLMODELS = 4400,
NUMCUTSCENEOBJECTS = 50, // not a pool in VC NUMCUTSCENEOBJECTS = 50, // not a pool in VC
NUMANIMBLOCKS = 35, NUMANIMBLOCKS = 60,
NUMANIMATIONS = 450, NUMANIMATIONS = 450,
NUMTEMPOBJECTS = 40, NUMTEMPOBJECTS = 40,
@ -58,13 +58,13 @@ enum Config {
NUMREFERENCES = 800, NUMREFERENCES = 800,
// Zones // Zones
NUMAUDIOZONES = 14, NUMAUDIOZONES = 36,
NUMINFOZONES = 169, NUMINFOZONES = 169,
NUMMAPZONES = 39, NUMMAPZONES = 110,
NUMNAVIGZONES = 20, NUMNAVIGZONES = 70,
// Cull zones // Cull zones
NUMATTRIBZONES = 704, NUMATTRIBZONES = 900,
NUMOCCLUSIONVOLUMES = 350, NUMOCCLUSIONVOLUMES = 350,
NUMACTIVEOCCLUDERS = 48, NUMACTIVEOCCLUDERS = 48,
@ -208,7 +208,7 @@ enum Config {
# define RANDOMSPLASH // use random splash as on PS2 # define RANDOMSPLASH // use random splash as on PS2
# define PS2_MATFX # define PS2_MATFX
# endif # endif
# define PC_PLAYER_CONTROLS // mouse player/cam mode //# define PC_PLAYER_CONTROLS // mouse player/cam mode
# define GTA_REPLAY # define GTA_REPLAY
# define GTA_SCENE_EDIT # define GTA_SCENE_EDIT
#elif defined GTA_XBOX #elif defined GTA_XBOX
@ -256,7 +256,7 @@ enum Config {
#define USE_TXD_CDIMAGE // generate and load textures from txd.img #define USE_TXD_CDIMAGE // generate and load textures from txd.img
#define PS2_ALPHA_TEST // emulate ps2 alpha test #define PS2_ALPHA_TEST // emulate ps2 alpha test
#define IMPROVED_VIDEOMODE // save and load videomode parameters instead of a magic number #define IMPROVED_VIDEOMODE // save and load videomode parameters instead of a magic number
#define DISABLE_LOADING_SCREEN // disable the loading screen which vastly improves the loading time //#define DISABLE_LOADING_SCREEN // disable the loading screen which vastly improves the loading time
#define DISABLE_VSYNC_ON_TEXTURE_CONVERSION // make texture conversion work faster by disabling vsync #define DISABLE_VSYNC_ON_TEXTURE_CONVERSION // make texture conversion work faster by disabling vsync
//#define USE_TEXTURE_POOL //#define USE_TEXTURE_POOL
#ifdef LIBRW #ifdef LIBRW
@ -310,7 +310,7 @@ enum Config {
# ifdef CUSTOM_FRONTEND_OPTIONS # ifdef CUSTOM_FRONTEND_OPTIONS
# define GRAPHICS_MENU_OPTIONS // otherwise Display settings will be scrollable # define GRAPHICS_MENU_OPTIONS // otherwise Display settings will be scrollable
# define NO_ISLAND_LOADING // disable loadscreen between islands via loading all island data at once, consumes more memory and CPU //# define NO_ISLAND_LOADING // disable loadscreen between islands via loading all island data at once, consumes more memory and CPU
# define CUTSCENE_BORDERS_SWITCH # define CUTSCENE_BORDERS_SWITCH
//# define MULTISAMPLING // adds MSAA option //# define MULTISAMPLING // adds MSAA option
# define INVERT_LOOK_FOR_PAD // enable the hidden option # define INVERT_LOOK_FOR_PAD // enable the hidden option

View file

@ -157,7 +157,7 @@ void CheckAndSaveIniFloat(const char *cat, const char *key, float val, bool &cha
void LoadINISettings() void LoadINISettings()
{ {
cfg.load_file("reVC.ini"); cfg.load_file("reLCS.ini");
#ifdef DONT_TRUST_RECOGNIZED_JOYSTICKS #ifdef DONT_TRUST_RECOGNIZED_JOYSTICKS
// Written by assuming the codes below will run after _InputInitialiseJoys(). // Written by assuming the codes below will run after _InputInitialiseJoys().
@ -260,7 +260,7 @@ void SaveINISettings()
CheckAndSaveIniInt("Rendering", "BackfaceCulling", gBackfaceCulling, changed); CheckAndSaveIniInt("Rendering", "BackfaceCulling", gBackfaceCulling, changed);
if (changed) if (changed)
cfg.write_file("reVC.ini"); cfg.write_file("reLCS.ini");
} }
#endif #endif
@ -290,7 +290,6 @@ void FastWeatherCheat();
void OnlyRenderWheelsCheat(); void OnlyRenderWheelsCheat();
void ChittyChittyBangBangCheat(); void ChittyChittyBangBangCheat();
void StrongGripCheat(); void StrongGripCheat();
void SpecialCarCheats();
void PickUpChicksCheat(); void PickUpChicksCheat();
DebugMenuEntry *carCol1; DebugMenuEntry *carCol1;
@ -561,7 +560,6 @@ DebugMenuPopulate(void)
DebugMenuAddCmd("Cheats", "Only render wheels", OnlyRenderWheelsCheat); DebugMenuAddCmd("Cheats", "Only render wheels", OnlyRenderWheelsCheat);
DebugMenuAddCmd("Cheats", "Chitty chitty bang bang", ChittyChittyBangBangCheat); DebugMenuAddCmd("Cheats", "Chitty chitty bang bang", ChittyChittyBangBangCheat);
DebugMenuAddCmd("Cheats", "Strong grip", StrongGripCheat); DebugMenuAddCmd("Cheats", "Strong grip", StrongGripCheat);
DebugMenuAddCmd("Cheats", "Special car", SpecialCarCheats);
DebugMenuAddCmd("Cheats", "Pickup chicks", PickUpChicksCheat); DebugMenuAddCmd("Cheats", "Pickup chicks", PickUpChicksCheat);
static int spawnCarId = MI_LANDSTAL; static int spawnCarId = MI_LANDSTAL;

View file

@ -157,96 +157,85 @@ enum
MI_FIREMAN, MI_FIREMAN,
MI_MALE01, MI_MALE01,
MI_HFYST = 9, MI_TAXI_D = 9,
MI_HFOST, MI_PIMP,
MI_HMYST, MI_CRIMINAL01,
MI_HMOST, MI_CRIMINAL02,
MI_HFYRI, MI_MALE02,
MI_HFORI, MI_MALE03,
MI_HMYRI, MI_FATMALE01,
MI_HMORI, MI_FATMALE02,
MI_HFYBE, MI_FEMALE01,
MI_HFOBE, MI_FEMALE02,
MI_HMYBE, MI_FEMALE03,
MI_HMOBE, MI_FATFEMALE01,
MI_HFYBU, MI_FATFEMALE02,
MI_HFYMD, MI_PROSTITUTE,
MI_HFYCG, MI_PROSTITUTE2,
MI_HFYPR, MI_P_MAN1,
MI_HFOTR, MI_P_MAN2,
MI_HMOTR, MI_P_WOM1,
MI_HMYAP, MI_P_WOM2,
MI_HMOCA, MI_CT_MAN1,
MI_TAXI_D = MI_HMOCA, MI_CT_MAN2,
MI_BMODK, MI_CT_WOM1,
MI_BMYKR, MI_CT_WOM2,
MI_BFYST, MI_LI_MAN1,
MI_BFOST, MI_LI_MAN2,
MI_BMYST, MI_LI_WOM1,
MI_BMOST, MI_LI_WOM2,
MI_BFYRI, MI_DOCKER1,
MI_BFORI, MI_DOCKER2,
MI_BMYRI, MI_SCUM_MAN,
MI_BFYBE, MI_SCUM_WOM,
MI_BMYBE, MI_WORKER1,
MI_BFOBE, MI_WORKER2,
MI_BMOBE, MI_B_MAN1,
MI_BMYBU, MI_B_MAN2,
MI_BFYPR, MI_B_MAN3,
MI_BFOTR, MI_B_WOM1,
MI_BMOTR, MI_B_WOM2,
MI_BMYPI, MI_B_WOM3,
MI_BMYBB, MI_MOD_MAN,
MI_WMYCR, MI_MOD_WOM,
MI_WFYST, MI_ST_MAN,
MI_WFOST, MI_ST_WOM,
MI_WMYST, MI_FAN_MAN1,
MI_WMOST, MI_FAN_MAN2,
MI_WFYRI, MI_FAN_WOM,
MI_WFORI, MI_HOS_MAN,
MI_WMYRI, MI_HOS_WOM,
MI_WMORI, MI_CONST1,
MI_WFYBE, MI_CONST2,
MI_WMYBE, MI_SHOPPER1,
MI_WFOBE, MI_SHOPPER2,
MI_WMOBE, MI_SHOPPER3,
MI_WMYCW, MI_STUD_MAN,
MI_WMYGO, MI_STUD_WOM,
MI_WFOGO, MI_CAS_MAN,
MI_WMOGO, MI_CAS_WOM,
MI_WFYLG, MI_CAMP_MAN,
MI_WMYLG, MI_CAMP_WOM,
MI_WFYBU, MI_HITMAN,
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_GANG01 = 79,
MI_CBB, MI_GANG02,
MI_HNA, MI_GANG03,
MI_HNB, MI_GANG04,
MI_SGA, MI_GANG05,
MI_SGB, MI_GANG06,
MI_CLA, MI_GANG07,
MI_CLB, MI_GANG08,
MI_GDA, MI_GANG09,
MI_GDB, MI_GANG10,
MI_BKA, MI_GANG11,
MI_BKB, MI_GANG12,
MI_PGA, MI_GANG13,
MI_PGB, MI_GANG14,
MI_GANG15,
MI_GANG16,
MI_GANG17,
MI_GANG18,
MI_VICE1, MI_VICE1,
MI_VICE2, MI_VICE2,
MI_VICE3, MI_VICE3,
@ -283,19 +272,20 @@ enum
MI_LAST_PED = MI_SPECIAL21, MI_LAST_PED = MI_SPECIAL21,
MI_FIRST_VEHICLE, MI_FIRST_VEHICLE,
MI_LANDSTAL = MI_FIRST_VEHICLE, MI_SPIDER = MI_FIRST_VEHICLE,
MI_LANDSTAL,
MI_IDAHO, MI_IDAHO,
MI_STINGER, MI_STINGER,
MI_LINERUN, MI_LINERUN,
MI_PEREN, MI_PEREN,
MI_SENTINEL, MI_SENTINEL,
MI_RIO, MI_PATRIOT,
MI_FIRETRUCK, MI_FIRETRUK,
MI_TRASH, MI_TRASH,
MI_STRETCH, MI_STRETCH,
MI_MANANA, MI_MANANA,
MI_INFERNUS, MI_INFERNUS,
MI_VOODOO, MI_BLISTA,
MI_PONY, MI_PONY,
MI_MULE, MI_MULE,
MI_CHEETAH, MI_CHEETAH,
@ -304,100 +294,121 @@ enum
MI_MOONBEAM, MI_MOONBEAM,
MI_ESPERANT, MI_ESPERANT,
MI_TAXI, MI_TAXI,
MI_WASHING, MI_KURUMA,
MI_BOBCAT, MI_BOBCAT,
MI_MRWHOOP, MI_MRWHOOP,
MI_BFINJECT, MI_BFINJECT,
MI_HUNTER, MI_HEARSE,
MI_POLICE, MI_POLICE,
MI_ENFORCER, MI_ENFORCER,
MI_SECURICA, MI_SECURICA,
MI_BANSHEE, MI_BANSHEE,
MI_PREDATOR,
MI_BUS, MI_BUS,
MI_RHINO, MI_RHINO,
MI_BARRACKS, MI_BARRACKS,
MI_CUBAN, MI_DODO,
MI_CHOPPER,
MI_ANGEL,
MI_COACH, MI_COACH,
MI_CABBIE, MI_CABBIE,
MI_STALLION, MI_STALLION,
MI_RUMPO, MI_RUMPO,
MI_RCBANDIT, MI_RCBANDIT,
MI_ROMERO, MI_BELLYUP,
MI_PACKER, MI_MRWONGS,
MI_SENTXS, MI_MAFIA,
MI_ADMIRAL, MI_YARDIE,
MI_SQUALO, MI_YAKUZA,
MI_SEASPAR, MI_DIABLOS,
MI_PIZZABOY, MI_COLUMB,
MI_GANGBUR, MI_HOODS,
MI_AIRTRAIN, MI_PANLANT,
MI_DEADDODO,
MI_SPEEDER,
MI_REEFER,
MI_TROPIC,
MI_FLATBED, MI_FLATBED,
MI_YANKEE, MI_YANKEE,
MI_CADDY, MI_BORGNINE,
MI_ZEBRA, MI_TOYZ,
MI_TOPFUN, MI_CAMPVAN,
MI_SKIMMER, 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_PCJ600,
MI_FAGGIO, MI_FAGGIO,
MI_FREEWAY, MI_FREEWAY,
MI_RCBARON, MI_ANGEL2,
MI_RCRAIDER, MI_SANCHEZ2,
MI_GLENDALE,
MI_OCEANIC,
MI_SANCHEZ, 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_SPARROW,
MI_PATRIOT, MI_RCBARON,
MI_LOVEFIST, MI_TOPFUN,
MI_CADDY,
MI_BAGGAGE,
MI_FBIRANCH,
MI_VICECHEE,
MI_FIRETRUCK,
MI_RIO,
MI_SQUALO,
MI_JETMAX,
MI_COASTG, MI_COASTG,
MI_DINGHY, MI_DINGHY,
MI_HERMES, MI_MARQUIS,
MI_SABRE, MI_SKIMMER,
MI_SABRETUR, MI_TROPIC,
MI_SANDKING,
MI_VOODOO,
MI_CUBAN,
MI_PHEONIX, MI_PHEONIX,
MI_WALTON,
MI_REGINA,
MI_COMET, MI_COMET,
MI_SABRE,
MI_VIRGO,
MI_RANCHER,
MI_BLISTAC,
MI_WASHING,
MI_ADMIRAL,
MI_SABRETUR,
MI_DELUXO, MI_DELUXO,
MI_HOTRING,
MI_REGINA,
MI_SENTXS,
MI_GLENDALE,
MI_OCEANIC,
MI_HERMES,
MI_GREENWOO,
MI_LOVEFIST,
MI_GANGBUR,
MI_BURRITO, MI_BURRITO,
MI_SPAND, MI_SPAND,
MI_MARQUIS, MI_PACKER,
MI_BAGGAGE, MI_WALTON,
MI_KAUFMAN, MI_ROMERO,
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_WHEEL_RIM = 237,
MI_TRAIN = -1,
MI_DODO = -2,
MI_LAST_VEHICLE = MI_VICECHEE,
MI_WHEEL_RIM,
MI_WHEEL_OFFROAD, MI_WHEEL_OFFROAD,
MI_WHEEL_TRUCK, MI_WHEEL_TRUCK,
@ -458,14 +469,18 @@ enum
MI_FINGERS, MI_FINGERS,
MI_MINIGUN2, MI_MINIGUN2,
MI_CUTOBJ01,// = 295, MI_CUTOBJ01 = 120,
MI_CUTOBJ02, MI_CUTOBJ02,
MI_CUTOBJ03, MI_CUTOBJ03,
MI_CUTOBJ04, MI_CUTOBJ04,
MI_CUTOBJ05, MI_CUTOBJ05,
MI_CUTOBJ06,
MI_CUTOBJ07,
MI_CUTOBJ08,
MI_CUTOBJ09,
MI_CUTOBJ10,
NUM_DEFAULT_MODELS = 300
NUM_DEFAULT_MODELS,// = 300
}; };
enum{ enum{

View file

@ -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 void
CSimpleModelInfo::SetupBigBuilding(int32 minID, int32 maxID) CSimpleModelInfo::SetupBigBuilding(int32 minID, int32 maxID)

View file

@ -31,6 +31,7 @@ enum eVehicleType {
VEHICLE_TYPE_HELI, VEHICLE_TYPE_HELI,
VEHICLE_TYPE_PLANE, VEHICLE_TYPE_PLANE,
VEHICLE_TYPE_BIKE, VEHICLE_TYPE_BIKE,
VEHICLE_TYPE_FERRY,
NUM_VEHICLE_TYPES NUM_VEHICLE_TYPES
}; };

View file

@ -22,23 +22,24 @@ CGangInfo::CGangInfo() :
void CGangs::Initialise(void) void CGangs::Initialise(void)
{ {
SetGangPedModels(GANG_CUBAN, MI_CBA, MI_CBB); SetGangPedModels(GANG_MAFIA, MI_GANG01, MI_GANG02);
SetGangPedModels(GANG_HAITIAN, MI_HNA, MI_HNB); SetGangPedModels(GANG_TRIAD, MI_GANG03, MI_GANG04);
SetGangPedModels(GANG_STREET, MI_SGA, MI_SGB); SetGangPedModels(GANG_DIABLOS, MI_GANG05, MI_GANG06);
SetGangPedModels(GANG_DIAZ, MI_CLA, MI_CLB); SetGangPedModels(GANG_YAKUZA, MI_GANG07, MI_GANG08);
SetGangPedModels(GANG_SECURITY, MI_GDA, MI_GDB); SetGangPedModels(GANG_YARDIE, MI_GANG09, MI_GANG10);
SetGangPedModels(GANG_BIKER, MI_BKA, MI_BKB); SetGangPedModels(GANG_COLUMB, MI_GANG11, MI_GANG12);
SetGangPedModels(GANG_PLAYER, MI_PGA, MI_PGB); SetGangPedModels(GANG_HOODS, MI_GANG13, MI_GANG14);
SetGangPedModels(GANG_GOLFER, MI_WFOGO, MI_WMOGO); SetGangPedModels(GANG_FORELLI, MI_GANG15, MI_GANG16);
SetGangVehicleModel(GANG_CUBAN, MI_CUBAN); SetGangPedModels(GANG_SINDACCO, MI_GANG17, MI_GANG18);
SetGangVehicleModel(GANG_HAITIAN, MI_VOODOO); SetGangVehicleModel(GANG_MAFIA, MI_MAFIA);
SetGangVehicleModel(GANG_STREET, MI_GANGBUR); SetGangVehicleModel(GANG_TRIAD, MI_BELLYUP);
SetGangVehicleModel(GANG_DIAZ, -1); SetGangVehicleModel(GANG_DIABLOS, MI_DIABLOS);
SetGangVehicleModel(GANG_SECURITY, -1); SetGangVehicleModel(GANG_YAKUZA, MI_YAKUZA);
SetGangVehicleModel(GANG_BIKER, MI_ANGEL); SetGangVehicleModel(GANG_YARDIE, MI_YARDIE);
SetGangVehicleModel(GANG_PLAYER, -1); SetGangVehicleModel(GANG_COLUMB, MI_COLUMB);
SetGangVehicleModel(GANG_GOLFER, MI_CADDY); SetGangVehicleModel(GANG_HOODS, MI_HOODS);
SetGangWeapons(GANG_GOLFER, WEAPONTYPE_GOLFCLUB, WEAPONTYPE_GOLFCLUB); SetGangVehicleModel(GANG_FORELLI, MI_FORELLI_CAR);
SetGangVehicleModel(GANG_SINDACCO, MI_SINDACCO_CAR);
#ifdef FIX_BUGS #ifdef FIX_BUGS
for (int i = 0; i < NUM_GANGS; i++) for (int i = 0; i < NUM_GANGS; i++)
SetGangPedModelOverride(i, -1); SetGangPedModelOverride(i, -1);

View file

@ -17,15 +17,15 @@ struct CGangInfo
VALIDATE_SIZE(CGangInfo, 0x10); VALIDATE_SIZE(CGangInfo, 0x10);
enum { enum {
GANG_CUBAN = 0, GANG_MAFIA = 0,
GANG_HAITIAN, GANG_TRIAD,
GANG_STREET, GANG_DIABLOS,
GANG_DIAZ, GANG_YAKUZA,
GANG_SECURITY, GANG_YARDIE,
GANG_BIKER, GANG_COLUMB,
GANG_PLAYER, GANG_HOODS,
GANG_GOLFER, GANG_FORELLI,
GANG_9, GANG_SINDACCO,
NUM_GANGS NUM_GANGS
}; };

View file

@ -9433,7 +9433,7 @@ CPed::SetRadioStation(void)
if (IsPlayer() || !m_pMyVehicle || m_pMyVehicle->pDriver != this) if (IsPlayer() || !m_pMyVehicle || m_pMyVehicle->pDriver != this)
return; return;
if (GetModelIndex() != MI_PGA && GetModelIndex() != MI_PGB) { if (GetModelIndex() != MI_GANG13 && GetModelIndex() != MI_GANG14) {
if (m_pMyVehicle->m_nRadioStation != modelInfo->radio1 && m_pMyVehicle->m_nRadioStation != modelInfo->radio2) { if (m_pMyVehicle->m_nRadioStation != modelInfo->radio1 && m_pMyVehicle->m_nRadioStation != modelInfo->radio2) {
if (CGeneral::GetRandomTrueFalse()) if (CGeneral::GetRandomTrueFalse())
m_pMyVehicle->m_nRadioStation = modelInfo->radio1; m_pMyVehicle->m_nRadioStation = modelInfo->radio1;

View file

@ -95,6 +95,9 @@ VALIDATE_SIZE(CPedType, 0x20);
enum ePedStats enum ePedStats
{ {
PEDSTAT_COWARD,
PEDSTAT_SHOPPER,
PEDSTAT_OLDSHOPPER,
PEDSTAT_PLAYER, PEDSTAT_PLAYER,
PEDSTAT_COP, PEDSTAT_COP,
PEDSTAT_MEDIC, PEDSTAT_MEDIC,
@ -106,6 +109,8 @@ enum ePedStats
PEDSTAT_GANG5, PEDSTAT_GANG5,
PEDSTAT_GANG6, PEDSTAT_GANG6,
PEDSTAT_GANG7, PEDSTAT_GANG7,
PEDSTAT_GANG8,
PEDSTAT_GANG9,
PEDSTAT_STREET_GUY, PEDSTAT_STREET_GUY,
PEDSTAT_SUIT_GUY, PEDSTAT_SUIT_GUY,
PEDSTAT_SENSIBLE_GUY, PEDSTAT_SENSIBLE_GUY,
@ -128,13 +133,10 @@ enum ePedStats
PEDSTAT_PSYCHO, PEDSTAT_PSYCHO,
PEDSTAT_STEWARD, PEDSTAT_STEWARD,
PEDSTAT_SPORTSFAN, PEDSTAT_SPORTSFAN,
PEDSTAT_SHOPPER,
PEDSTAT_OLDSHOPPER,
PEDSTAT_BEACH_GUY, PEDSTAT_BEACH_GUY,
PEDSTAT_BEACH_GIRL, PEDSTAT_BEACH_GIRL,
PEDSTAT_SKATER, PEDSTAT_SKATER,
PEDSTAT_STD_MISSION, PEDSTAT_STD_MISSION,
PEDSTAT_COWARD,
NUM_PEDSTATS NUM_PEDSTATS
}; };

View file

@ -558,11 +558,8 @@ CPopulation::AddToPopulation(float minDist, float maxDist, float minDistOffScree
// Taxi side mission // Taxi side mission
if (CTheScripts::IsPlayerOnAMission()) { if (CTheScripts::IsPlayerOnAMission()) {
CPed *player = FindPlayerPed(); CPed *player = FindPlayerPed();
if (player && player->InVehicle()) { if (player && player->InVehicle() && player->m_pMyVehicle->IsTaxi())
int32 model = player->m_pMyVehicle->GetModelIndex(); missionAndWeatherMult = 1.0f;
if (model == MI_TAXI || model == MI_CABBIE || model == MI_ZEBRA || model == MI_KAUFMAN)
missionAndWeatherMult = 1.0f;
}
} }
if (CDarkel::FrenzyOnGoing()) if (CDarkel::FrenzyOnGoing())
missionAndWeatherMult = 1.0f; missionAndWeatherMult = 1.0f;
@ -843,7 +840,7 @@ CPopulation::AddPedInCar(CVehicle* car, bool isDriver)
pedType = PEDTYPE_COP; pedType = PEDTYPE_COP;
break; break;
default: default:
if (car->GetModelIndex() == MI_TAXI || car->GetModelIndex() == MI_CABBIE || car->GetModelIndex() == MI_ZEBRA || car->GetModelIndex() == MI_KAUFMAN) { if (car->IsTaxi()) {
if (isDriver) { if (isDriver) {
pedType = PEDTYPE_CIVMALE; pedType = PEDTYPE_CIVMALE;
preferredModel = MI_TAXI_D; preferredModel = MI_TAXI_D;
@ -1210,10 +1207,11 @@ CPopulation::IsSkateable(CVector const& pos)
return foundCol.surfaceB == SURFACE_TARMAC || foundCol.surfaceB == SURFACE_PAVEMENT; return foundCol.surfaceB == SURFACE_TARMAC || foundCol.surfaceB == SURFACE_PAVEMENT;
} }
//--LCS: done
bool bool
CPopulation::CanJeerAtStripper(int32 model) CPopulation::CanJeerAtStripper(int32 model)
{ {
return model == MI_WMOBE || model == MI_WMYBE || model == MI_WMOST || model == MI_BMYBB; return false;
} }
void void
@ -1245,46 +1243,38 @@ bool
CPopulation::IsMale(int32 model) CPopulation::IsMale(int32 model)
{ {
switch (model) { switch (model) {
case MI_HMYST: // TODO(LCS): do this right
case MI_HMOST: case MI_TAXI_D:
case MI_HMYRI: case MI_PIMP:
case MI_HMORI: case MI_CRIMINAL01:
case MI_HMYBE: case MI_CRIMINAL02:
case MI_HMOBE: case MI_MALE02:
case MI_HMOTR: case MI_MALE03:
case MI_HMYAP: case MI_P_MAN1:
case MI_HMOCA: case MI_P_MAN2:
case MI_BMODK: case MI_CT_MAN1:
case MI_BMYKR: case MI_CT_MAN2:
case MI_BMYST: case MI_LI_MAN1:
case MI_BMOST: case MI_LI_MAN2:
case MI_BMYRI: case MI_DOCKER1:
case MI_BMYBE: case MI_DOCKER2:
case MI_BMOBE: case MI_SCUM_MAN:
case MI_BMYBU: case MI_WORKER1:
case MI_BMOTR: case MI_WORKER2:
case MI_BMYPI: case MI_B_MAN1:
case MI_BMYBB: case MI_B_MAN2:
case MI_WMYCR: case MI_B_MAN3:
case MI_WMYST: case MI_MOD_MAN:
case MI_WMOST: case MI_ST_MAN:
case MI_WMYRI: case MI_FAN_MAN1:
case MI_WMORI: case MI_FAN_MAN2:
case MI_WMYBE: case MI_HOS_MAN:
case MI_WMOBE: case MI_CONST1:
case MI_WMYCW: case MI_CONST2:
case MI_WMYGO: case MI_STUD_MAN:
case MI_WMOGO: case MI_CAS_MAN:
case MI_WMYLG: case MI_CAMP_MAN:
case MI_WMYBU: case MI_HITMAN:
case MI_WMOBU:
case MI_WMOTR:
case MI_WMYPI:
case MI_WMOCA:
case MI_WMYJG:
case MI_WMYSK:
// BUG? Why no JMOTO?
return true; return true;
default: default:
return false; return false;
@ -1295,41 +1285,34 @@ bool
CPopulation::IsFemale(int32 model) CPopulation::IsFemale(int32 model)
{ {
switch (model) { switch (model) {
case MI_HFYST: // TODO(LCS): do this right
case MI_HFOST: case MI_FEMALE01:
case MI_HFYRI: case MI_FEMALE02:
case MI_HFORI: case MI_FEMALE03:
case MI_HFYBE: case MI_FATFEMALE01:
case MI_HFOBE: case MI_FATFEMALE02:
case MI_HFYBU: case MI_PROSTITUTE:
case MI_HFYMD: case MI_PROSTITUTE2:
case MI_HFYCG: case MI_P_WOM1:
case MI_HFYPR: case MI_P_WOM2:
case MI_HFOTR: case MI_CT_WOM1:
case MI_BFYST: case MI_CT_WOM2:
case MI_BFOST: case MI_LI_WOM1:
case MI_BFYRI: case MI_LI_WOM2:
case MI_BFORI: case MI_SCUM_WOM:
case MI_BFYBE: case MI_B_WOM1:
case MI_BFOBE: case MI_B_WOM2:
case MI_BFYPR: case MI_B_WOM3:
case MI_BFOTR: case MI_MOD_WOM:
case MI_WFYST: case MI_ST_WOM:
case MI_WFOST: case MI_FAN_WOM:
case MI_WFYRI: case MI_HOS_WOM:
case MI_WFORI: case MI_SHOPPER1:
case MI_WFYBE: case MI_SHOPPER2:
case MI_WFOBE: case MI_SHOPPER3:
case MI_WFOGO: case MI_STUD_WOM:
case MI_WFYLG: case MI_CAS_WOM:
case MI_WFYBU: case MI_CAMP_WOM:
case MI_WFYPR:
case MI_WFOTR:
case MI_WFYJG:
case MI_WFYSK:
case MI_WFYSH:
case MI_WFOSH:
case MI_JFOTO:
return true; return true;
default: default:
return false; return false;
@ -1339,23 +1322,7 @@ CPopulation::IsFemale(int32 model)
bool bool
CPopulation::IsSunbather(int32 model) CPopulation::IsSunbather(int32 model)
{ {
switch (model) { return false;
case MI_HFYBE:
case MI_HFOBE:
case MI_HMYBE:
case MI_HMOBE:
case MI_BFYBE:
case MI_BMYBE:
case MI_BFOBE:
case MI_BMOBE:
case MI_WFYBE:
case MI_WMYBE:
case MI_WFOBE:
case MI_WMOBE:
return true;
default:
return false;
}
} }
int32 int32
@ -1367,13 +1334,13 @@ CPopulation::ComputeRandomisedGangSize(void)
bool bool
CPopulation::CanSolicitPlayerInCar(int32 model) CPopulation::CanSolicitPlayerInCar(int32 model)
{ {
return model == MI_HFYPR || model == MI_BFYPR || model == MI_WFYPR; return model == MI_PROSTITUTE || model == MI_PROSTITUTE2;
} }
bool bool
CPopulation::CanSolicitPlayerOnFoot(int32 model) CPopulation::CanSolicitPlayerOnFoot(int32 model)
{ {
return model == MI_HFYMD || model == MI_HFYCG || model == MI_BFOTR || model == MI_BMOTR || model == MI_WFOTR || model == MI_WMOTR; return model == MI_B_WOM3 || model == MI_FEMALE01 || model == MI_FEMALE02 || model == MI_FEMALE03;
} }
bool bool

View file

@ -417,8 +417,9 @@ void CMovingThings::Init()
} }
} }
CEscalators::Init(); // LCS: removed
aScrollBars[0].Init(CVector(-1069.209f, 1320.126f, 18.848f), CVector(-1069.209f, 1342.299f, 22.612f), SCROLL_ARENA_STRING, 128, 255, 0, 0.3f); // CEscalators::Init();
// aScrollBars[0].Init(CVector(-1069.209f, 1320.126f, 18.848f), CVector(-1069.209f, 1342.299f, 22.612f), SCROLL_ARENA_STRING, 128, 255, 0, 0.3f);
} }
void CMovingThings::Shutdown() void CMovingThings::Shutdown()

View file

@ -1,6 +1,6 @@
#pragma once #pragma once
#define WATER_X_OFFSET (400.0f) #define WATER_X_OFFSET (0.0f)
#define WATER_Z_OFFSET (0.5f) #define WATER_Z_OFFSET (0.5f)

View file

@ -18,7 +18,7 @@ bool gPS2alphaTest = true;
#else #else
bool gPS2alphaTest = false; bool gPS2alphaTest = false;
#endif #endif
bool gBackfaceCulling = true; bool gBackfaceCulling = false; // can we ever enable this in LCS even?
#if !defined(FINAL) || defined(DEBUGMENU) #if !defined(FINAL) || defined(DEBUGMENU)
static bool charsetOpen; static bool charsetOpen;

View file

@ -632,8 +632,9 @@ CVisibilityPlugins::RenderVehicleTailRotorAlphaCB(RpAtomic *atomic)
RpAtomic* RpAtomic*
CVisibilityPlugins::RenderPlayerCB(RpAtomic *atomic) CVisibilityPlugins::RenderPlayerCB(RpAtomic *atomic)
{ {
if(CWorld::Players[0].m_pSkinTexture) // LCS: removed
RpGeometryForAllMaterials(RpAtomicGetGeometry(atomic), SetTextureCB, CWorld::Players[0].m_pSkinTexture); // if(CWorld::Players[0].m_pSkinTexture)
// RpGeometryForAllMaterials(RpAtomicGetGeometry(atomic), SetTextureCB, CWorld::Players[0].m_pSkinTexture);
RENDERCALLBACK(atomic); RENDERCALLBACK(atomic);
return atomic; return atomic;
} }

View file

@ -2193,8 +2193,7 @@ CAutomobile::PreRender(void)
case MI_TAXI: case MI_TAXI:
case MI_CABBIE: case MI_CABBIE:
case MI_ZEBRA: case MI_BORGNINE:
case MI_KAUFMAN:
if(bTaxiLight){ if(bTaxiLight){
CVector pos = GetPosition() + GetUp()*0.95f; CVector pos = GetPosition() + GetUp()*0.95f;
CCoronas::RegisterCorona((uintptr)this + 21, CCoronas::RegisterCorona((uintptr)this + 21,

View file

@ -62,6 +62,7 @@ void CCranes::InitCranes(void)
} }
} }
} }
/* // TODO(LCS)
for (CPtrNode* pNode = CWorld::GetBigBuildingList(LEVEL_MAINLAND).first; pNode; pNode = pNode->next) { for (CPtrNode* pNode = CWorld::GetBigBuildingList(LEVEL_MAINLAND).first; pNode; pNode = pNode->next) {
CEntity* pEntity = (CEntity*)pNode->item; CEntity* pEntity = (CEntity*)pNode->item;
if (MODELID_CRANE_1 == pEntity->GetModelIndex() || if (MODELID_CRANE_1 == pEntity->GetModelIndex() ||
@ -72,6 +73,7 @@ void CCranes::InitCranes(void)
MODELID_CRANE_6 == pEntity->GetModelIndex()) MODELID_CRANE_6 == pEntity->GetModelIndex())
AddThisOneCrane(pEntity); AddThisOneCrane(pEntity);
} }
*/
} }
void CCranes::AddThisOneCrane(CEntity* pEntity) void CCranes::AddThisOneCrane(CEntity* pEntity)

View file

@ -44,6 +44,7 @@ const char VehicleNames[NUMHANDLINGS][14] = {
"RHINO", "RHINO",
"BARRACKS", "BARRACKS",
"TRAIN", "TRAIN",
"FERRY",
"HELI", "HELI",
"DODO", "DODO",
"COACH", "COACH",
@ -56,66 +57,40 @@ const char VehicleNames[NUMHANDLINGS][14] = {
"DEADDODO", "DEADDODO",
"FLATBED", "FLATBED",
"YANKEE", "YANKEE",
"GOLFCART", "BLISTA",
"VOODOO", "BELLYUP",
"WASHING", "MRWONGS",
"CUBAN", "YARDIE",
"ROMERO", "YAKUZA",
"PACKER", "DIABLOS",
"ADMIRAL", "COLUMB",
"GANGBUR", "HOODS",
"ZEBRA", "PANLANT",
"TOPFUN", "BORGNINE",
"GLENDALE", "CAMPVAN",
"OCEANIC", "BALLOT",
"HERMES", "SPIDER",
"SABRE1", "SHELBY",
"SABRETUR", "PONTIAC",
"PHEONIX", "ESPRIT",
"WALTON", "MINI",
"REGINA", "HOTROD",
"COMET", "SINDACCO",
"DELUXO", "FORELLI",
"BURRITO",
"SPAND",
"BAGGAGE",
"KAUFMAN",
"RANCHER",
"FBIRANCH",
"VIRGO",
"GREENWOO",
"HOTRING",
"SANDKING",
"BLISTAC",
"BOXVILLE",
"BENSON",
"DESPERAD",
"LOVEFIST",
"BLOODRA",
"BLOODRB",
"BIKE", "BIKE",
"MOPED", "MOPED",
"DIRTBIKE", "DIRTBIKE",
"ANGEL", "ANGEL",
"DIRTBIK2",
"ANGE2",
"FREEWAY", "FREEWAY",
"PREDATOR", "PREDATOR",
"SPEEDER", "SPEEDER",
"REEFER", "REEFER",
"RIO",
"SQUALO",
"TROPIC",
"COASTGRD",
"DINGHY",
"MARQUIS",
"CUPBOAT",
"SEAPLANE",
"SPARROW",
"SEASPAR",
"MAVERICK", "MAVERICK",
"COASTMAV", "COASTMAV",
"POLMAV", "POLMAV",
"HUNTER", "HUNTER",
"RCBARON",
"RCGOBLIN", "RCGOBLIN",
"RCCOPTER" "RCCOPTER"
}; };
@ -350,7 +325,7 @@ void
cHandlingDataMgr::ConvertDataToGameUnits(tHandlingData *handling) cHandlingDataMgr::ConvertDataToGameUnits(tHandlingData *handling)
{ {
// convert distance to m, time to 1/50s // convert distance to m, time to 1/50s
float velocity, a, b, specificVolume; float velocity, a, b;
handling->Transmission.fEngineAcceleration *= 1.0f/(50.0f*50.0f); handling->Transmission.fEngineAcceleration *= 1.0f/(50.0f*50.0f);
handling->Transmission.fMaxVelocity *= 1000.0f/(60.0f*60.0f * 50.0f); handling->Transmission.fMaxVelocity *= 1000.0f/(60.0f*60.0f * 50.0f);
@ -422,15 +397,15 @@ cHandlingDataMgr::GetHandlingId(const char *name)
tFlyingHandlingData* tFlyingHandlingData*
cHandlingDataMgr::GetFlyingPointer(uint8 id) cHandlingDataMgr::GetFlyingPointer(uint8 id)
{ {
if(id >= HANDLING_SEAPLANE && id <= HANDLING_RCCOPTER) if(id >= HANDLING_MAVERICK && id <= HANDLING_RCCOPTER)
return &FlyingHandlingData[id-HANDLING_SEAPLANE]; return &FlyingHandlingData[id-HANDLING_MAVERICK];
return &FlyingHandlingData[0]; return &FlyingHandlingData[0];
} }
tBoatHandlingData* tBoatHandlingData*
cHandlingDataMgr::GetBoatPointer(uint8 id) cHandlingDataMgr::GetBoatPointer(uint8 id)
{ {
if(id >= HANDLING_PREDATOR && id <= HANDLING_SEAPLANE) if(id >= HANDLING_PREDATOR && id <= HANDLING_MAVERICK)
return &BoatHandlingData[id-HANDLING_PREDATOR]; return &BoatHandlingData[id-HANDLING_PREDATOR];
return &BoatHandlingData[0]; return &BoatHandlingData[0];
} }

View file

@ -36,6 +36,7 @@ enum tVehicleType
HANDLING_RHINO, HANDLING_RHINO,
HANDLING_BARRACKS, HANDLING_BARRACKS,
HANDLING_TRAIN, HANDLING_TRAIN,
HANDLING_FERRY,
HANDLING_HELI, HANDLING_HELI,
HANDLING_DODO, HANDLING_DODO,
HANDLING_COACH, HANDLING_COACH,
@ -48,76 +49,51 @@ enum tVehicleType
HANDLING_DEADDODO, HANDLING_DEADDODO,
HANDLING_FLATBED, HANDLING_FLATBED,
HANDLING_YANKEE, HANDLING_YANKEE,
HANDLING_GOLFCART, HANDLING_BLISTA,
HANDLING_VOODOO, HANDLING_BELLYUP,
HANDLING_WASHING, HANDLING_MRWONGS,
HANDLING_CUBAN, HANDLING_YARDIE,
HANDLING_ROMERO, HANDLING_YAKUZA,
HANDLING_PACKER, HANDLING_DIABLOS,
HANDLING_ADMIRAL, HANDLING_COLUMB,
HANDLING_GANGBUR, HANDLING_HOODS,
HANDLING_ZEBRA, HANDLING_PANLANT,
HANDLING_TOPFUN, HANDLING_BORGNINE,
HANDLING_GLENDALE, HANDLING_CAMPVAN,
HANDLING_OCEANIC, HANDLING_BALLOT,
HANDLING_HERMES, HANDLING_SPIDER,
HANDLING_SABRE1, HANDLING_SHELBY,
HANDLING_SABRETUR, HANDLING_PONTIAC,
HANDLING_PHEONIX, HANDLING_ESPRIT,
HANDLING_WALTON, HANDLING_MINI,
HANDLING_REGINA, HANDLING_HOTROD,
HANDLING_COMET, HANDLING_SINDACCO,
HANDLING_DELUXO, HANDLING_FORELLI,
HANDLING_BURRITO,
HANDLING_SPAND,
HANDLING_BAGGAGE,
HANDLING_KAUFMAN,
HANDLING_RANCHER,
HANDLING_FBIRANCH,
HANDLING_VIRGO,
HANDLING_GREENWOO,
HANDLING_HOTRING,
HANDLING_SANDKING,
HANDLING_BLISTAC,
HANDLING_BOXVILLE,
HANDLING_BENSON,
HANDLING_DESPERAD,
HANDLING_LOVEFIST,
HANDLING_BLOODRA,
HANDLING_BLOODRB,
HANDLING_BIKE, HANDLING_BIKE,
HANDLING_MOPED, HANDLING_MOPED,
HANDLING_DIRTBIKE, HANDLING_DIRTBIKE,
HANDLING_ANGEL, HANDLING_ANGEL,
HANDLING_DIRTBIK2,
HANDLING_ANGE2,
HANDLING_FREEWAY, HANDLING_FREEWAY,
HANDLING_PREDATOR, HANDLING_PREDATOR,
HANDLING_SPEEDER, HANDLING_SPEEDER,
HANDLING_REEFER, HANDLING_REEFER,
HANDLING_RIO,
HANDLING_SQUALO,
HANDLING_TROPIC,
HANDLING_COASTGRD,
HANDLING_DINGHY,
HANDLING_MARQUIS,
HANDLING_CUPBOAT,
HANDLING_SEAPLANE, // both boat and plane!
HANDLING_SPARROW,
HANDLING_SEASPAR,
HANDLING_MAVERICK, HANDLING_MAVERICK,
HANDLING_COASTMAV, HANDLING_COASTMAV,
HANDLING_POLMAV, HANDLING_POLMAV,
HANDLING_HUNTER, HANDLING_HUNTER,
HANDLING_RCBARON,
HANDLING_RCGOBLIN, HANDLING_RCGOBLIN,
HANDLING_RCCOPTER, HANDLING_RCCOPTER,
NUMHANDLINGS, NUMHANDLINGS,
NUMBIKEHANDLINGS = HANDLING_FREEWAY+1 - HANDLING_BIKE, NUMBIKEHANDLINGS = HANDLING_FREEWAY+1 - HANDLING_BIKE,
NUMFLYINGHANDLINGS = HANDLING_RCCOPTER+1 - HANDLING_SEAPLANE, NUMFLYINGHANDLINGS = HANDLING_RCCOPTER+1 - HANDLING_MAVERICK,
NUMBOATHANDLINGS = HANDLING_SEAPLANE+1 - HANDLING_PREDATOR, NUMBOATHANDLINGS = HANDLING_COASTMAV+1 - HANDLING_PREDATOR,
}; };
enum tField // most likely a handling field enum, never used so :shrug: enum tField // most likely a handling field enum, never used so :shrug:

View file

@ -1841,8 +1841,7 @@ CVehicle::SetDriver(CPed *driver)
case MI_TAXI: case MI_TAXI:
case MI_CABBIE: case MI_CABBIE:
case MI_ZEBRA: case MI_BORGNINE:
case MI_KAUFMAN:
CWorld::Players[CWorld::PlayerInFocus].m_nMoney += 12; CWorld::Players[CWorld::PlayerInFocus].m_nMoney += 12;
break; break;

View file

@ -384,8 +384,8 @@ public:
bool IsAlarmOn(void) { return m_nAlarmState != 0 && m_nAlarmState != -1 && GetStatus() != STATUS_WRECKED; } bool IsAlarmOn(void) { return m_nAlarmState != 0 && m_nAlarmState != -1 && GetStatus() != STATUS_WRECKED; }
CVehicleModelInfo* GetModelInfo() { return (CVehicleModelInfo*)CModelInfo::GetModelInfo(GetModelIndex()); } CVehicleModelInfo* GetModelInfo() { return (CVehicleModelInfo*)CModelInfo::GetModelInfo(GetModelIndex()); }
bool IsTaxi(void) { return GetModelIndex() == MI_TAXI || GetModelIndex() == MI_CABBIE || GetModelIndex() == MI_ZEBRA || GetModelIndex() == MI_KAUFMAN; } bool IsTaxi(void) { return GetModelIndex() == MI_TAXI || GetModelIndex() == MI_CABBIE || GetModelIndex() == MI_BORGNINE; }
bool IsLimo(void) { return GetModelIndex() == MI_STRETCH || GetModelIndex() == MI_LOVEFIST; } bool IsLimo(void) { return GetModelIndex() == MI_STRETCH; }
bool IsRealHeli(void) { return !!(pHandling->Flags & HANDLING_IS_HELI); } bool IsRealHeli(void) { return !!(pHandling->Flags & HANDLING_IS_HELI); }
bool IsRealPlane(void) { return !!(pHandling->Flags & HANDLING_IS_PLANE); } bool IsRealPlane(void) { return !!(pHandling->Flags & HANDLING_IS_PLANE); }