summaryrefslogtreecommitdiffstats
path: root/src/control
diff options
context:
space:
mode:
authorNikolay Korolev <nickvnuk@gmail.com>2021-01-23 21:04:38 +0100
committerNikolay Korolev <nickvnuk@gmail.com>2021-01-23 21:04:38 +0100
commitd28e9a7b629fca3904336cd2d7ba74b925249fea (patch)
treec30c37726139bf7125d858f3c29e4090a2d6310e /src/control
parentscript fixes (diff)
parenttxd store (diff)
downloadre3-d28e9a7b629fca3904336cd2d7ba74b925249fea.tar
re3-d28e9a7b629fca3904336cd2d7ba74b925249fea.tar.gz
re3-d28e9a7b629fca3904336cd2d7ba74b925249fea.tar.bz2
re3-d28e9a7b629fca3904336cd2d7ba74b925249fea.tar.lz
re3-d28e9a7b629fca3904336cd2d7ba74b925249fea.tar.xz
re3-d28e9a7b629fca3904336cd2d7ba74b925249fea.tar.zst
re3-d28e9a7b629fca3904336cd2d7ba74b925249fea.zip
Diffstat (limited to 'src/control')
-rw-r--r--src/control/Bridge.cpp20
-rw-r--r--src/control/Bridge.h1
-rw-r--r--src/control/Garages.cpp121
-rw-r--r--src/control/Garages.h3
-rw-r--r--src/control/Script.h5
-rw-r--r--src/control/Script3.cpp1
-rw-r--r--src/control/Script4.cpp1
7 files changed, 107 insertions, 45 deletions
diff --git a/src/control/Bridge.cpp b/src/control/Bridge.cpp
index 1e63cf30..e7c76a9c 100644
--- a/src/control/Bridge.cpp
+++ b/src/control/Bridge.cpp
@@ -161,3 +161,23 @@ bool CBridge::ThisIsABridgeObjectMovingUp(int index)
return false;
#endif
}
+
+void CBridge::ForceBridgeState(uint8 state)
+{
+#ifdef GTA_BRIDGE
+ State = state;
+ switch (state)
+ {
+ case STATE_BRIDGE_LOCKED:
+ case STATE_LIFT_PART_MOVING_DOWN:
+ case STATE_LIFT_PART_ABOUT_TO_MOVE_UP:
+ ThePaths.SetLinksBridgeLights(-330.0f, -230.0f, -700.0f, -588.0f, true);
+ break;
+ case STATE_BRIDGE_ALWAYS_UNLOCKED:
+ ThePaths.SetLinksBridgeLights(-330.0f, -230.0f, -700.0f, -588.0f, false);
+ break;
+ default:
+ break;
+ }
+#endif
+} \ No newline at end of file
diff --git a/src/control/Bridge.h b/src/control/Bridge.h
index dd781a9a..e639d4c1 100644
--- a/src/control/Bridge.h
+++ b/src/control/Bridge.h
@@ -26,4 +26,5 @@ public:
static bool ShouldLightsBeFlashing();
static void FindBridgeEntities();
static bool ThisIsABridgeObjectMovingUp(int);
+ static void ForceBridgeState(uint8 state);
};
diff --git a/src/control/Garages.cpp b/src/control/Garages.cpp
index e8c2f2a6..e8ced3f1 100644
--- a/src/control/Garages.cpp
+++ b/src/control/Garages.cpp
@@ -1825,7 +1825,7 @@ void CGarage::FindDoorsEntities()
}
}
if (m_pDoor1 && m_pDoor2) {
- if (m_pDoor1->GetModelIndex() != MI_LCS_GARAGEDOOR39 && m_pDoor1->GetModelIndex() != MI_LCS_GARAGEDOOR40) {
+ if (m_pDoor1->GetModelIndex() != MI_CRUSHERBODY && m_pDoor1->GetModelIndex() != MI_CRUSHERLID) {
CVector2D vecDoor1ToGarage(m_pDoor1->GetPosition().x - GetGarageCenterX(), m_pDoor1->GetPosition().y - GetGarageCenterY());
CVector2D vecDoor2ToGarage(m_pDoor2->GetPosition().x - GetGarageCenterX(), m_pDoor2->GetPosition().y - GetGarageCenterY());
if (DotProduct2D(vecDoor1ToGarage, vecDoor2ToGarage) > 0.0f) {
@@ -2409,46 +2409,85 @@ void CGarages::Load(uint8* buf, uint32 size)
bool
CGarages::IsModelIndexADoor(uint32 id)
{
- return id == MI_LCS_GARAGEDOOR01 ||
- id == MI_LCS_GARAGEDOOR02 ||
- id == MI_LCS_GARAGEDOOR03 ||
- id == MI_LCS_GARAGEDOOR04 ||
- id == MI_LCS_GARAGEDOOR05 ||
- id == MI_LCS_GARAGEDOOR06 ||
- id == MI_LCS_GARAGEDOOR07 ||
- id == MI_LCS_GARAGEDOOR08 ||
- id == MI_LCS_GARAGEDOOR09 ||
- id == MI_LCS_GARAGEDOOR10 ||
- id == MI_LCS_GARAGEDOOR11 ||
- id == MI_LCS_GARAGEDOOR12 ||
- id == MI_LCS_GARAGEDOOR13 ||
- id == MI_LCS_GARAGEDOOR14 ||
- id == MI_LCS_GARAGEDOOR15 ||
- id == MI_LCS_GARAGEDOOR16 ||
- id == MI_LCS_GARAGEDOOR17 ||
- id == MI_LCS_GARAGEDOOR18 ||
- id == MI_LCS_GARAGEDOOR19 ||
- id == MI_LCS_GARAGEDOOR20 ||
- id == MI_LCS_GARAGEDOOR21 ||
- id == MI_LCS_GARAGEDOOR22 ||
- id == MI_LCS_GARAGEDOOR23 ||
- id == MI_LCS_GARAGEDOOR24 ||
- id == MI_LCS_GARAGEDOOR25 ||
- id == MI_LCS_GARAGEDOOR26 ||
- id == MI_LCS_GARAGEDOOR27 ||
- id == MI_LCS_GARAGEDOOR28 ||
- id == MI_LCS_GARAGEDOOR29 ||
- id == MI_LCS_GARAGEDOOR30 ||
- id == MI_LCS_GARAGEDOOR31 ||
- id == MI_LCS_GARAGEDOOR32 ||
- id == MI_LCS_GARAGEDOOR33 ||
- id == MI_LCS_GARAGEDOOR34 ||
- id == MI_LCS_GARAGEDOOR35 ||
- id == MI_LCS_GARAGEDOOR36 ||
- id == MI_LCS_GARAGEDOOR37 ||
- id == MI_LCS_GARAGEDOOR38 ||
- id == MI_LCS_GARAGEDOOR39 ||
- id == MI_LCS_GARAGEDOOR40;
+ return id == MI_GARAGEDOOR1 ||
+ id == MI_GARAGEDOOR17 ||
+ id == MI_GARAGEDOOR27 ||
+ id == MI_GARAGEDOOR28 ||
+ id == MI_GARAGEDOOR29 ||
+ id == MI_GARAGEDOOR30 ||
+ id == MI_GARAGEDOOR31 ||
+ id == MI_GARAGEDOOR32 ||
+ id == MI_GARAGEDOOR33 ||
+ id == MI_GARAGEDOOR34 ||
+ id == MI_GARAGEDOOR35 ||
+ id == MI_GARAGEDOOR36 ||
+ id == MI_GARAGEDOOR37 ||
+ id == MI_GARAGEDOOR38 ||
+ id == MI_GARAGEDOOR39 ||
+ id == MI_CRUSHERBODY ||
+ id == MI_CRUSHERLID ||
+ id == MI_GARAGEDOOR2 ||
+ id == MI_GARAGEDOOR3 ||
+ id == MI_GARAGEDOOR4 ||
+ id == MI_GARAGEDOOR5 ||
+ id == MI_GARAGEDOOR6 ||
+ id == MI_GARAGEDOOR7 ||
+ id == MI_GARAGEDOOR9 ||
+ id == MI_GARAGEDOOR10 ||
+ id == MI_GARAGEDOOR11 ||
+ id == MI_GARAGEDOOR12 ||
+ id == MI_GARAGEDOOR13 ||
+ id == MI_GARAGEDOOR14 ||
+ id == MI_GARAGEDOOR15 ||
+ id == MI_GARAGEDOOR16 ||
+ id == MI_GARAGEDOOR18 ||
+ id == MI_GARAGEDOOR19 ||
+ id == MI_GARAGEDOOR20 ||
+ id == MI_GARAGEDOOR21 ||
+ id == MI_GARAGEDOOR22 ||
+ id == MI_GARAGEDOOR23 ||
+ id == MI_GARAGEDOOR24 ||
+ id == MI_GARAGEDOOR25 ||
+ id == MI_GARAGEDOOR26 ||
+ id == MI_DOOR2_SJL;
+}
+
+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);
}
void CGarages::StopCarFromBlowingUp(CAutomobile* pCar)
diff --git a/src/control/Garages.h b/src/control/Garages.h
index 843f4a30..c3542d27 100644
--- a/src/control/Garages.h
+++ b/src/control/Garages.h
@@ -1,11 +1,10 @@
#pragma once
-#include "Automobile.h"
#include "audio_enums.h"
#include "Camera.h"
#include "config.h"
+#include "Lists.h"
class CVehicle;
-class CCamera;
enum eGarageState
{
diff --git a/src/control/Script.h b/src/control/Script.h
index fa8a64cd..11c1b185 100644
--- a/src/control/Script.h
+++ b/src/control/Script.h
@@ -1,6 +1,5 @@
#pragma once
-#include "common.h"
-#include "Font.h"
+#include "Font.h"
#include "Ped.h"
#include "PedType.h"
#include "Text.h"
@@ -39,9 +38,11 @@ void FlushLog();
#define SPHERE_MARKER_PULSE_FRACTION 0.1f
#ifdef USE_PRECISE_MEASUREMENT_CONVERTION
+#define MILES_IN_METER (0.000621371192f)
#define METERS_IN_FOOT (0.3048f)
#define FEET_IN_METER (3.28084f)
#else
+#define MILES_IN_METER (1 / 1670.f)
#define METERS_IN_FOOT (0.3f)
#define FEET_IN_METER (3.33f)
#endif
diff --git a/src/control/Script3.cpp b/src/control/Script3.cpp
index 1e4d5b6f..7acfdfc8 100644
--- a/src/control/Script3.cpp
+++ b/src/control/Script3.cpp
@@ -35,6 +35,7 @@
#include "Zones.h"
#include "GameLogic.h"
#include "Bike.h"
+#include "Wanted.h"
// LCS: file done except TODOs
diff --git a/src/control/Script4.cpp b/src/control/Script4.cpp
index d6a08c3d..d1dba350 100644
--- a/src/control/Script4.cpp
+++ b/src/control/Script4.cpp
@@ -39,6 +39,7 @@
#include "World.h"
#include "Zones.h"
#include "Bike.h"
+#include "Wanted.h"
// LCS: file done except TODOs