summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorNikolay Korolev <nickvnuk@gmail.com>2021-01-23 13:29:00 +0100
committerNikolay Korolev <nickvnuk@gmail.com>2021-01-23 13:32:07 +0100
commitb5c4866964a281ad9ab18dfd7218e1ef168f15f4 (patch)
tree293b541cd186dcc19d557cc112a9d6f73c4afad8 /src
parentrevert accident (diff)
downloadre3-b5c4866964a281ad9ab18dfd7218e1ef168f15f4.tar
re3-b5c4866964a281ad9ab18dfd7218e1ef168f15f4.tar.gz
re3-b5c4866964a281ad9ab18dfd7218e1ef168f15f4.tar.bz2
re3-b5c4866964a281ad9ab18dfd7218e1ef168f15f4.tar.lz
re3-b5c4866964a281ad9ab18dfd7218e1ef168f15f4.tar.xz
re3-b5c4866964a281ad9ab18dfd7218e1ef168f15f4.tar.zst
re3-b5c4866964a281ad9ab18dfd7218e1ef168f15f4.zip
Diffstat (limited to 'src')
-rw-r--r--src/control/Garages.cpp40
-rw-r--r--src/control/Garages.h5
2 files changed, 44 insertions, 1 deletions
diff --git a/src/control/Garages.cpp b/src/control/Garages.cpp
index 39fa5c94..e3b5aa8c 100644
--- a/src/control/Garages.cpp
+++ b/src/control/Garages.cpp
@@ -106,7 +106,7 @@ const int32 gaCarsToCollectInCraigsGarages[TOTAL_COLLECTCARS_GARAGES][TOTAL_COLL
{ MI_VOODOO, MI_CUBAN, MI_CADDY, MI_BAGGAGE, MI_MRWHOOP, MI_PIZZABOY }
};
-const int32 gaCarsToCollectIn60Seconds[] = { MI_CHEETAH, MI_TAXI, MI_ESPERANT, MI_SENTINEL, MI_IDAHO }; // what is this?
+const int32 gaCarsToCollectIn60Seconds[] = { MI_CHEETAH, MI_TAXI, MI_ESPERANT, MI_SENTINEL, MI_IDAHO };
int32 CGarages::BankVansCollected;
bool CGarages::BombsAreFree;
@@ -2357,3 +2357,41 @@ CGarages::IsModelIndexADoor(uint32 id)
id == MI_GARAGEDOOR25 ||
id == MI_GARAGEDOOR26;
}
+
+void CGarages::StopCarFromBlowingUp(CAutomobile* pCar)
+{
+ pCar->m_fFireBlowUpTimer = 0.0f;
+ pCar->m_fHealth = Max(pCar->m_fHealth, 300.0f);
+ pCar->Damage.SetEngineStatus(Max(pCar->Damage.GetEngineStatus(), 275));
+}
+
+bool CGarage::Does60SecondsNeedThisCarAtAll(int mi)
+{
+ for (int i = 0; i < ARRAY_SIZE(gaCarsToCollectIn60Seconds); i++) {
+ if (gaCarsToCollectIn60Seconds[i] == mi)
+ return true;
+ }
+ return false;
+}
+
+bool CGarage::Does60SecondsNeedThisCar(int mi)
+{
+ for (int i = 0; i < ARRAY_SIZE(gaCarsToCollectIn60Seconds); i++) {
+ if (gaCarsToCollectIn60Seconds[i] == mi)
+ return m_bCollectedCarsState & BIT(i);
+ }
+ return false;
+}
+
+void CGarage::MarkThisCarAsCollectedFor60Seconds(int mi)
+{
+ for (int i = 0; i < ARRAY_SIZE(gaCarsToCollectIn60Seconds); i++) {
+ if (gaCarsToCollectIn60Seconds[i] == mi)
+ m_bCollectedCarsState |= BIT(i);
+ }
+}
+
+bool CGarage::IsPlayerEntirelyInsideGarage()
+{
+ return IsEntityEntirelyInside3D(FindPlayerVehicle() ? (CEntity*)FindPlayerVehicle() : (CEntity*)FindPlayerPed(), 0.0f);
+}
diff --git a/src/control/Garages.h b/src/control/Garages.h
index 39327e4e..07d5f712 100644
--- a/src/control/Garages.h
+++ b/src/control/Garages.h
@@ -182,6 +182,10 @@ public:
void FindDoorsEntities();
void FindDoorsEntitiesSectorList(CPtrList&, bool);
void PlayerArrestedOrDied();
+ bool Does60SecondsNeedThisCarAtAll(int mi);
+ bool Does60SecondsNeedThisCar(int mi);
+ void MarkThisCarAsCollectedFor60Seconds(int mi);
+ bool IsPlayerEntirelyInsideGarage();
bool IsPointInsideGarage(CVector);
bool IsPointInsideGarage(CVector, float);
@@ -254,6 +258,7 @@ public:
static bool IsModelIndexADoor(uint32 id);
static void SetFreeBombs(bool bValue) { BombsAreFree = bValue; }
static void SetFreeResprays(bool bValue) { RespraysAreFree = bValue; }
+ static void StopCarFromBlowingUp(CAutomobile*);
static void SetMaxNumStoredCarsForGarage(int16 garage, uint8 num) { aGarages[garage].m_nMaxStoredCars = num; }
static bool IsCarSprayable(CVehicle*);