mirror of
https://github.com/1dot13/source.git
synced 2026-09-02 14:36:06 +02:00
Driveable vehicle Update: Externalized vehicle seats (by anv)
- externalised vehicle seats (TableData\Vehicles.xml) influence position of passenger, field of view, ability to shoot and being hidden, - seat can chosen by using ctrl+RMB on vehicle (ctrl + LMB just takes the first visible seat) - seats can be changed or swapped while inside vehicle, - remade JSD files for cars, - vehicles aren't transparent anymore, - vehicles are louder than people, depending how fast they move. see: http://www.bears-pit.com/board/ubbthreads.php/topics/332790/5.html git-svn-id: https://ja2svn.mooo.com/source/ja2/trunk/GameSource/ja2_v1.13/Build@7212 3b4a5df2-a311-0410-b5c6-a8a6f20db521
This commit is contained in:
+27
-20
@@ -11,6 +11,25 @@
|
||||
extern std::vector<INT8> gubVehicleMovementGroups;
|
||||
|
||||
#define MAX_MAIN_VEHICLE_CHARS 500
|
||||
typedef struct
|
||||
{
|
||||
UINT8 ubSeatIndex; // index inside a vehicle (corresponding to .pPassengers[counter])
|
||||
CHAR16 zSeatName[20]; // name (to display on entering menu and on team panel)
|
||||
BOOLEAN fDriver; // seat has to be taken to steer the vehicle
|
||||
BOOLEAN fBlockedView; // can't look out of vehicle
|
||||
BOOLEAN fBlockedShots; // can't shoot from this seat
|
||||
BOOLEAN fSeatBelt; // for collisions
|
||||
BOOLEAN fHidden; // merc on this seat is invisible from outside - spy as a driver smuggling in others?
|
||||
UINT8 ubRotation; // initial rotation in relation to vehicle
|
||||
INT8 bOffsetX; // X offset of seat grid, relative to vehicle middle
|
||||
INT8 bOffsetY; // Y offset of seat grid, relative to vehicle middle
|
||||
UINT8 ubCoverage; // influence probability vehicle will be hit instead of passenger
|
||||
UINT8 ubCompartment; // passenger can switch to another seat in the same compartment without exiting vehicle
|
||||
UINT8 ubStructureLink; // link to physical part of structure (for hit calculations)
|
||||
UINT32 usMountedGun; // passenger on this seat will use this gun instead of his own, link to Items.xml
|
||||
|
||||
} VEHICLE_SEAT;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
UINT8 uiIndex;
|
||||
@@ -30,27 +49,10 @@ typedef struct
|
||||
CHAR16 NewShortVehicleStrings[128];
|
||||
INT32 NewCarPortraits;
|
||||
BOOLEAN NewUsed;
|
||||
VEHICLE_SEAT VehicleSeats[10];
|
||||
|
||||
} NEW_CAR;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
UINT8 ubSeatIndex; // index inside a vehicle (corresponding to .pPassengers[counter])
|
||||
CHAR16 zSeatName[16]; // name (to display on entering menu and on team panel)
|
||||
BOOLEAN fDriver; // seat has to be taken to steer the vehicle
|
||||
BOOLEAN fView; // can look out of vehicle
|
||||
BOOLEAN fDriveBy; // can shoot from this seat
|
||||
BOOLEAN fSeatBelt; // for collisions
|
||||
BOOLEAN fHidden; // merc on this seat is invisible from outside - spy as a driver smuggling in others?
|
||||
UINT8 ubRotation; // rotation in relation to vehicle
|
||||
UINT8 ubTunnelVision; // tunnel vision (small windows, etc.)
|
||||
UINT8 ubProtection; // influence probability vehicle will be hit instead of passenger
|
||||
UINT8 ubCompartment; // passenger can switch to another seat in the same compartment without exiting vehicle
|
||||
UINT8 ubStructureLink; // link to physical part of structure (for hit calculations)
|
||||
UINT32 usMountedGun; // passenger on this seat will use this gun instead of his own, link to Items.xml
|
||||
|
||||
} VEHICLE_SEAT;
|
||||
|
||||
extern NEW_CAR gNewVehicle[NUM_PROFILES];
|
||||
|
||||
extern BOOLEAN LoadNewVehiclesToSaveGameFile( HWFILE hFile );
|
||||
@@ -331,7 +333,7 @@ BOOLEAN AnyAccessibleVehiclesInSoldiersSector( SOLDIERTYPE *pSoldier );
|
||||
BOOLEAN IsThisVehicleAccessibleToSoldier( SOLDIERTYPE *pSoldier, INT32 iId );
|
||||
|
||||
// add soldier to Vehicle
|
||||
BOOLEAN AddSoldierToVehicle( SOLDIERTYPE *pSoldier, INT32 iId, BOOLEAN fSpecificSeat = FALSE, UINT8 ubSeatIndex = 0 );
|
||||
BOOLEAN AddSoldierToVehicle( SOLDIERTYPE *pSoldier, INT32 iId, UINT8 ubSeatIndex = 0 );
|
||||
|
||||
// remove soldier from vehicle
|
||||
BOOLEAN RemoveSoldierFromVehicle( SOLDIERTYPE *pSoldier, INT32 iId );
|
||||
@@ -387,7 +389,7 @@ INT32 GetNumberInVehicle( INT32 iId );
|
||||
// grab # in vehicle skipping EPCs (who aren't allowed to drive :-)
|
||||
INT32 GetNumberOfNonEPCsInVehicle( INT32 iId );
|
||||
|
||||
BOOLEAN EnterVehicle( SOLDIERTYPE *pVehicle, SOLDIERTYPE *pSoldier, BOOLEAN fSpecificSeat = FALSE, UINT8 ubSeatIndex = 0 );
|
||||
BOOLEAN EnterVehicle( SOLDIERTYPE *pVehicle, SOLDIERTYPE *pSoldier, UINT8 ubSeatIndex = 0 );
|
||||
|
||||
SOLDIERTYPE *GetDriver( INT32 iID );
|
||||
|
||||
@@ -395,6 +397,9 @@ void SetVehicleName( SOLDIERTYPE *pVehicle );
|
||||
|
||||
BOOLEAN ExitVehicle( SOLDIERTYPE *pSoldier );
|
||||
|
||||
BOOLEAN ChangeVehicleSeat( SOLDIERTYPE *pVehicle, SOLDIERTYPE *pSoldier, UINT8 ubSeatIndex );
|
||||
BOOLEAN SwapVehicleSeat( SOLDIERTYPE *pVehicle, SOLDIERTYPE *pSoldier, UINT8 ubSeatIndex );
|
||||
|
||||
void AddPassangersToTeamPanel( INT32 iId );
|
||||
|
||||
|
||||
@@ -456,6 +461,8 @@ BOOLEAN IsEnoughSpaceInVehicle( INT32 iID );
|
||||
|
||||
BOOLEAN IsSoldierInThisVehicleSquad( SOLDIERTYPE *pSoldier, INT8 bSquadNumber );
|
||||
|
||||
INT8 GetSeatIndexFromSoldier( SOLDIERTYPE *pSoldier );
|
||||
|
||||
SOLDIERTYPE* PickRandomPassengerFromVehicle( SOLDIERTYPE *pSoldier );
|
||||
|
||||
BOOLEAN DoesVehicleHaveAnyPassengers( INT32 iVehicleID );
|
||||
|
||||
Reference in New Issue
Block a user