Merge branch 'miami' into lcs
* miami: Fix backface culling of cutscene objects more renames anim velocity union rename m_vehEnterType -> m_vehDoor Port cmake improvements to miami some loose ends move TODO to Readme Fix build without FIX_BUGS, divide to 0 fixes
This commit is contained in:
150
src/peds/Ped.cpp
150
src/peds/Ped.cpp
@@ -113,15 +113,15 @@ CPed::CPed(uint32 pedType) : m_pedIK(this)
|
||||
m_attackTimer = 0;
|
||||
m_timerUnused = 0;
|
||||
m_lookTimer = 0;
|
||||
m_standardTimer = 0;
|
||||
m_chatTimer = 0;
|
||||
m_shootTimer = 0;
|
||||
m_hitRecoverTimer = 0;
|
||||
m_carJackTimer = 0;
|
||||
m_duckAndCoverTimer = 0;
|
||||
m_moved = CVector2D(0.0f, 0.0f);
|
||||
m_fRotationCur = 0.0f;
|
||||
m_headingRate = 15.0f;
|
||||
m_fRotationDest = 0.0f;
|
||||
m_vehEnterType = CAR_DOOR_LF;
|
||||
m_vehDoor = CAR_DOOR_LF;
|
||||
m_walkAroundType = 0;
|
||||
m_pCurrentPhysSurface = nil;
|
||||
m_vecOffsetFromPhysSurface = CVector(0.0f, 0.0f, 0.0f);
|
||||
@@ -381,7 +381,7 @@ CPed::~CPed(void)
|
||||
GetPedAttractorManager()->DeRegisterPed(this, m_attractor);
|
||||
CRadar::ClearBlipForEntity(BLIP_CHAR, CPools::GetPedPool()->GetIndex(this));
|
||||
if (InVehicle()){
|
||||
uint8 door_flag = GetCarDoorFlag(m_vehEnterType);
|
||||
uint8 door_flag = GetCarDoorFlag(m_vehDoor);
|
||||
if (m_pMyVehicle->pDriver == this)
|
||||
m_pMyVehicle->pDriver = nil;
|
||||
else {
|
||||
@@ -434,8 +434,7 @@ CPed::SetModelIndex(uint32 mi)
|
||||
if (!CanUseTorsoWhenLooking())
|
||||
m_pedIK.m_flags |= CPedIK::LOOKAROUND_HEAD_ONLY;
|
||||
|
||||
// This is a mistake by R*, velocity is CVector, whereas m_vecAnimMoveDelta is CVector2D.
|
||||
(*RPANIMBLENDCLUMPDATA(m_rwObject))->velocity = (CVector*) &m_vecAnimMoveDelta;
|
||||
(*RPANIMBLENDCLUMPDATA(m_rwObject))->velocity2d = &m_vecAnimMoveDelta;
|
||||
|
||||
if(modelInfo->GetHitColModel() == nil)
|
||||
modelInfo->CreateHitColModelSkinned(GetClump());
|
||||
@@ -1299,7 +1298,8 @@ CPed::ScanForInterestingStuff(void)
|
||||
if (LookForInterestingNodes())
|
||||
return;
|
||||
|
||||
if (m_nPedType == PEDTYPE_CRIMINAL && m_hitRecoverTimer < CTimer::GetTimeInMilliseconds()) {
|
||||
if (m_nPedType == PEDTYPE_CRIMINAL && m_carJackTimer < CTimer::GetTimeInMilliseconds()) {
|
||||
// Find a car to steal or a ped to mug if we haven't already decided to steal a car
|
||||
if (CGeneral::GetRandomNumber() % 100 < 10) {
|
||||
int mostExpensiveVehAround = -1;
|
||||
int bestMonetaryValue = 0;
|
||||
@@ -1322,10 +1322,10 @@ CPed::ScanForInterestingStuff(void)
|
||||
}
|
||||
if (bestMonetaryValue > 2000 && mostExpensiveVehAround != -1 && vehicles[mostExpensiveVehAround]) {
|
||||
SetObjective(OBJECTIVE_ENTER_CAR_AS_DRIVER, vehicles[mostExpensiveVehAround]);
|
||||
m_hitRecoverTimer = CTimer::GetTimeInMilliseconds() + 5000;
|
||||
m_carJackTimer = CTimer::GetTimeInMilliseconds() + 5000;
|
||||
return;
|
||||
}
|
||||
m_hitRecoverTimer = CTimer::GetTimeInMilliseconds() + 5000;
|
||||
m_carJackTimer = CTimer::GetTimeInMilliseconds() + 5000;
|
||||
} else if (m_objective != OBJECTIVE_MUG_CHAR && !(CGeneral::GetRandomNumber() & 7)) {
|
||||
CPed *charToMug = nil;
|
||||
for (int i = 0; i < m_numNearPeds; ++i) {
|
||||
@@ -1347,13 +1347,13 @@ CPed::ScanForInterestingStuff(void)
|
||||
if (charToMug)
|
||||
SetObjective(OBJECTIVE_MUG_CHAR, charToMug);
|
||||
|
||||
m_hitRecoverTimer = CTimer::GetTimeInMilliseconds() + 5000;
|
||||
m_carJackTimer = CTimer::GetTimeInMilliseconds() + 5000;
|
||||
}
|
||||
}
|
||||
|
||||
if (m_nPedState == PED_WANDER_PATH) {
|
||||
if (CGeneral::GetRandomNumberInRange(0.0f, 1.0f) < 0.5f) {
|
||||
if (CTimer::GetTimeInMilliseconds() > m_standardTimer) {
|
||||
if (CTimer::GetTimeInMilliseconds() > m_chatTimer) {
|
||||
for (int i = 0; i < m_numNearPeds; i ++) {
|
||||
if (m_nearPeds[i] && m_nearPeds[i]->m_nPedState == PED_WANDER_PATH) {
|
||||
if ((GetPosition() - m_nearPeds[i]->GetPosition()).Magnitude() < 1.8f
|
||||
@@ -1369,7 +1369,7 @@ CPed::ScanForInterestingStuff(void)
|
||||
}
|
||||
}
|
||||
} else {
|
||||
m_standardTimer = CTimer::GetTimeInMilliseconds() + 200;
|
||||
m_chatTimer = CTimer::GetTimeInMilliseconds() + 200;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -3656,7 +3656,7 @@ CPed::SetDirectionToWalkAroundObject(CEntity *obj)
|
||||
if (Abs(angleDiffBtwObjCenterAndForward) >= objTopRightHeading) {
|
||||
if (PI - objTopRightHeading >= Abs(angleDiffBtwObjCenterAndForward)) {
|
||||
if ((angleDiffBtwObjCenterAndForward <= 0.0f || objUpsideDown) && (angleDiffBtwObjCenterAndForward < 0.0f || !objUpsideDown)) {
|
||||
if (goingToEnterCar && (m_vehEnterType == CAR_DOOR_RF || m_vehEnterType == CAR_DOOR_RR)) {
|
||||
if (goingToEnterCar && (m_vehDoor == CAR_DOOR_RF || m_vehDoor == CAR_DOOR_RR)) {
|
||||
m_walkAroundType = 0;
|
||||
} else {
|
||||
if (CGeneral::LimitRadianAngle(m_fRotationDest - angleToFaceObjCenter) >= 0.0f) {
|
||||
@@ -3674,7 +3674,7 @@ CPed::SetDirectionToWalkAroundObject(CEntity *obj)
|
||||
}
|
||||
}
|
||||
} else {
|
||||
if (goingToEnterCar && (m_vehEnterType == CAR_DOOR_LF || m_vehEnterType == CAR_DOOR_LR)) {
|
||||
if (goingToEnterCar && (m_vehDoor == CAR_DOOR_LF || m_vehDoor == CAR_DOOR_LR)) {
|
||||
m_walkAroundType = 0;
|
||||
} else {
|
||||
if (CGeneral::LimitRadianAngle(m_fRotationDest - angleToFaceObjCenter) <= 0.0f) {
|
||||
@@ -3692,7 +3692,7 @@ CPed::SetDirectionToWalkAroundObject(CEntity *obj)
|
||||
}
|
||||
}
|
||||
}
|
||||
} else if (goingToEnterCar && (m_vehEnterType == CAR_DOOR_LF || m_vehEnterType == CAR_DOOR_LR)
|
||||
} else if (goingToEnterCar && (m_vehDoor == CAR_DOOR_LF || m_vehDoor == CAR_DOOR_LR)
|
||||
|| CGeneral::LimitRadianAngle(m_fRotationDest - angleToFaceObjCenter) < 0.0f) {
|
||||
if (entityOnTopLeftOfObj == 1 || entityOnTopLeftOfObj && !entityOnTopRightOfObj && !entityOnBottomRightOfObj) {
|
||||
m_walkAroundType = 3;
|
||||
@@ -3700,7 +3700,7 @@ CPed::SetDirectionToWalkAroundObject(CEntity *obj)
|
||||
} else if (entityOnTopRightOfObj == 1 || entityOnTopRightOfObj && !entityOnTopLeftOfObj && !entityOnBottomLeftOfObj) {
|
||||
m_walkAroundType = 4;
|
||||
}
|
||||
} else if (goingToEnterCar && (m_vehEnterType == CAR_DOOR_LF || m_vehEnterType == CAR_DOOR_LR)
|
||||
} else if (goingToEnterCar && (m_vehDoor == CAR_DOOR_LF || m_vehDoor == CAR_DOOR_LR)
|
||||
|| CGeneral::LimitRadianAngle(m_fRotationDest - angleToFaceObjCenter) > 0.0f) {
|
||||
if (entityOnBottomLeftOfObj == 1 || entityOnBottomLeftOfObj && !entityOnTopRightOfObj && !entityOnBottomRightOfObj) {
|
||||
m_walkAroundType = 2;
|
||||
@@ -3723,10 +3723,10 @@ CPed::SetDirectionToWalkAroundObject(CEntity *obj)
|
||||
if (Abs(angleDiffBtwObjCenterAndForward) < objTopRightHeading) {
|
||||
if (goingToEnterCar) {
|
||||
if (goingToEnterCarAndItsVan) {
|
||||
if (m_vehEnterType == CAR_DOOR_LR || m_vehEnterType == CAR_DOOR_RR)
|
||||
if (m_vehDoor == CAR_DOOR_LR || m_vehDoor == CAR_DOOR_RR)
|
||||
return;
|
||||
}
|
||||
if (m_vehEnterType != CAR_DOOR_LF && m_vehEnterType != CAR_DOOR_LR && (!entityOnBottomRightOfObj || entityOnBottomLeftOfObj)) {
|
||||
if (m_vehDoor != CAR_DOOR_LF && m_vehDoor != CAR_DOOR_LR && (!entityOnBottomRightOfObj || entityOnBottomLeftOfObj)) {
|
||||
m_fRotationDest = CGeneral::LimitRadianAngle(dirToSet - HALFPI);
|
||||
localPosToHead.x = adjustedColMax.x;
|
||||
localPosToHead.z = 0.0f;
|
||||
@@ -3755,9 +3755,9 @@ CPed::SetDirectionToWalkAroundObject(CEntity *obj)
|
||||
} else {
|
||||
if (PI - objTopRightHeading >= Abs(angleDiffBtwObjCenterAndForward)) {
|
||||
if (angleDiffBtwObjCenterAndForward <= 0.0f) {
|
||||
if (!goingToEnterCar || !goingToEnterCarAndItsVan || m_vehEnterType != CAR_DOOR_LR && m_vehEnterType != CAR_DOOR_RR) {
|
||||
if (!goingToEnterCar || !goingToEnterCarAndItsVan || m_vehDoor != CAR_DOOR_LR && m_vehDoor != CAR_DOOR_RR) {
|
||||
if (goingToEnterCar) {
|
||||
if (m_vehEnterType == CAR_DOOR_RF || (m_vehEnterType == CAR_DOOR_RR && !goingToEnterCarAndItsVan))
|
||||
if (m_vehDoor == CAR_DOOR_RF || (m_vehDoor == CAR_DOOR_RR && !goingToEnterCarAndItsVan))
|
||||
return;
|
||||
}
|
||||
if (m_walkAroundType == 4 || m_walkAroundType == 3
|
||||
@@ -3779,14 +3779,14 @@ CPed::SetDirectionToWalkAroundObject(CEntity *obj)
|
||||
localPosToHead.z = 0.0f;
|
||||
localPosToHead.y = adjustedColMin.y;
|
||||
}
|
||||
} else if (goingToEnterCar && goingToEnterCarAndItsVan && (m_vehEnterType == CAR_DOOR_LR || m_vehEnterType == CAR_DOOR_RR)) {
|
||||
} else if (goingToEnterCar && goingToEnterCarAndItsVan && (m_vehDoor == CAR_DOOR_LR || m_vehDoor == CAR_DOOR_RR)) {
|
||||
m_fRotationDest = CGeneral::LimitRadianAngle(PI + dirToSet);
|
||||
localPosToHead.x = adjustedColMin.x;
|
||||
localPosToHead.z = 0.0f;
|
||||
localPosToHead.y = adjustedColMin.y;
|
||||
} else {
|
||||
if (goingToEnterCar) {
|
||||
if (m_vehEnterType == CAR_DOOR_LF || m_vehEnterType == CAR_DOOR_LR && !goingToEnterCarAndItsVan)
|
||||
if (m_vehDoor == CAR_DOOR_LF || m_vehDoor == CAR_DOOR_LR && !goingToEnterCarAndItsVan)
|
||||
return;
|
||||
}
|
||||
if (m_walkAroundType == 1 || m_walkAroundType == 2
|
||||
@@ -3804,8 +3804,8 @@ CPed::SetDirectionToWalkAroundObject(CEntity *obj)
|
||||
}
|
||||
}
|
||||
} else {
|
||||
if (goingToEnterCar && (!goingToEnterCarAndItsVan || m_vehEnterType != CAR_DOOR_LR && m_vehEnterType != CAR_DOOR_RR)) {
|
||||
if (m_vehEnterType != CAR_DOOR_LF && m_vehEnterType != CAR_DOOR_LR && (!entityOnTopRightOfObj || entityOnTopLeftOfObj)) {
|
||||
if (goingToEnterCar && (!goingToEnterCarAndItsVan || m_vehDoor != CAR_DOOR_LR && m_vehDoor != CAR_DOOR_RR)) {
|
||||
if (m_vehDoor != CAR_DOOR_LF && m_vehDoor != CAR_DOOR_LR && (!entityOnTopRightOfObj || entityOnTopLeftOfObj)) {
|
||||
|
||||
m_fRotationDest = CGeneral::LimitRadianAngle(dirToSet - HALFPI);
|
||||
localPosToHead.x = adjustedColMax.x;
|
||||
@@ -4099,9 +4099,9 @@ CPed::PedSetOutCarCB(CAnimBlendAssociation *animAssoc, void *arg)
|
||||
}
|
||||
if (veh && veh->IsBike())
|
||||
// BUG?
|
||||
veh->m_nGettingOutFlags &= ~GetBikeDoorFlag(ped->m_vehEnterType);
|
||||
veh->m_nGettingOutFlags &= ~GetBikeDoorFlag(ped->m_vehDoor);
|
||||
else
|
||||
veh->m_nGettingOutFlags &= ~GetCarDoorFlag(ped->m_vehEnterType);
|
||||
veh->m_nGettingOutFlags &= ~GetCarDoorFlag(ped->m_vehDoor);
|
||||
|
||||
if (veh->pDriver == ped) {
|
||||
veh->RemoveDriver();
|
||||
@@ -4123,7 +4123,7 @@ CPed::PedSetOutCarCB(CAnimBlendAssociation *animAssoc, void *arg)
|
||||
|
||||
if (veh->bIsBus && !veh->IsUpsideDown() && !veh->IsOnItsSide()) {
|
||||
float angleAfterExit;
|
||||
if (ped->m_vehEnterType == CAR_DOOR_LF) {
|
||||
if (ped->m_vehDoor == CAR_DOOR_LF) {
|
||||
angleAfterExit = HALFPI + veh->GetForward().Heading();
|
||||
} else {
|
||||
angleAfterExit = veh->GetForward().Heading() - HALFPI;
|
||||
@@ -4174,7 +4174,7 @@ CPed::PedSetDraggedOutCarCB(CAnimBlendAssociation *dragAssoc, void *arg)
|
||||
uint8 exitFlags = 0;
|
||||
quickJackedAssoc = RpAnimBlendClumpGetAssociation(ped->GetClump(), ANIM_CAR_QJACKED);
|
||||
if (dragAssoc && dragAssoc->animId == ANIM_BIKE_HIT && ped->m_pMyVehicle) {
|
||||
if (ped->m_vehEnterType == CAR_DOOR_LF || ped->m_vehEnterType == CAR_DOOR_RF) {
|
||||
if (ped->m_vehDoor == CAR_DOOR_LF || ped->m_vehDoor == CAR_DOOR_RF) {
|
||||
CAnimManager::BlendAnimation(ped->GetClump(), ASSOCGRP_STD, ANIM_BIKE_FALL_OFF, 100.0f);
|
||||
ped->m_pMyVehicle->m_nGettingOutFlags &= ~(CAR_DOOR_FLAG_RF | CAR_DOOR_FLAG_LF);
|
||||
} else {
|
||||
@@ -4196,9 +4196,9 @@ CPed::PedSetDraggedOutCarCB(CAnimBlendAssociation *dragAssoc, void *arg)
|
||||
vehicle = ped->m_pMyVehicle;
|
||||
|
||||
if (vehicle && vehicle->IsBike())
|
||||
exitFlags = GetBikeDoorFlagInclJumpInFromFront(ped->m_vehEnterType);
|
||||
exitFlags = GetBikeDoorFlagInclJumpInFromFront(ped->m_vehDoor);
|
||||
else
|
||||
exitFlags = GetCarDoorFlag(ped->m_vehEnterType);
|
||||
exitFlags = GetCarDoorFlag(ped->m_vehDoor);
|
||||
|
||||
if (vehicle)
|
||||
vehicle->m_nGettingOutFlags &= ~exitFlags;
|
||||
@@ -4419,7 +4419,7 @@ CPed::PedSetInCarCB(CAnimBlendAssociation *animAssoc, void *arg)
|
||||
} else if (veh->bIsBus) {
|
||||
veh->AddPassenger(ped);
|
||||
} else {
|
||||
switch (ped->m_vehEnterType) {
|
||||
switch (ped->m_vehDoor) {
|
||||
case CAR_DOOR_RF:
|
||||
veh->AddPassenger(ped, 0);
|
||||
break;
|
||||
@@ -4449,9 +4449,9 @@ CPed::PedSetInCarCB(CAnimBlendAssociation *animAssoc, void *arg)
|
||||
|
||||
int8 doorFlag;
|
||||
if (veh->IsBike()) {
|
||||
doorFlag = GetBikeDoorFlagInclJumpInFromFront(ped->m_vehEnterType);
|
||||
doorFlag = GetBikeDoorFlagInclJumpInFromFront(ped->m_vehDoor);
|
||||
} else {
|
||||
doorFlag = GetEnterCarDoorFlag(ped->m_vehEnterType, veh->m_nNumMaxPassengers);
|
||||
doorFlag = GetEnterCarDoorFlag(ped->m_vehDoor, veh->m_nNumMaxPassengers);
|
||||
}
|
||||
|
||||
veh->m_nGettingInFlags &= ~doorFlag;
|
||||
@@ -5133,13 +5133,13 @@ void
|
||||
CPed::Idle(void)
|
||||
{
|
||||
CVehicle *veh = m_pMyVehicle;
|
||||
if (veh && veh->m_nGettingOutFlags && m_vehEnterType) {
|
||||
if (veh && veh->m_nGettingOutFlags && m_vehDoor) {
|
||||
|
||||
if (veh->m_nGettingOutFlags & GetCarDoorFlag(m_vehEnterType)) {
|
||||
if (veh->m_nGettingOutFlags & GetCarDoorFlag(m_vehDoor)) {
|
||||
|
||||
if (m_objective != OBJECTIVE_KILL_CHAR_ON_FOOT) {
|
||||
|
||||
CVector doorPos = GetPositionToOpenCarDoor(veh, m_vehEnterType);
|
||||
CVector doorPos = GetPositionToOpenCarDoor(veh, m_vehDoor);
|
||||
CVector doorDist = GetPosition() - doorPos;
|
||||
|
||||
if (doorDist.MagnitudeSqr() < sq(0.5f)) {
|
||||
@@ -5886,7 +5886,7 @@ CPed::ClearFlee(void)
|
||||
{
|
||||
RestorePreviousState();
|
||||
bUsePedNodeSeek = false;
|
||||
m_standardTimer = 0;
|
||||
m_chatTimer = 0;
|
||||
m_fleeTimer = 0;
|
||||
}
|
||||
|
||||
@@ -5932,7 +5932,7 @@ CPed::Flee(void)
|
||||
if (m_nPedStateTimer < CTimer::GetTimeInMilliseconds()
|
||||
&& m_collidingThingTimer < CTimer::GetTimeInMilliseconds()) {
|
||||
|
||||
if (m_pNextPathNode && CTimer::GetTimeInMilliseconds() > m_standardTimer) {
|
||||
if (m_pNextPathNode && CTimer::GetTimeInMilliseconds() > m_chatTimer) {
|
||||
|
||||
curDirectionShouldBe = CGeneral::GetNodeHeadingFromVector(GetPosition().x - ms_vec2DFleePosition.x, GetPosition().y - ms_vec2DFleePosition.y);
|
||||
if (m_nPathDir < curDirectionShouldBe)
|
||||
@@ -5975,7 +5975,7 @@ CPed::Flee(void)
|
||||
|
||||
if (m_pNextPathNode && m_pNextPathNode != realLastNode && m_pNextPathNode != m_pLastPathNode && curDirectionShouldBe - nextDirection != 4) {
|
||||
m_nPathDir = nextDirection;
|
||||
m_standardTimer = CTimer::GetTimeInMilliseconds() + 2000;
|
||||
m_chatTimer = CTimer::GetTimeInMilliseconds() + 2000;
|
||||
} else {
|
||||
bUsePedNodeSeek = false;
|
||||
SetMoveState(PEDMOVE_RUN);
|
||||
@@ -7215,7 +7215,7 @@ CPed::SetChat(CEntity *chatWith, uint32 time)
|
||||
SetMoveState(PEDMOVE_STILL);
|
||||
m_lookTimer = 0;
|
||||
SetLookFlag(chatWith, true);
|
||||
m_standardTimer = CTimer::GetTimeInMilliseconds() + time;
|
||||
m_chatTimer = CTimer::GetTimeInMilliseconds() + time;
|
||||
m_lookTimer = CTimer::GetTimeInMilliseconds() + 3000;
|
||||
}
|
||||
|
||||
@@ -7236,7 +7236,7 @@ CPed::Chat(void)
|
||||
|
||||
if (partner->m_nPedState != PED_CHAT) {
|
||||
ClearChat();
|
||||
m_standardTimer = CTimer::GetTimeInMilliseconds() + 30000;
|
||||
m_chatTimer = CTimer::GetTimeInMilliseconds() + 30000;
|
||||
if (partner->m_pedInObjective) {
|
||||
if (partner->m_objective == OBJECTIVE_KILL_CHAR_ON_FOOT ||
|
||||
partner->m_objective == OBJECTIVE_FLEE_CHAR_ON_FOOT_TILL_SAFE)
|
||||
@@ -7269,9 +7269,9 @@ CPed::Chat(void)
|
||||
Say(SOUND_PED_CHAT);
|
||||
}
|
||||
}
|
||||
if (m_standardTimer && CTimer::GetTimeInMilliseconds() > m_standardTimer) {
|
||||
if (m_chatTimer && CTimer::GetTimeInMilliseconds() > m_chatTimer) {
|
||||
ClearChat();
|
||||
m_standardTimer = CTimer::GetTimeInMilliseconds() + 30000;
|
||||
m_chatTimer = CTimer::GetTimeInMilliseconds() + 30000;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -7480,7 +7480,7 @@ CPed::SetSeekCar(CVehicle *car, uint32 doorNode)
|
||||
m_pMyVehicle = car;
|
||||
m_pMyVehicle->RegisterReference((CEntity**) &m_pMyVehicle);
|
||||
// m_pSeekTarget->RegisterReference((CEntity**) &m_pSeekTarget);
|
||||
m_vehEnterType = doorNode;
|
||||
m_vehDoor = doorNode;
|
||||
m_distanceToCountSeekDone = 0.5f;
|
||||
SetPedState(PED_SEEK_CAR);
|
||||
|
||||
@@ -7498,9 +7498,9 @@ CPed::SeekCar(void)
|
||||
}
|
||||
|
||||
if (m_objective != OBJECTIVE_ENTER_CAR_AS_PASSENGER) {
|
||||
if (!vehToSeek->IsBike() && m_vehEnterType && m_objective != OBJECTIVE_ENTER_CAR_AS_DRIVER) {
|
||||
if (!vehToSeek->IsBike() && m_vehDoor && m_objective != OBJECTIVE_ENTER_CAR_AS_DRIVER) {
|
||||
if (IsRoomToBeCarJacked()) {
|
||||
dest = GetPositionToOpenCarDoor(vehToSeek, m_vehEnterType);
|
||||
dest = GetPositionToOpenCarDoor(vehToSeek, m_vehDoor);
|
||||
} else if (m_nPedType == PEDTYPE_COP) {
|
||||
dest = GetPositionToOpenCarDoor(vehToSeek, CAR_DOOR_RF);
|
||||
} else {
|
||||
@@ -7509,7 +7509,7 @@ CPed::SeekCar(void)
|
||||
} else
|
||||
GetNearestDoor(vehToSeek, dest);
|
||||
} else {
|
||||
if (m_hitRecoverTimer > CTimer::GetTimeInMilliseconds()) {
|
||||
if (m_carJackTimer > CTimer::GetTimeInMilliseconds()) {
|
||||
SetMoveState(PEDMOVE_STILL);
|
||||
return;
|
||||
}
|
||||
@@ -7553,7 +7553,7 @@ CPed::SeekCar(void)
|
||||
if (IsPlayer()) {
|
||||
ClearObjective();
|
||||
} else if (CharCreatedBy == RANDOM_CHAR) {
|
||||
m_hitRecoverTimer = CTimer::GetTimeInMilliseconds() + 30000;
|
||||
m_carJackTimer = CTimer::GetTimeInMilliseconds() + 30000;
|
||||
}
|
||||
SetMoveState(PEDMOVE_STILL);
|
||||
TheCamera.ClearPlayerWeaponMode();
|
||||
@@ -7581,7 +7581,7 @@ CPed::SeekCar(void)
|
||||
else if (2.0f * vehToSeek->GetColModel()->boundingBox.max.x > distToDestSqr)
|
||||
bCanPedEnterSeekedCar = true;
|
||||
|
||||
if (vehToSeek->m_nGettingInFlags & GetCarDoorFlag(m_vehEnterType))
|
||||
if (vehToSeek->m_nGettingInFlags & GetCarDoorFlag(m_vehDoor))
|
||||
bVehEnterDoorIsBlocked = true;
|
||||
else
|
||||
bVehEnterDoorIsBlocked = false;
|
||||
@@ -7592,7 +7592,7 @@ CPed::SeekCar(void)
|
||||
if (1.6f + GetPosition().z > dest.z && GetPosition().z - 0.5f < dest.z) {
|
||||
#ifdef GTA_TRAIN
|
||||
if (vehToSeek->IsTrain()) {
|
||||
SetEnterTrain(vehToSeek, m_vehEnterType);
|
||||
SetEnterTrain(vehToSeek, m_vehDoor);
|
||||
} else
|
||||
#endif
|
||||
{
|
||||
@@ -7613,42 +7613,42 @@ CPed::SeekCar(void)
|
||||
case STATUS_PLAYER_DISABLED:
|
||||
if (vehToSeek->IsBike()) {
|
||||
if ((!m_leader || m_leader != vehToSeek->pDriver) &&
|
||||
((m_vehEnterType == CAR_DOOR_LF || m_vehEnterType == CAR_DOOR_RF || m_vehEnterType == CAR_WINDSCREEN) && vehToSeek->pDriver ||
|
||||
(m_vehEnterType == CAR_DOOR_LR || m_vehEnterType == CAR_DOOR_RR) && vehToSeek->pPassengers[0])) {
|
||||
((m_vehDoor == CAR_DOOR_LF || m_vehDoor == CAR_DOOR_RF || m_vehDoor == CAR_WINDSCREEN) && vehToSeek->pDriver ||
|
||||
(m_vehDoor == CAR_DOOR_LR || m_vehDoor == CAR_DOOR_RR) && vehToSeek->pPassengers[0])) {
|
||||
SetCarJack(vehToSeek);
|
||||
} else {
|
||||
SetEnterCar(vehToSeek, m_vehEnterType);
|
||||
SetEnterCar(vehToSeek, m_vehDoor);
|
||||
}
|
||||
} else if (!vehToSeek->bIsBus && (!m_leader || m_leader != vehToSeek->pDriver) &&
|
||||
(m_vehEnterType == CAR_DOOR_LF && vehToSeek->pDriver || m_vehEnterType == CAR_DOOR_RF && vehToSeek->pPassengers[0] || m_vehEnterType == CAR_DOOR_LR && vehToSeek->pPassengers[1] || m_vehEnterType == CAR_DOOR_RR && vehToSeek->pPassengers[2])) {
|
||||
(m_vehDoor == CAR_DOOR_LF && vehToSeek->pDriver || m_vehDoor == CAR_DOOR_RF && vehToSeek->pPassengers[0] || m_vehDoor == CAR_DOOR_LR && vehToSeek->pPassengers[1] || m_vehDoor == CAR_DOOR_RR && vehToSeek->pPassengers[2])) {
|
||||
SetCarJack(vehToSeek);
|
||||
if (m_objective == OBJECTIVE_ENTER_CAR_AS_DRIVER && m_vehEnterType != CAR_DOOR_LF)
|
||||
if (m_objective == OBJECTIVE_ENTER_CAR_AS_DRIVER && m_vehDoor != CAR_DOOR_LF)
|
||||
vehToSeek->pDriver->bFleeAfterExitingCar = true;
|
||||
} else {
|
||||
SetEnterCar(vehToSeek, m_vehEnterType);
|
||||
SetEnterCar(vehToSeek, m_vehDoor);
|
||||
}
|
||||
break;
|
||||
case STATUS_ABANDONED:
|
||||
if (vehToSeek->IsBike()) {
|
||||
if ((m_vehEnterType == CAR_DOOR_LR || m_vehEnterType == CAR_DOOR_RR) && vehToSeek->pPassengers[0]) {
|
||||
if ((m_vehDoor == CAR_DOOR_LR || m_vehDoor == CAR_DOOR_RR) && vehToSeek->pPassengers[0]) {
|
||||
if (vehToSeek->pPassengers[0]->bDontDragMeOutCar) {
|
||||
if (IsPlayer())
|
||||
SetEnterCar(vehToSeek, m_vehEnterType);
|
||||
SetEnterCar(vehToSeek, m_vehDoor);
|
||||
} else {
|
||||
SetCarJack(vehToSeek);
|
||||
}
|
||||
} else {
|
||||
SetEnterCar(vehToSeek, m_vehEnterType);
|
||||
SetEnterCar(vehToSeek, m_vehDoor);
|
||||
}
|
||||
} else if (m_vehEnterType == CAR_DOOR_RF && vehToSeek->pPassengers[0]) {
|
||||
} else if (m_vehDoor == CAR_DOOR_RF && vehToSeek->pPassengers[0]) {
|
||||
if (vehToSeek->pPassengers[0]->bDontDragMeOutCar) {
|
||||
if (IsPlayer())
|
||||
SetEnterCar(vehToSeek, m_vehEnterType);
|
||||
SetEnterCar(vehToSeek, m_vehDoor);
|
||||
} else {
|
||||
SetCarJack(vehToSeek);
|
||||
}
|
||||
} else {
|
||||
SetEnterCar(vehToSeek, m_vehEnterType);
|
||||
SetEnterCar(vehToSeek, m_vehDoor);
|
||||
}
|
||||
break;
|
||||
case STATUS_WRECKED:
|
||||
@@ -7966,7 +7966,7 @@ CPed::LookForInterestingNodes(void)
|
||||
C2dEffect *effect;
|
||||
CMatrix *objMat;
|
||||
|
||||
if ((CTimer::GetFrameCounter() + (m_randomSeed % 256)) & 7 || CTimer::GetTimeInMilliseconds() <= m_standardTimer) {
|
||||
if ((CTimer::GetFrameCounter() + (m_randomSeed % 256)) & 7 || CTimer::GetTimeInMilliseconds() <= m_chatTimer) {
|
||||
return false;
|
||||
}
|
||||
bool found = false;
|
||||
@@ -8076,7 +8076,7 @@ CPed::LookForInterestingNodes(void)
|
||||
float angleToFace = CGeneral::GetRadianAngleBetweenPoints(effectFrontLocal.x, effectFrontLocal.y, 0.0f, 0.0f);
|
||||
randVal = CGeneral::GetRandomNumber() % 256;
|
||||
if (randVal <= m_randomSeed % 256) {
|
||||
m_standardTimer = CTimer::GetTimeInMilliseconds() + 2000;
|
||||
m_chatTimer = CTimer::GetTimeInMilliseconds() + 2000;
|
||||
SetLookFlag(angleToFace, true);
|
||||
SetLookTimer(1000);
|
||||
return false;
|
||||
@@ -8299,7 +8299,7 @@ CPed::SetWaitState(eWaitState state, void *time)
|
||||
if (m_objective == OBJECTIVE_ENTER_CAR_AS_PASSENGER && CharCreatedBy == RANDOM_CHAR && m_nPedState == PED_SEEK_CAR) {
|
||||
ClearObjective();
|
||||
RestorePreviousState();
|
||||
m_hitRecoverTimer = CTimer::GetTimeInMilliseconds() + 30000;
|
||||
m_carJackTimer = CTimer::GetTimeInMilliseconds() + 30000;
|
||||
}
|
||||
break;
|
||||
case WAITSTATE_TURN180:
|
||||
@@ -8328,7 +8328,7 @@ CPed::SetWaitState(eWaitState state, void *time)
|
||||
if (m_objective == OBJECTIVE_ENTER_CAR_AS_PASSENGER && CharCreatedBy == RANDOM_CHAR && m_nPedState == PED_SEEK_CAR) {
|
||||
ClearObjective();
|
||||
RestorePreviousState();
|
||||
m_hitRecoverTimer = CTimer::GetTimeInMilliseconds() + 30000;
|
||||
m_carJackTimer = CTimer::GetTimeInMilliseconds() + 30000;
|
||||
}
|
||||
break;
|
||||
case WAITSTATE_LOOK_ABOUT:
|
||||
@@ -8980,14 +8980,14 @@ CPed::SetSolicit(uint32 time)
|
||||
|
||||
if (CharCreatedBy != MISSION_CHAR && m_carInObjective->m_nNumGettingIn == 0
|
||||
&& CTimer::GetTimeInMilliseconds() < m_objectiveTimer) {
|
||||
if (m_vehEnterType == CAR_DOOR_LF) {
|
||||
if (m_vehDoor == CAR_DOOR_LF) {
|
||||
m_fRotationDest = m_carInObjective->GetForward().Heading() - HALFPI;
|
||||
} else {
|
||||
m_fRotationDest = m_carInObjective->GetForward().Heading() + HALFPI;
|
||||
}
|
||||
|
||||
if (Abs(m_fRotationDest - m_fRotationCur) < HALFPI) {
|
||||
m_standardTimer = CTimer::GetTimeInMilliseconds() + time;
|
||||
m_chatTimer = CTimer::GetTimeInMilliseconds() + time;
|
||||
|
||||
if(!m_carInObjective->bIsVan && !m_carInObjective->bIsBus)
|
||||
m_pVehicleAnim = CAnimManager::BlendAnimation(GetClump(), ASSOCGRP_STD, ANIM_CAR_HOOKERTALK, 4.0f);
|
||||
@@ -9001,8 +9001,8 @@ CPed::SetSolicit(uint32 time)
|
||||
void
|
||||
CPed::Solicit(void)
|
||||
{
|
||||
if (m_standardTimer >= CTimer::GetTimeInMilliseconds() && m_carInObjective) {
|
||||
CVector doorPos = GetPositionToOpenCarDoor(m_carInObjective, m_vehEnterType, 0.0f);
|
||||
if (m_chatTimer >= CTimer::GetTimeInMilliseconds() && m_carInObjective) {
|
||||
CVector doorPos = GetPositionToOpenCarDoor(m_carInObjective, m_vehDoor, 0.0f);
|
||||
Say(SOUND_PED_SOLICIT);
|
||||
if (FindPlayerVehicle() == m_carInObjective) {
|
||||
FindPlayerPed()->Say(SOUND_PED_SOLICIT);
|
||||
@@ -9062,7 +9062,7 @@ CPed::BuyIceCream(void)
|
||||
{
|
||||
if (m_carInObjective) {
|
||||
CPed *driver = m_carInObjective->pDriver;
|
||||
if (driver && CTimer::GetTimeInMilliseconds() > m_standardTimer) {
|
||||
if (driver && CTimer::GetTimeInMilliseconds() > m_chatTimer) {
|
||||
SetChat(driver, 8000);
|
||||
driver->SetChat(this, 8000);
|
||||
return;
|
||||
@@ -9138,7 +9138,7 @@ CPed::PossiblyFindBetterPosToSeekCar(CVector *pos, CVehicle *veh)
|
||||
bool canHeadToRf = NTVF_RF <= 0.0f || NTVF_RF >= HALFPI;
|
||||
|
||||
// Only order of conditions are different among enterTypes.
|
||||
if (m_vehEnterType == CAR_DOOR_RR) {
|
||||
if (m_vehDoor == CAR_DOOR_RR) {
|
||||
if (canHeadToRr) {
|
||||
foundPos = rightRearPos;
|
||||
foundIt = true;
|
||||
@@ -9152,7 +9152,7 @@ CPed::PossiblyFindBetterPosToSeekCar(CVector *pos, CVehicle *veh)
|
||||
foundPos = leftFrontPos;
|
||||
foundIt = true;
|
||||
}
|
||||
} else if(m_vehEnterType == CAR_DOOR_RF) {
|
||||
} else if(m_vehDoor == CAR_DOOR_RF) {
|
||||
if (canHeadToRf) {
|
||||
foundPos = rightFrontPos;
|
||||
foundIt = true;
|
||||
@@ -9166,7 +9166,7 @@ CPed::PossiblyFindBetterPosToSeekCar(CVector *pos, CVehicle *veh)
|
||||
foundPos = leftRearPos;
|
||||
foundIt = true;
|
||||
}
|
||||
} else if (m_vehEnterType == CAR_DOOR_LF) {
|
||||
} else if (m_vehDoor == CAR_DOOR_LF) {
|
||||
if (canHeadToLf) {
|
||||
foundPos = leftFrontPos;
|
||||
foundIt = true;
|
||||
@@ -9180,7 +9180,7 @@ CPed::PossiblyFindBetterPosToSeekCar(CVector *pos, CVehicle *veh)
|
||||
foundPos = rightRearPos;
|
||||
foundIt = true;
|
||||
}
|
||||
} else if (m_vehEnterType == CAR_DOOR_LR) {
|
||||
} else if (m_vehDoor == CAR_DOOR_LR) {
|
||||
if (canHeadToLr) {
|
||||
foundPos = leftRearPos;
|
||||
foundIt = true;
|
||||
|
||||
Reference in New Issue
Block a user