summaryrefslogtreecommitdiffstats
path: root/src/control
diff options
context:
space:
mode:
authorNikolay Korolev <nickvnuk@gmail.com>2021-01-30 23:38:43 +0100
committerNikolay Korolev <nickvnuk@gmail.com>2021-01-30 23:38:43 +0100
commit75a20216d9c0c0cb4d0f9a8e56c2319214a1cb79 (patch)
tree629c394b46991f2b51b98207eb7425db0d106f80 /src/control
parentfix (diff)
downloadre3-75a20216d9c0c0cb4d0f9a8e56c2319214a1cb79.tar
re3-75a20216d9c0c0cb4d0f9a8e56c2319214a1cb79.tar.gz
re3-75a20216d9c0c0cb4d0f9a8e56c2319214a1cb79.tar.bz2
re3-75a20216d9c0c0cb4d0f9a8e56c2319214a1cb79.tar.lz
re3-75a20216d9c0c0cb4d0f9a8e56c2319214a1cb79.tar.xz
re3-75a20216d9c0c0cb4d0f9a8e56c2319214a1cb79.tar.zst
re3-75a20216d9c0c0cb4d0f9a8e56c2319214a1cb79.zip
Diffstat (limited to 'src/control')
-rw-r--r--src/control/Garages.h55
-rw-r--r--src/control/Script.cpp2
-rw-r--r--src/control/Script10.cpp7
-rw-r--r--src/control/Script3.cpp4
-rw-r--r--src/control/ScriptCommands.h2
5 files changed, 54 insertions, 16 deletions
diff --git a/src/control/Garages.h b/src/control/Garages.h
index c3542d27..eb2c3e18 100644
--- a/src/control/Garages.h
+++ b/src/control/Garages.h
@@ -15,6 +15,7 @@ enum eGarageState
GS_OPENEDCONTAINSCAR,
GS_CLOSEDCONTAINSCAR,
GS_AFTERDROPOFF,
+ GS_WAITINGFORCAR
};
enum eGarageType
@@ -31,7 +32,7 @@ enum eGarageType
GARAGE_COLLECTCARS_2,
GARAGE_COLLECTCARS_3,
GARAGE_FORCARTOCOMEOUTOF,
- GARAGE_60SECONDS,
+ GARAGE_CRATE_GARAGE,
GARAGE_CRUSHER,
GARAGE_MISSION_KEEPCAR,
GARAGE_FOR_SCRIPT_TO_OPEN,
@@ -58,19 +59,34 @@ enum
{
TOTAL_COLLECTCARS_GARAGES = 4,
TOTAL_HIDEOUT_GARAGES = 12,
- TOTAL_COLLECTCARS_CARS = 6
+ TOTAL_COLLECTCARS_CARS = 16
};
class CStoredCar
{
+ enum {
+ FLAG_BULLETPROOF = 0x1,
+ FLAG_FIREPROOF = 0x2,
+ FLAG_EXPLOSIONPROOF = 0x4,
+ FLAG_COLLISIONPROOF = 0x8,
+ FLAG_MELEEPROOF = 0x10,
+ FLAG_TIRES_INVULNERABLE = 0x20,
+ FLAG_STRONG = 0x40,
+ FLAG_HEAVY = 0x80,
+ FLAG_PERMANENT_COLOUR = 0x100,
+ FLAG_BOMB = 0x200,
+ FLAG_NOT_DAMAGED_UPSIDEDOWN = 0x400,
+ FLAG_REWARD_VEHICLE = 0x8000
+ };
int32 m_nModelIndex;
- CVector m_vecPos;
- CVector m_vecAngle;
- int32 m_bBulletproof : 1;
- int32 m_bFireproof : 1;
- int32 m_bExplosionproof : 1;
- int32 m_bCollisionproof : 1;
- int32 m_bMeleeproof : 1;
+ float m_fPosX;
+ float m_fPosY;
+ float m_fPosZ;
+ float m_fForwardX;
+ float m_fForwardY;
+ float m_fForwardZ;
+ float m_fTractionMultiplier;
+ int32 m_nFlags;
int8 m_nPrimaryColor;
int8 m_nSecondaryColor;
int8 m_nRadioStation;
@@ -81,7 +97,6 @@ public:
void Init() { m_nModelIndex = 0; }
void Clear() { m_nModelIndex = 0; }
bool HasCar() { return m_nModelIndex != 0; }
- const CStoredCar &operator=(const CStoredCar& other);
void StoreCar(CVehicle*);
CVehicle* RestoreCar();
};
@@ -121,6 +136,8 @@ public:
float m_fSupX;
float m_fInfY;
float m_fSupY;
+ uint32 m_nTimeCrusherCraneActivated;
+ CVehicle* m_pSSTargetCar;
float m_fDoorPos;
float m_fDoorHeight;
float m_fDoor1X;
@@ -133,6 +150,19 @@ public:
uint8 m_bCollectedCarsState;
CVehicle *m_pTarget;
CStoredCar m_sStoredCar; // not needed
+#ifdef GTA_NETWORK
+ void* m_pSSVehicle; // some multiplayer vehicle structure, +104 == GetVehiclePointer
+ bool m_bSSGarageAcceptedVehicle;
+#endif
+ bool m_bInitialized;
+#ifdef GTA_NETWORK
+ uint8 m_nSSGarageState;
+ bool m_bSSGarageStateChanging;
+#endif
+ uint32 field_F0;
+ bool m_bLocked;
+ uint32 field_F8;
+ uint32 field_FC;
void OpenThisGarage();
void CloseThisGarage();
@@ -219,6 +249,7 @@ public:
static CGarage aGarages[NUM_GARAGES];
static CStoredCar aCarsInSafeHouses[TOTAL_HIDEOUT_GARAGES][NUM_GARAGE_STORED_CARS];
static bool bCamShouldBeOutisde;
+ static uint8 CrusherRewardMultiplier;
static void Init(void);
#ifndef PS2
@@ -297,6 +328,8 @@ public:
}
static bool IsThisGarageTypeSafehouse(uint8 type) { return FindSafeHouseIndexForGarageType(type) >= 0; }
- static void SetupAnyGaragesForThisIsland(void) {} // TODO(LCS)
+ static bool InitDoorGubbins(uint32, uint8);
+ static void SetupAnyGaragesForThisIsland(void);
+ static void LockGarage(int16, bool);
};
diff --git a/src/control/Script.cpp b/src/control/Script.cpp
index d12bbb40..8ce2d84d 100644
--- a/src/control/Script.cpp
+++ b/src/control/Script.cpp
@@ -1808,7 +1808,7 @@ const tScriptCommandData commands[] = {
REGISTER_COMMAND(COMMAND_PRINT_HELP_FOREVER_NO_BRIEF, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""),
REGISTER_COMMAND(COMMAND_PRINT_HELP_ALWAYS_NO_BRIEF, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""),
REGISTER_COMMAND(COMMAND_PRINT_HELP_FOREVER_ALWAYS_NO_BRIEF, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""),
- REGISTER_COMMAND(COMMAND_SET_MISSION_CAR_CAN_BE_STORED_IN_GARAGE, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT, ), OUTPUT_ARGUMENTS(), false, -1, ""),
+ REGISTER_COMMAND(COMMAND_SET_CAR_IS_REWARD, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT, ), OUTPUT_ARGUMENTS(), false, -1, ""),
REGISTER_COMMAND(COMMAND_FREEZE_ALL_PLAYER_FOLLOWERS, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT, ), OUTPUT_ARGUMENTS(), false, -1, ""),
};
#undef REGISTER_COMMAND
diff --git a/src/control/Script10.cpp b/src/control/Script10.cpp
index 6514ebe5..ac3961a7 100644
--- a/src/control/Script10.cpp
+++ b/src/control/Script10.cpp
@@ -7,6 +7,7 @@
#include "DMAudio.h"
#include "Frontend.h"
#include "GameLogic.h"
+#include "Garages.h"
#include "General.h"
#include "Hud.h"
#include "Messages.h"
@@ -286,7 +287,7 @@ int8 CRunningScript::ProcessCommands1600To1699(int32 command)
return 0;
case COMMAND_LOCK_GARAGE:
CollectParameters(&m_nIp, 2);
- // CGarages::LockGarage(GET_INTEGER_PARAM(0), GET_INTEGER_PARAM(1));
+ CGarages::LockGarage(GET_INTEGER_PARAM(0), GET_INTEGER_PARAM(1));
return 0;
case COMMAND_IS_FINAL_GAME:
#ifdef FINAL
@@ -391,12 +392,12 @@ int8 CRunningScript::ProcessCommands1600To1699(int32 command)
CHud::SetHelpMessage(text, false, true); // + false
return 0;
}
- case COMMAND_SET_MISSION_CAR_CAN_BE_STORED_IN_GARAGE:
+ case COMMAND_SET_CAR_IS_REWARD:
{
CollectParameters(&m_nIp, 2);
CVehicle* pVehicle = CPools::GetVehiclePool()->GetAt(GET_INTEGER_PARAM(0));
script_assert(pVehicle);
- pVehicle->bAllowGarageToStore = (GET_INTEGER_PARAM(1) != 0);
+ pVehicle->bRewardVehicle = (GET_INTEGER_PARAM(1) != 0);
return 0;
}
case COMMAND_FREEZE_ALL_PLAYER_FOLLOWERS:
diff --git a/src/control/Script3.cpp b/src/control/Script3.cpp
index f05c21eb..64014ac8 100644
--- a/src/control/Script3.cpp
+++ b/src/control/Script3.cpp
@@ -1225,6 +1225,10 @@ int8 CRunningScript::ProcessCommands600To699(int32 command)
if (pVehicle->m_vehType == VEHICLE_TYPE_CAR)
#endif
((CAutomobile*)pVehicle)->bFixedColour = (GET_INTEGER_PARAM(1) == 0);
+#ifdef FIX_BUGS
+ else if (pVehicle->m_vehType == VEHICLE_TYPE_BIKE)
+ ((CBike*)pVehicle)->bFixedColour = (GET_INTEGER_PARAM(1) == 0);
+#endif
return 0;
}
diff --git a/src/control/ScriptCommands.h b/src/control/ScriptCommands.h
index 76bc4aa3..000f561c 100644
--- a/src/control/ScriptCommands.h
+++ b/src/control/ScriptCommands.h
@@ -1656,7 +1656,7 @@ enum {
COMMAND_PRINT_HELP_FOREVER_NO_BRIEF,
COMMAND_PRINT_HELP_ALWAYS_NO_BRIEF,
COMMAND_PRINT_HELP_FOREVER_ALWAYS_NO_BRIEF,
- COMMAND_SET_MISSION_CAR_CAN_BE_STORED_IN_GARAGE,
+ COMMAND_SET_CAR_IS_REWARD,
COMMAND_FREEZE_ALL_PLAYER_FOLLOWERS,
#ifdef USE_ADVANCED_SCRIPT_DEBUG_OUTPUT
LAST_SCRIPT_COMMAND