summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNikolay Korolev <nickvnuk@gmail.com>2020-03-31 23:07:09 +0200
committerNikolay Korolev <nickvnuk@gmail.com>2020-03-31 23:07:09 +0200
commite34631adcea643d10c23a3f108cddf5ed95c2442 (patch)
tree87125ca8dded2422676f87138cf59664e81794f9
parentMerge remote-tracking branch 'upstream/master' (diff)
downloadre3-e34631adcea643d10c23a3f108cddf5ed95c2442.tar
re3-e34631adcea643d10c23a3f108cddf5ed95c2442.tar.gz
re3-e34631adcea643d10c23a3f108cddf5ed95c2442.tar.bz2
re3-e34631adcea643d10c23a3f108cddf5ed95c2442.tar.lz
re3-e34631adcea643d10c23a3f108cddf5ed95c2442.tar.xz
re3-e34631adcea643d10c23a3f108cddf5ed95c2442.tar.zst
re3-e34631adcea643d10c23a3f108cddf5ed95c2442.zip
-rw-r--r--src/control/Garages.cpp180
-rw-r--r--src/control/Garages.h5
2 files changed, 68 insertions, 117 deletions
diff --git a/src/control/Garages.cpp b/src/control/Garages.cpp
index aabad1a6..93857b14 100644
--- a/src/control/Garages.cpp
+++ b/src/control/Garages.cpp
@@ -119,7 +119,7 @@ int32(&CGarages::CarTypesCollected)[TOTAL_COLLECTCARS_GARAGES] = *(int32(*)[TOTA
int32& CGarages::CrushedCarId = *(int32*)0x943060;
uint32& CGarages::LastTimeHelpMessage = *(uint32*)0x8F1B58;
int32& CGarages::MessageNumberInString = *(int32*)0x885BA8;
-char(&CGarages::MessageIDString)[8] = *(char(*)[8]) * (uintptr*)0x878358;
+char(&CGarages::MessageIDString)[MESSAGE_LENGTH] = *(char(*)[MESSAGE_LENGTH]) * (uintptr*)0x878358;
int32& CGarages::MessageNumberInString2 = *(int32*)0x8E2C14;
uint32& CGarages::MessageStartTime = *(uint32*)0x8F2530;
uint32& CGarages::MessageEndTime = *(uint32*)0x8F597C;
@@ -467,8 +467,8 @@ void CGarage::Update()
if (IsPlayerOutsideGarage())
m_eGarageState = GS_OPENED;
break;
- //case GS_CLOSEDCONTAINSCAR:
- //case GS_AFTERDROPOFF:
+ //case GS_CLOSEDCONTAINSCAR:
+ //case GS_AFTERDROPOFF:
default:
break;
}
@@ -571,8 +571,8 @@ void CGarage::Update()
if (IsPlayerOutsideGarage())
m_eGarageState = GS_OPENED;
break;
- //case GS_CLOSEDCONTAINSCAR:
- //case GS_AFTERDROPOFF:
+ //case GS_CLOSEDCONTAINSCAR:
+ //case GS_AFTERDROPOFF:
default:
break;
}
@@ -631,9 +631,9 @@ void CGarage::Update()
}
UpdateDoorsHeight();
break;
- //case GS_OPENEDCONTAINSCAR:
- //case GS_CLOSEDCONTAINSCAR:
- //case GS_AFTERDROPOFF:
+ //case GS_OPENEDCONTAINSCAR:
+ //case GS_CLOSEDCONTAINSCAR:
+ //case GS_AFTERDROPOFF:
default:
break;
}
@@ -715,9 +715,9 @@ void CGarage::Update()
}
UpdateDoorsHeight();
break;
- //case GS_OPENEDCONTAINSCAR:
- //case GS_CLOSEDCONTAINSCAR:
- //case GS_AFTERDROPOFF:
+ //case GS_OPENEDCONTAINSCAR:
+ //case GS_CLOSEDCONTAINSCAR:
+ //case GS_AFTERDROPOFF:
default:
break;
}
@@ -754,7 +754,7 @@ void CGarage::Update()
TheCamera.SetCameraDirectlyBehindForFollowPed_CamOnAString();
}
}
- }
+ }
break;
case GS_CLOSING:
m_fDoorPos = max(0.0f, m_fDoorPos - (m_bRotatedDoor ? ROTATED_DOOR_CLOSE_SPEED : DEFAULT_DOOR_CLOSE_SPEED) * CTimer::GetTimeStep());
@@ -804,12 +804,12 @@ void CGarage::Update()
}
UpdateDoorsHeight();
break;
- //case GS_OPENEDCONTAINSCAR:
- //case GS_CLOSEDCONTAINSCAR:
- //case GS_AFTERDROPOFF:
+ //case GS_OPENEDCONTAINSCAR:
+ //case GS_CLOSEDCONTAINSCAR:
+ //case GS_AFTERDROPOFF:
default:
break;
- }
+ }
break;
case GARAGE_FORCARTOCOMEOUTOF:
switch (m_eGarageState) {
@@ -836,9 +836,9 @@ void CGarage::Update()
}
UpdateDoorsHeight();
break;
- //case GS_OPENEDCONTAINSCAR:
- //case GS_CLOSEDCONTAINSCAR:
- //case GS_AFTERDROPOFF:
+ //case GS_OPENEDCONTAINSCAR:
+ //case GS_CLOSEDCONTAINSCAR:
+ //case GS_AFTERDROPOFF:
default:
break;
}
@@ -905,10 +905,9 @@ void CGarage::Update()
}
UpdateCrusherAngle();
break;
- //case GS_FULLYCLOSED:
- //case GS_CLOSEDCONTAINSCAR:
- //case GS_OPENEDCONTAINSCAR:
-
+ //case GS_FULLYCLOSED:
+ //case GS_CLOSEDCONTAINSCAR:
+ //case GS_OPENEDCONTAINSCAR:
default:
break;
}
@@ -971,8 +970,8 @@ void CGarage::Update()
if (m_eGarageType == GARAGE_MISSION_KEEPCAR && CTimer::GetTimeInMilliseconds() > m_nTimeToStartAction)
m_eGarageState = GS_OPENING;
break;
- //case GS_OPENEDCONTAINSCAR:
- //case GS_AFTERDROPOFF:
+ //case GS_OPENEDCONTAINSCAR:
+ //case GS_AFTERDROPOFF:
default:
break;
}
@@ -987,12 +986,12 @@ void CGarage::Update()
}
UpdateDoorsHeight();
break;
- //case GS_OPENED:
- //case GS_CLOSING:
- //case GS_FULLYCLOSED:
- //case GS_OPENEDCONTAINSCAR:
- //case GS_CLOSEDCONTAINSCAR:
- //case GS_AFTERDROPOFF:
+ //case GS_OPENED:
+ //case GS_CLOSING:
+ //case GS_FULLYCLOSED:
+ //case GS_OPENEDCONTAINSCAR:
+ //case GS_CLOSEDCONTAINSCAR:
+ //case GS_AFTERDROPOFF:
default:
break;
}
@@ -1015,16 +1014,15 @@ void CGarage::Update()
}
UpdateDoorsHeight();
break;
- //case GS_OPENED:
- //case GS_FULLYCLOSED:
- //case GS_OPENEDCONTAINSCAR:
- //case GS_CLOSEDCONTAINSCAR:
- //case GS_AFTERDROPOFF:
+ //case GS_OPENED:
+ //case GS_FULLYCLOSED:
+ //case GS_OPENEDCONTAINSCAR:
+ //case GS_CLOSEDCONTAINSCAR:
+ //case GS_AFTERDROPOFF:
default:
break;
}
break;
-
case GARAGE_HIDEOUT_ONE:
case GARAGE_HIDEOUT_TWO:
case GARAGE_HIDEOUT_THREE:
@@ -1103,9 +1101,9 @@ void CGarage::Update()
}
UpdateDoorsHeight();
break;
- //case GS_OPENEDCONTAINSCAR:
- //case GS_CLOSEDCONTAINSCAR:
- //case GS_AFTERDROPOFF:
+ //case GS_OPENEDCONTAINSCAR:
+ //case GS_CLOSEDCONTAINSCAR:
+ //case GS_AFTERDROPOFF:
default:
break;
}
@@ -1144,9 +1142,9 @@ void CGarage::Update()
}
UpdateDoorsHeight();
break;
- //case GS_OPENEDCONTAINSCAR:
- //case GS_CLOSEDCONTAINSCAR:
- //case GS_AFTERDROPOFF:
+ //case GS_OPENEDCONTAINSCAR:
+ //case GS_CLOSEDCONTAINSCAR:
+ //case GS_AFTERDROPOFF:
default:
break;
}
@@ -1155,9 +1153,8 @@ void CGarage::Update()
//case GARAGE_60SECONDS:
default:
break;
- }
-
- }
+ }
+}
bool CGarage::IsStaticPlayerCarEntirelyInside()
{
@@ -1170,19 +1167,12 @@ bool CGarage::IsStaticPlayerCarEntirelyInside()
if (FindPlayerPed()->m_objective == OBJECTIVE_LEAVE_VEHICLE)
return false;
CVehicle* pVehicle = FindPlayerVehicle();
- if (pVehicle->GetPosition().x < m_fX1)
+ if (pVehicle->GetPosition().x < m_fX1 || pVehicle->GetPosition().x > m_fX2 ||
+ pVehicle->GetPosition().y < m_fY1 || pVehicle->GetPosition().y > m_fY2)
return false;
- if (pVehicle->GetPosition().x > m_fX2)
- return false;
- if (pVehicle->GetPosition().y < m_fY1)
- return false;
- if (pVehicle->GetPosition().y > m_fY2)
- return false;
- if (Abs(pVehicle->GetSpeed().x) > 0.01f)
- return false;
- if (Abs(pVehicle->GetSpeed().y) > 0.01f)
- return false;
- if (Abs(pVehicle->GetSpeed().z) > 0.01f)
+ if (Abs(pVehicle->GetSpeed().x) > 0.01f ||
+ Abs(pVehicle->GetSpeed().y) > 0.01f ||
+ Abs(pVehicle->GetSpeed().z) > 0.01f)
return false;
if (pVehicle->GetSpeed().MagnitudeSqr() > SQR(0.01f))
return false;
@@ -1191,25 +1181,15 @@ bool CGarage::IsStaticPlayerCarEntirelyInside()
bool CGarage::IsEntityEntirelyInside(CEntity * pEntity)
{
- if (pEntity->GetPosition().x < m_fX1)
- return false;
- if (pEntity->GetPosition().x > m_fX2)
- return false;
- if (pEntity->GetPosition().y < m_fY1)
- return false;
- if (pEntity->GetPosition().y > m_fY2)
+ if (pEntity->GetPosition().x < m_fX1 || pEntity->GetPosition().x > m_fX2 ||
+ pEntity->GetPosition().y < m_fY1 || pEntity->GetPosition().y > m_fY2)
return false;
CColModel* pColModel = CModelInfo::GetModelInfo(pEntity->GetModelIndex())->GetColModel();
for (int i = 0; i < pColModel->numSpheres; i++) {
CVector pos = pEntity->GetMatrix() * pColModel->spheres[i].center;
float radius = pColModel->spheres[i].radius;
- if (pos.x - radius < m_fX1)
- return false;
- if (pos.x + radius > m_fX2)
- return false;
- if (pos.y - radius < m_fY1)
- return false;
- if (pos.y + radius > m_fY2)
+ if (pos.x - radius < m_fX1 || pos.x + radius > m_fX2 ||
+ pos.y - radius < m_fY1 || pos.y + radius > m_fY2)
return false;
}
return true;
@@ -1217,33 +1197,17 @@ bool CGarage::IsEntityEntirelyInside(CEntity * pEntity)
bool CGarage::IsEntityEntirelyInside3D(CEntity * pEntity, float fMargin)
{
- if (pEntity->GetPosition().x < m_fX1 - fMargin)
- return false;
- if (pEntity->GetPosition().x > m_fX2 + fMargin)
- return false;
- if (pEntity->GetPosition().y < m_fY1 - fMargin)
- return false;
- if (pEntity->GetPosition().y > m_fY2 + fMargin)
- return false;
- if (pEntity->GetPosition().z < m_fZ1 - fMargin)
- return false;
- if (pEntity->GetPosition().z > m_fZ2 + fMargin)
+ if (pEntity->GetPosition().x < m_fX1 - fMargin || pEntity->GetPosition().x > m_fX2 + fMargin ||
+ pEntity->GetPosition().y < m_fY1 - fMargin || pEntity->GetPosition().y > m_fY2 + fMargin ||
+ pEntity->GetPosition().z < m_fZ1 - fMargin || pEntity->GetPosition().z > m_fZ2 + fMargin)
return false;
CColModel* pColModel = CModelInfo::GetModelInfo(pEntity->GetModelIndex())->GetColModel();
for (int i = 0; i < pColModel->numSpheres; i++) {
CVector pos = pEntity->GetMatrix() * pColModel->spheres[i].center;
float radius = pColModel->spheres[i].radius;
- if (pos.x + radius < m_fX1 - fMargin)
- return false;
- if (pos.x - radius > m_fX2 + fMargin)
- return false;
- if (pos.y + radius < m_fY1 - fMargin)
- return false;
- if (pos.y - radius > m_fY2 + fMargin)
- return false;
- if (pos.z + radius < m_fZ1 - fMargin)
- return false;
- if (pos.z - radius > m_fZ2 + fMargin)
+ if (pos.x + radius < m_fX1 - fMargin || pos.x - radius > m_fX2 + fMargin ||
+ pos.y + radius < m_fY1 - fMargin || pos.y - radius > m_fY2 + fMargin ||
+ pos.z + radius < m_fZ1 - fMargin || pos.z - radius > m_fZ2 + fMargin)
return false;
}
return true;
@@ -1282,17 +1246,9 @@ bool CGarage::IsPlayerOutsideGarage()
bool CGarage::IsEntityTouching3D(CEntity * pEntity)
{
float radius = pEntity->GetBoundRadius();
- if (pEntity->GetPosition().x - radius < m_fX1)
- return false;
- if (pEntity->GetPosition().x + radius > m_fX2)
- return false;
- if (pEntity->GetPosition().y - radius < m_fY1)
- return false;
- if (pEntity->GetPosition().y + radius > m_fY2)
- return false;
- if (pEntity->GetPosition().z - radius < m_fZ1)
- return false;
- if (pEntity->GetPosition().z + radius > m_fZ2)
+ if (pEntity->GetPosition().x - radius < m_fX1 || pEntity->GetPosition().x + radius > m_fX2 ||
+ pEntity->GetPosition().y - radius < m_fY1 || pEntity->GetPosition().y + radius > m_fY2 ||
+ pEntity->GetPosition().z - radius < m_fZ1 || pEntity->GetPosition().z + radius > m_fZ2)
return false;
CColModel* pColModel = CModelInfo::GetModelInfo(pEntity->GetModelIndex())->GetColModel();
for (int i = 0; i < pColModel->numSpheres; i++) {
@@ -1312,17 +1268,9 @@ bool CGarage::EntityHasASphereWayOutsideGarage(CEntity * pEntity, float fMargin)
for (int i = 0; i < pColModel->numSpheres; i++) {
CVector pos = pEntity->GetMatrix() * pColModel->spheres[i].center;
float radius = pColModel->spheres[i].radius;
- if (pos.x + radius + fMargin < m_fX1)
- return true;
- if (pos.x - radius - fMargin > m_fX2)
- return true;
- if (pos.y + radius + fMargin < m_fY1)
- return true;
- if (pos.y - radius - fMargin > m_fY2)
- return true;
- if (pos.z + radius + fMargin < m_fZ1)
- return true;
- if (pos.z - radius - fMargin > m_fZ2)
+ if (pos.x + radius + fMargin < m_fX1 || pos.x - radius - fMargin > m_fX2 ||
+ pos.y + radius + fMargin < m_fY1 || pos.y - radius - fMargin > m_fY2 ||
+ pos.z + radius + fMargin < m_fZ1 || pos.z - radius - fMargin > m_fZ2)
return true;
}
return false;
diff --git a/src/control/Garages.h b/src/control/Garages.h
index 8b88359a..3f471555 100644
--- a/src/control/Garages.h
+++ b/src/control/Garages.h
@@ -174,6 +174,9 @@ static_assert(sizeof(CGarage) == 140, "CGarage");
class CGarages
{
+ enum {
+ MESSAGE_LENGTH = 8
+ };
static int32 &BankVansCollected;
static bool &BombsAreFree;
static bool &RespraysAreFree;
@@ -182,7 +185,7 @@ class CGarages
static int32 &CrushedCarId;
static uint32 &LastTimeHelpMessage;
static int32 &MessageNumberInString;
- static char(&MessageIDString)[8];
+ static char(&MessageIDString)[MESSAGE_LENGTH];
static int32 &MessageNumberInString2;
static uint32 &MessageStartTime;
static uint32 &MessageEndTime;