mirror of
https://github.com/halpz/re3.git
synced 2025-07-03 07:10:43 +00:00
garages + script
This commit is contained in:
@ -2628,14 +2628,10 @@ void CCarCtrl::SteerAIHeliTowardsTargetCoors(CAutomobile* pHeli)
|
||||
float changeMultiplier = 0.002f * CTimer::GetTimeStep();
|
||||
if (distanceToTarget < 5.0f)
|
||||
changeMultiplier /= 5.0f;
|
||||
if (vecSpeedChangeLength < changeMultiplier) {
|
||||
pHeli->m_vecMoveSpeed.x = vecAdvanceThisFrame.x;
|
||||
pHeli->m_vecMoveSpeed.y = vecAdvanceThisFrame.y;
|
||||
}
|
||||
else {
|
||||
pHeli->m_vecMoveSpeed.x += vecSpeedChange.x * changeMultiplier;
|
||||
pHeli->m_vecMoveSpeed.y += vecSpeedChange.y * changeMultiplier;
|
||||
}
|
||||
if (vecSpeedChangeLength < changeMultiplier)
|
||||
pHeli->AddToMoveSpeed(vecAdvanceThisFrame);
|
||||
else
|
||||
pHeli->AddToMoveSpeed(vecSpeedChange * changeMultiplier);
|
||||
pHeli->SetPosition(pHeli->GetPosition() + CVector(CTimer::GetTimeStep() * pHeli->m_vecMoveSpeed.x, CTimer::GetTimeStep() * pHeli->m_vecMoveSpeed.y, 0.0f));
|
||||
assert(0);
|
||||
// This is not finished yet. Heli fields in CAutomobile required
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -57,8 +57,9 @@ enum eGarageType : int8
|
||||
|
||||
enum
|
||||
{
|
||||
TOTAL_COLLECTCARS_GARAGES = GARAGE_COLLECTCARS_3 - GARAGE_COLLECTCARS_1 + 1,
|
||||
TOTAL_COLLECTCARS_CARS = 16
|
||||
TOTAL_COLLECTCARS_GARAGES = 4,
|
||||
TOTAL_HIDEOUT_GARAGES = 12,
|
||||
TOTAL_COLLECTCARS_CARS = 6
|
||||
};
|
||||
|
||||
class CStoredCar
|
||||
@ -109,7 +110,8 @@ class CGarage
|
||||
bool m_bRecreateDoorOnNextRefresh;
|
||||
bool m_bRotatedDoor;
|
||||
bool m_bCameraFollowsPlayer;
|
||||
CVector m_vecCorner1;
|
||||
CVector2D m_vecCorner1;
|
||||
float m_fInfZ;
|
||||
CVector2D m_vDir1;
|
||||
CVector2D m_vDir2;
|
||||
float m_fSupZ;
|
||||
@ -139,8 +141,8 @@ class CGarage
|
||||
bool IsClosed() { return m_eGarageState == GS_FULLYCLOSED; }
|
||||
bool IsUsed() { return m_eGarageType != GARAGE_NONE; }
|
||||
void Update();
|
||||
float GetGarageCenterX() { return (m_fX1 + m_fX2) / 2; }
|
||||
float GetGarageCenterY() { return (m_fY1 + m_fY2) / 2; }
|
||||
float GetGarageCenterX() { return (m_fInfX + m_fSupX) / 2; }
|
||||
float GetGarageCenterY() { return (m_fInfY + m_fSupY) / 2; }
|
||||
bool IsFar()
|
||||
{
|
||||
#ifdef FIX_BUGS
|
||||
@ -158,7 +160,6 @@ class CGarage
|
||||
void UpdateDoorsHeight();
|
||||
bool IsEntityEntirelyInside3D(CEntity*, float);
|
||||
bool IsEntityEntirelyOutside(CEntity*, float);
|
||||
bool IsEntityEntirelyInside(CEntity*);
|
||||
float CalcDistToGarageRectangleSquared(float, float);
|
||||
float CalcSmallestDistToGarageDoorSquared(float, float);
|
||||
bool IsAnyOtherCarTouchingGarage(CVehicle* pException);
|
||||
@ -183,6 +184,12 @@ class CGarage
|
||||
void FindDoorsEntitiesSectorList(CPtrList&, bool);
|
||||
void PlayerArrestedOrDied();
|
||||
|
||||
bool IsPointInsideGarage(CVector);
|
||||
bool IsPointInsideGarage(CVector, float);
|
||||
void ThrowCarsNearDoorOutOfGarage(CVehicle*);
|
||||
|
||||
int32 FindMaxNumStoredCarsForGarage() { return Max(NUM_GARAGE_STORED_CARS, m_nMaxStoredCars); }
|
||||
|
||||
friend class CGarages;
|
||||
friend class cAudioManager;
|
||||
friend class CCamera;
|
||||
@ -191,7 +198,8 @@ class CGarage
|
||||
class CGarages
|
||||
{
|
||||
enum {
|
||||
MESSAGE_LENGTH = 8
|
||||
MESSAGE_LENGTH = 8,
|
||||
MAX_NUM_CARS_IN_HIDEOUT_GARAGE = 4
|
||||
};
|
||||
static int32 BankVansCollected;
|
||||
static bool BombsAreFree;
|
||||
@ -209,9 +217,7 @@ class CGarages
|
||||
static bool PlayerInGarage;
|
||||
static int32 PoliceCarsCollected;
|
||||
static CGarage aGarages[NUM_GARAGES];
|
||||
static CStoredCar aCarsInSafeHouse1[NUM_GARAGE_STORED_CARS];
|
||||
static CStoredCar aCarsInSafeHouse2[NUM_GARAGE_STORED_CARS];
|
||||
static CStoredCar aCarsInSafeHouse3[NUM_GARAGE_STORED_CARS];
|
||||
static CStoredCar aCarsInSafeHouses[TOTAL_HIDEOUT_GARAGES][MAX_NUM_CARS_IN_HIDEOUT_GARAGE];
|
||||
static int32 AudioEntity;
|
||||
static bool bCamShouldBeOutisde;
|
||||
|
||||
@ -254,15 +260,45 @@ public:
|
||||
static bool IsModelIndexADoor(uint32 id);
|
||||
static void SetFreeBombs(bool bValue) { BombsAreFree = bValue; }
|
||||
static void SetFreeResprays(bool bValue) { RespraysAreFree = bValue; }
|
||||
static void SetMaxNumStoredCarsForGarage(int16 garage, uint8 num) { aGarages[garage].m_nMaxStoredCars = num; }
|
||||
|
||||
private:
|
||||
static bool IsCarSprayable(CVehicle*);
|
||||
static float FindDoorHeightForMI(int32);
|
||||
static void CloseHideOutGaragesBeforeSave(void);
|
||||
static int32 CountCarsInHideoutGarage(eGarageType);
|
||||
static int32 FindMaxNumStoredCarsForGarage(eGarageType);
|
||||
static int32 GetBombTypeForGarageType(eGarageType type) { return type - GARAGE_BOMBSHOP1 + 1; }
|
||||
static int32 GetCarsCollectedIndexForGarageType(eGarageType type) { return type - GARAGE_COLLECTCARS_1; }
|
||||
static int32 GetCarsCollectedIndexForGarageType(eGarageType type)
|
||||
{
|
||||
switch (type) {
|
||||
case GARAGE_COLLECTCARS_1: return 0;
|
||||
case GARAGE_COLLECTCARS_2: return 1;
|
||||
case GARAGE_COLLECTCARS_3: return 2;
|
||||
case GARAGE_COLLECTCARS_4: return 3;
|
||||
default: assert(0);
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
static int32 FindSafeHouseIndexForGarageType(eGarageType type)
|
||||
{
|
||||
switch (type) {
|
||||
case GARAGE_HIDEOUT_ONE: return 0;
|
||||
case GARAGE_HIDEOUT_TWO: return 1;
|
||||
case GARAGE_HIDEOUT_THREE: return 2;
|
||||
case GARAGE_HIDEOUT_FOUR: return 3;
|
||||
case GARAGE_HIDEOUT_FIVE: return 4;
|
||||
case GARAGE_HIDEOUT_SIX: return 5;
|
||||
case GARAGE_HIDEOUT_SEVEN: return 6;
|
||||
case GARAGE_HIDEOUT_EIGHT: return 7;
|
||||
case GARAGE_HIDEOUT_NINE: return 8;
|
||||
case GARAGE_HIDEOUT_TEN: return 9;
|
||||
case GARAGE_HIDEOUT_ELEVEN: return 10;
|
||||
case GARAGE_HIDEOUT_TWELVE: return 11;
|
||||
default: assert(0);
|
||||
}
|
||||
return -1;
|
||||
}
|
||||
static bool IsThisGarageTypeSafehouse(eGarageType type) { return FindSafeHouseIndexForGarageType(type) >= 0; }
|
||||
|
||||
friend class cAudioManager;
|
||||
friend class CGarage;
|
||||
|
@ -9746,8 +9746,21 @@ int8 CRunningScript::ProcessCommands1100To1199(int32 command)
|
||||
case COMMAND_IS_CHAR_IN_ANY_PLANE:
|
||||
case COMMAND_IS_PLAYER_IN_ANY_PLANE:
|
||||
case COMMAND_IS_CHAR_IN_WATER:
|
||||
assert(0);
|
||||
case COMMAND_SET_VAR_INT_TO_CONSTANT:
|
||||
{
|
||||
int32* ptr = GetPointerToScriptVariable(&m_nIp, VAR_GLOBAL);
|
||||
CollectParameters(&m_nIp, 1);
|
||||
*ptr = ScriptParams[0];
|
||||
return 0;
|
||||
}
|
||||
case COMMAND_SET_LVAR_INT_TO_CONSTANT:
|
||||
{
|
||||
int32* ptr = GetPointerToScriptVariable(&m_nIp, VAR_LOCAL);
|
||||
CollectParameters(&m_nIp, 1);
|
||||
*ptr = ScriptParams[0];
|
||||
return 0;
|
||||
}
|
||||
default:
|
||||
assert(0);
|
||||
}
|
||||
@ -9802,7 +9815,20 @@ int8 CRunningScript::ProcessCommands1200To1299(int32 command)
|
||||
case COMMAND_GET_NUMBER_OF_SONY_CDS_READ:
|
||||
case COMMAND_ADD_SHORT_RANGE_BLIP_FOR_COORD_OLD:
|
||||
case COMMAND_ADD_SHORT_RANGE_BLIP_FOR_COORD:
|
||||
assert(0);
|
||||
case COMMAND_ADD_SHORT_RANGE_SPRITE_BLIP_FOR_COORD:
|
||||
{
|
||||
CollectParameters(&m_nIp, 4);
|
||||
CVector pos = *(CVector*)&ScriptParams[0];
|
||||
if (pos.z <= MAP_Z_LOW_LIMIT)
|
||||
pos.z = CWorld::FindGroundZForCoord(pos.x, pos.y);
|
||||
CRadar::GetActualBlipArrayIndex(CollectNextParameterWithoutIncreasingPC(m_nIp));
|
||||
int id = CRadar::SetShortRangeCoordBlip(BLIP_COORD, pos, 5, BLIP_DISPLAY_BOTH);
|
||||
CRadar::SetBlipSprite(id, ScriptParams[3]);
|
||||
ScriptParams[0] = id;
|
||||
StoreParameters(&m_nIp, 1);
|
||||
return 0;
|
||||
}
|
||||
case COMMAND_ADD_MONEY_SPENT_ON_CLOTHES:
|
||||
case COMMAND_SET_HELI_ORIENTATION:
|
||||
case COMMAND_CLEAR_HELI_ORIENTATION:
|
||||
@ -10026,7 +10052,11 @@ int8 CRunningScript::ProcessCommands1400To1499(int32 command)
|
||||
switch (command) {
|
||||
case COMMAND_REGISTER_VIGILANTE_LEVEL:
|
||||
case COMMAND_CLEAR_ALL_CHAR_ANIMS:
|
||||
assert(0);
|
||||
case COMMAND_SET_MAXIMUM_NUMBER_OF_CARS_IN_GARAGE:
|
||||
CollectParameters(&m_nIp, 2);
|
||||
CGarages::SetMaxNumStoredCarsForGarage(ScriptParams[0], ScriptParams[1]);
|
||||
break;
|
||||
case COMMAND_WANTED_STARS_ARE_FLASHING:
|
||||
case COMMAND_SET_ALLOW_HURRICANES:
|
||||
case COMMAND_PLAY_ANNOUNCEMENT:
|
||||
|
Reference in New Issue
Block a user