mirror of
https://github.com/halpz/re3.git
synced 2025-06-29 07:26:22 +00:00
VC vehicles just barely working now
This commit is contained in:
@ -195,7 +195,7 @@ CAutomobile::CAutomobile(int32 id, uint8 CreatedBy)
|
||||
CMatrix mat2(RwFrameGetMatrix(m_aCarNodes[CAR_WHEEL_LF]));
|
||||
mat1.GetPosition() += CVector(mat2.GetPosition().x + 0.1f, 0.0f, mat2.GetPosition().z);
|
||||
mat1.UpdateRW();
|
||||
}else if(GetModelIndex() == MI_MIAMI_SPARROW || GetModelIndex() == MI_MIAMI_RCRAIDER){
|
||||
}else if(GetModelIndex() == MI_SPARROW || GetModelIndex() == MI_RCRAIDER){
|
||||
RpAtomicSetFlags((RpAtomic*)GetFirstObject(m_aCarNodes[CAR_WHEEL_LF]), 0);
|
||||
RpAtomicSetFlags((RpAtomic*)GetFirstObject(m_aCarNodes[CAR_WHEEL_RF]), 0);
|
||||
RpAtomicSetFlags((RpAtomic*)GetFirstObject(m_aCarNodes[CAR_WHEEL_LB]), 0);
|
||||
@ -490,8 +490,7 @@ CAutomobile::ProcessControl(void)
|
||||
TankControl();
|
||||
BlowUpCarsInPath();
|
||||
break;
|
||||
case MI_YARDIE:
|
||||
// beta also had esperanto here it seems
|
||||
case MI_VOODOO:
|
||||
HydraulicControl();
|
||||
break;
|
||||
default:
|
||||
@ -673,9 +672,9 @@ CAutomobile::ProcessControl(void)
|
||||
acceleration /= m_fForceMultiplier;
|
||||
|
||||
// unused
|
||||
if(GetModelIndex() == MI_MIAMI_RCBARON ||
|
||||
GetModelIndex() == MI_MIAMI_RCRAIDER ||
|
||||
GetModelIndex() == MI_MIAMI_SPARROW)
|
||||
if(GetModelIndex() == MI_RCBARON ||
|
||||
GetModelIndex() == MI_RCRAIDER ||
|
||||
GetModelIndex() == MI_SPARROW)
|
||||
acceleration = 0.0f;
|
||||
|
||||
brake = m_fBrakePedal * pHandling->fBrakeDeceleration * CTimer::GetTimeStep();
|
||||
@ -1001,7 +1000,7 @@ CAutomobile::ProcessControl(void)
|
||||
m_bSirenOrAlarm = !m_bSirenOrAlarm;
|
||||
}else
|
||||
m_nCarHornTimer = 0;
|
||||
}else if(GetModelIndex() != MI_YARDIE && !CVehicle::bCheat3){
|
||||
}else if(GetModelIndex() != MI_VOODOO && !CVehicle::bCheat3){
|
||||
if(Pads[0].GetHorn())
|
||||
m_nCarHornTimer = 1;
|
||||
else
|
||||
@ -1012,7 +1011,7 @@ CAutomobile::ProcessControl(void)
|
||||
// Flying
|
||||
|
||||
if(GetStatus() != STATUS_PLAYER && GetStatus() != STATUS_PLAYER_REMOTE && GetStatus() != STATUS_PHYSICS){
|
||||
if(GetModelIndex() == MI_MIAMI_RCRAIDER || GetModelIndex() == MI_MIAMI_SPARROW)
|
||||
if(GetModelIndex() == MI_RCRAIDER || GetModelIndex() == MI_SPARROW)
|
||||
m_aWheelSpeed[0] = Max(m_aWheelSpeed[0]-0.0005f, 0.0f);
|
||||
}else if((GetModelIndex() == MI_DODO || CVehicle::bAllDodosCheat) &&
|
||||
m_vecMoveSpeed.Magnitude() > 0.0f && CTimer::GetTimeStep() > 0.0f){
|
||||
@ -1022,9 +1021,9 @@ CAutomobile::ProcessControl(void)
|
||||
else
|
||||
#endif
|
||||
FlyingControl(FLIGHT_MODEL_DODO);
|
||||
}else if(GetModelIndex() == MI_MIAMI_RCBARON){
|
||||
}else if(GetModelIndex() == MI_RCBARON){
|
||||
FlyingControl(FLIGHT_MODEL_RCPLANE);
|
||||
}else if(GetModelIndex() == MI_MIAMI_RCRAIDER || GetModelIndex() == MI_MIAMI_SPARROW || bAllCarCheat){
|
||||
}else if(GetModelIndex() == MI_RCRAIDER || GetModelIndex() == MI_SPARROW || bAllCarCheat){
|
||||
#ifdef ALLCARSHELI_CHEAT
|
||||
if (bAllCarCheat)
|
||||
FlyingControl(FLIGHT_MODEL_HELI);
|
||||
@ -1591,7 +1590,8 @@ CAutomobile::PreRender(void)
|
||||
|
||||
case MI_TAXI:
|
||||
case MI_CABBIE:
|
||||
case MI_BORGNINE:
|
||||
case MI_ZEBRA:
|
||||
case MI_KAUFMAN:
|
||||
if(bTaxiLight){
|
||||
CVector pos = GetPosition() + GetUp()*0.95f;
|
||||
CCoronas::RegisterCorona((uintptr)this + 21,
|
||||
|
@ -287,8 +287,8 @@ CBoat::ProcessControl(void)
|
||||
AddWakePoint(GetPosition());
|
||||
|
||||
float steerFactor = 1.0f - DotProduct(m_vecMoveSpeed, GetForward());
|
||||
if (GetModelIndex() == MI_GHOST)
|
||||
steerFactor = 1.0f - DotProduct(m_vecMoveSpeed, GetForward())*0.3f;
|
||||
// if (GetModelIndex() == MI_GHOST)
|
||||
// steerFactor = 1.0f - DotProduct(m_vecMoveSpeed, GetForward())*0.3f;
|
||||
if(steerFactor < 0.0f) steerFactor = 0.0f;
|
||||
|
||||
CVector propeller(0.0f, -pHandling->Dimension.y*m_fPropellerY, -pHandling->Dimension.z*m_fPropellerZ);
|
||||
|
@ -21,7 +21,6 @@ const char VehicleNames[NUMHANDLINGS][14] = {
|
||||
"STRETCH",
|
||||
"MANANA",
|
||||
"INFERNUS",
|
||||
"BLISTA",
|
||||
"PONY",
|
||||
"MULE",
|
||||
"CHEETAH",
|
||||
@ -38,7 +37,6 @@ const char VehicleNames[NUMHANDLINGS][14] = {
|
||||
"ENFORCER",
|
||||
"SECURICA",
|
||||
"BANSHEE",
|
||||
"PREDATOR",
|
||||
"BUS",
|
||||
"RHINO",
|
||||
"BARRACKS",
|
||||
@ -50,22 +48,73 @@ const char VehicleNames[NUMHANDLINGS][14] = {
|
||||
"STALLION",
|
||||
"RUMPO",
|
||||
"RCBANDIT",
|
||||
"BELLYUP",
|
||||
"MRWONGS",
|
||||
"MAFIA",
|
||||
"YARDIE",
|
||||
"YAKUZA",
|
||||
"DIABLOS",
|
||||
"COLUMB",
|
||||
"HOODS",
|
||||
"AIRTRAIN",
|
||||
"DEADDODO",
|
||||
"SPEEDER",
|
||||
"REEFER",
|
||||
"PANLANT",
|
||||
"FLATBED",
|
||||
"YANKEE",
|
||||
"BORGNINE"
|
||||
"GOLFCART",
|
||||
"VOODOO",
|
||||
"WASHING",
|
||||
"CUBAN",
|
||||
"ROMERO",
|
||||
"PACKER",
|
||||
"ADMIRAL",
|
||||
"GANGBUR",
|
||||
"ZEBRA",
|
||||
"TOPFUN",
|
||||
"GLENDALE",
|
||||
"OCEANIC",
|
||||
"HERMES",
|
||||
"SABRE1",
|
||||
"SABRETUR",
|
||||
"PHEONIX",
|
||||
"WALTON",
|
||||
"REGINA",
|
||||
"COMET",
|
||||
"DELUXO",
|
||||
"BURRITO",
|
||||
"SPAND",
|
||||
"BAGGAGE",
|
||||
"KAUFMAN",
|
||||
"RANCHER",
|
||||
"FBIRANCH",
|
||||
"VIRGO",
|
||||
"GREENWOO",
|
||||
"HOTRING",
|
||||
"SANDKING",
|
||||
"BLISTAC",
|
||||
"BOXVILLE",
|
||||
"BENSON",
|
||||
"DESPERAD",
|
||||
"LOVEFIST",
|
||||
"BLOODRA",
|
||||
"BLOODRB",
|
||||
"BIKE",
|
||||
"MOPED",
|
||||
"DIRTBIKE",
|
||||
"ANGEL",
|
||||
"FREEWAY",
|
||||
"PREDATOR",
|
||||
"SPEEDER",
|
||||
"REEFER",
|
||||
"RIO",
|
||||
"SQUALO",
|
||||
"TROPIC",
|
||||
"COASTGRD",
|
||||
"DINGHY",
|
||||
"MARQUIS",
|
||||
"CUPBOAT",
|
||||
"SEAPLANE",
|
||||
"SPARROW",
|
||||
"SEASPAR",
|
||||
"MAVERICK",
|
||||
"COASTMAV",
|
||||
"POLMAV",
|
||||
"HUNTER",
|
||||
"RCBARON",
|
||||
"RCGOBLIN",
|
||||
"RCCOPTER"
|
||||
};
|
||||
|
||||
cHandlingDataMgr::cHandlingDataMgr(void)
|
||||
@ -117,7 +166,9 @@ cHandlingDataMgr::LoadHandlingData(void)
|
||||
// yeah, this is kinda crappy
|
||||
if(strncmp(line, ";the end", 9) == 0)
|
||||
keepGoing = 0;
|
||||
else if(line[0] != ';'){
|
||||
// else if(line[0] != ';'){
|
||||
// TODO(MIAMI): read boat, bike, flying values
|
||||
else if(line[0] != ';' && line[0] != '%' && line[0] != '!' && line[0] != '$'){
|
||||
field = 0;
|
||||
strcpy(delim, " \t");
|
||||
// FIX: game seems to use a do-while loop here
|
||||
@ -158,11 +209,14 @@ cHandlingDataMgr::LoadHandlingData(void)
|
||||
case 27: handling->fSuspensionLowerLimit = strtod(word, nil); break;
|
||||
case 28: handling->fSuspensionBias = strtod(word, nil); break;
|
||||
case 29:
|
||||
// TODO(MIAMI): suspension anti-dive multiplier
|
||||
break;
|
||||
case 30:
|
||||
sscanf(word, "%x", &handling->Flags);
|
||||
handling->Transmission.Flags = handling->Flags;
|
||||
break;
|
||||
case 30: handling->FrontLights = atoi(word); break;
|
||||
case 31: handling->RearLights = atoi(word); break;
|
||||
case 31: handling->FrontLights = atoi(word); break;
|
||||
case 32: handling->RearLights = atoi(word); break;
|
||||
}
|
||||
field++;
|
||||
}
|
||||
|
@ -139,5 +139,4 @@ public:
|
||||
bool HasRearWheelDrive(eHandlingId id) { return HandlingData[id].Transmission.nDriveType == 'R'; }
|
||||
bool HasFrontWheelDrive(eHandlingId id) { return HandlingData[id].Transmission.nDriveType == 'F'; }
|
||||
};
|
||||
VALIDATE_SIZE(cHandlingDataMgr, 0x3030);
|
||||
extern cHandlingDataMgr mod_HandlingManager;
|
||||
|
@ -776,7 +776,6 @@ CHeli::InitHelis(void)
|
||||
for(i = 0; i < NUM_HELIS; i++)
|
||||
pHelis[i] = nil;
|
||||
|
||||
((CVehicleModelInfo*)CModelInfo::GetModelInfo(MI_ESCAPE))->SetColModel(&CTempColModels::ms_colModelPed1);
|
||||
((CVehicleModelInfo*)CModelInfo::GetModelInfo(MI_CHOPPER))->SetColModel(&CTempColModels::ms_colModelPed1);
|
||||
}
|
||||
|
||||
@ -787,10 +786,7 @@ GenerateHeli(bool catalina)
|
||||
CVector heliPos;
|
||||
int i;
|
||||
|
||||
if(catalina)
|
||||
heli = new CHeli(MI_ESCAPE, PERMANENT_VEHICLE);
|
||||
else
|
||||
heli = new CHeli(MI_CHOPPER, PERMANENT_VEHICLE);
|
||||
heli = new CHeli(MI_CHOPPER, PERMANENT_VEHICLE);
|
||||
|
||||
if(catalina)
|
||||
heliPos = CVector(-224.0f, 201.0f, 83.0f);
|
||||
@ -867,18 +863,6 @@ CHeli::UpdateHelis(void)
|
||||
pHelis[HELI_SCRIPT]->m_heliStatus = HELI_STATUS_FLY_AWAY;
|
||||
}
|
||||
|
||||
// Handle Catalina's heli
|
||||
if(CatalinaHeliOn){
|
||||
if(CStreaming::HasModelLoaded(MI_ESCAPE) && pHelis[HELI_CATALINA] == nil){
|
||||
pHelis[HELI_CATALINA] = GenerateHeli(true);
|
||||
pHelis[HELI_CATALINA]->m_heliType = HELI_TYPE_CATALINA;
|
||||
}else
|
||||
CStreaming::RequestModel(MI_ESCAPE, STREAMFLAGS_DONT_REMOVE);
|
||||
}else{
|
||||
if(pHelis[HELI_CATALINA])
|
||||
pHelis[HELI_CATALINA]->m_heliStatus = HELI_STATUS_FLY_AWAY;
|
||||
}
|
||||
|
||||
// Delete helis that we no longer need
|
||||
for(i = 0; i < NUM_HELIS; i++)
|
||||
if(pHelis[i] && pHelis[i]->m_heliStatus == HELI_STATUS_FLY_AWAY && pHelis[i]->GetPosition().z > 150.0f){
|
||||
|
@ -385,7 +385,7 @@ CVehicle::FlyingControl(eFlightModel flightModel)
|
||||
case FLIGHT_MODEL_HELI:
|
||||
{
|
||||
CVector vecMoveResistance;
|
||||
if (GetModelIndex() == MI_MIAMI_SPARROW)
|
||||
if (GetModelIndex() == MI_SPARROW)
|
||||
vecMoveResistance = vecHeliMoveRes;
|
||||
else
|
||||
vecMoveResistance = vecRCHeliMoveRes;
|
||||
@ -436,7 +436,7 @@ CVehicle::FlyingControl(eFlightModel flightModel)
|
||||
ApplyTurnForce(fYaw * GetForward() * fYawVar * m_fTurnMass * CTimer::GetTimeStep(), GetRight());
|
||||
|
||||
CVector vecResistance;
|
||||
if (GetModelIndex() == MI_MIAMI_SPARROW)
|
||||
if (GetModelIndex() == MI_SPARROW)
|
||||
vecResistance = vecHeliResistance;
|
||||
else
|
||||
vecResistance = vecRCHeliResistance;
|
||||
@ -875,24 +875,7 @@ CVehicle::IsVehicleNormal(void)
|
||||
{
|
||||
if (!pDriver || m_nNumPassengers != 0 || GetStatus() == STATUS_WRECKED)
|
||||
return false;
|
||||
switch (GetModelIndex()){
|
||||
case MI_FIRETRUCK:
|
||||
case MI_AMBULAN:
|
||||
case MI_TAXI:
|
||||
case MI_POLICE:
|
||||
case MI_ENFORCER:
|
||||
case MI_BUS:
|
||||
case MI_RHINO:
|
||||
case MI_BARRACKS:
|
||||
case MI_DODO:
|
||||
case MI_COACH:
|
||||
case MI_CABBIE:
|
||||
case MI_RCBANDIT:
|
||||
case MI_BORGNINE:
|
||||
return false;
|
||||
default:
|
||||
return true;
|
||||
}
|
||||
return GetModelInfo()->m_vehicleClass != -1;
|
||||
}
|
||||
|
||||
bool
|
||||
@ -1091,7 +1074,7 @@ CVehicle::SetDriver(CPed *driver)
|
||||
driver->GiveWeapon(WEAPONTYPE_SHOTGUN, 5);
|
||||
else if(GetModelIndex() == MI_ENFORCER)
|
||||
driver->m_fArmour = Max(driver->m_fArmour, 100.0f);
|
||||
else if(GetModelIndex() == MI_CABBIE || GetModelIndex() == MI_BORGNINE)
|
||||
else if(GetModelIndex() == MI_CABBIE || GetModelIndex() == MI_ZEBRA) // TODO(MIAMI): check zebra
|
||||
CWorld::Players[CWorld::PlayerInFocus].m_nMoney += 25;
|
||||
bFreebies = false;
|
||||
}
|
||||
|
@ -290,7 +290,7 @@ public:
|
||||
|
||||
bool IsAlarmOn(void) { return m_nAlarmState != 0 && m_nAlarmState != -1; }
|
||||
CVehicleModelInfo* GetModelInfo() { return (CVehicleModelInfo*)CModelInfo::GetModelInfo(GetModelIndex()); }
|
||||
bool IsTaxi(void) { return GetModelIndex() == MI_TAXI || GetModelIndex() == MI_CABBIE || GetModelIndex() == MI_BORGNINE; }
|
||||
bool IsTaxi(void) { return GetModelIndex() == MI_TAXI || GetModelIndex() == MI_CABBIE || GetModelIndex() == MI_ZEBRA || GetModelIndex() == MI_KAUFMAN; }
|
||||
AnimationId GetDriverAnim(void) { return IsCar() && bLowVehicle ? ANIM_CAR_LSIT : (IsBoat() && GetModelIndex() != MI_SPEEDER ? ANIM_DRIVE_BOAT : ANIM_CAR_SIT); }
|
||||
|
||||
static bool bWheelsOnlyCheat;
|
||||
|
Reference in New Issue
Block a user