mirror of
https://github.com/1dot13/source.git
synced 2026-07-29 13:52:17 +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:
+37
-14
@@ -1491,14 +1491,14 @@ UINT32 UIHandleMOnTerrain( UI_EVENT *pUIEvent )
|
||||
}
|
||||
}
|
||||
|
||||
// If we are a passenger or driver just show an X
|
||||
// If we are a passenger or driver just show ?
|
||||
if ( GetSoldier( &pSoldier, gusSelectedSoldier ) )
|
||||
{
|
||||
if ( ( pSoldier->flags.uiStatusFlags & ( SOLDIER_PASSENGER )) )
|
||||
{
|
||||
if ( !UIHandleOnMerc( TRUE ) )
|
||||
{
|
||||
guiNewUICursor = FLOATING_X_UICURSOR;
|
||||
guiNewUICursor = INVALID_ACTION_UICURSOR;
|
||||
return( GAME_SCREEN );
|
||||
}
|
||||
}
|
||||
@@ -3219,16 +3219,6 @@ UINT32 UIHandleHCOnTerrain( UI_EVENT *pUIEvent )
|
||||
return( GAME_SCREEN );
|
||||
}
|
||||
|
||||
// If we are a passenger or driver just show an ?
|
||||
if ( GetSoldier( &pSoldier, gusSelectedSoldier ) )
|
||||
{
|
||||
if ( ( pSoldier->flags.uiStatusFlags & ( SOLDIER_VEHICLE | SOLDIER_DRIVER | SOLDIER_PASSENGER )) )
|
||||
{
|
||||
guiNewUICursor = INVALID_ACTION_UICURSOR;
|
||||
return( GAME_SCREEN );
|
||||
}
|
||||
}
|
||||
|
||||
// If we are out of breath, no cursor...
|
||||
if ( pSoldier->bBreath < OKBREATH && pSoldier->bCollapsed )
|
||||
{
|
||||
@@ -3445,6 +3435,20 @@ BOOLEAN UIHandleOnMerc( BOOLEAN fMovementMode )
|
||||
// Check if this guy is on the enemy team....
|
||||
if ( !pSoldier->aiData.bNeutral && (pSoldier->bSide != gbPlayerNum ) )
|
||||
{
|
||||
// anv: don't switch if passengers are blocked from attacking
|
||||
if( gusSelectedSoldier != NOBODY )
|
||||
{
|
||||
SOLDIERTYPE *pSelectedSoldier = MercPtrs[gusSelectedSoldier];
|
||||
if( pSelectedSoldier->flags.uiStatusFlags & ( SOLDIER_DRIVER | SOLDIER_PASSENGER ) )
|
||||
{
|
||||
SOLDIERTYPE *pVehicle = GetSoldierStructureForVehicle( pSelectedSoldier->iVehicleId );
|
||||
INT8 bSeatIndex = GetSeatIndexFromSoldier( pSelectedSoldier );
|
||||
if( gNewVehicle[ pVehicleList[ pSelectedSoldier->iVehicleId ].ubVehicleType ].VehicleSeats[bSeatIndex].fBlockedShots == TRUE )
|
||||
{
|
||||
return( FALSE );
|
||||
}
|
||||
}
|
||||
}
|
||||
gUIActionModeChangeDueToMouseOver = TRUE;
|
||||
|
||||
guiPendingOverrideEvent = M_CHANGE_TO_ACTION;
|
||||
@@ -3531,7 +3535,7 @@ void UIHandleSoldierStanceChange( UINT8 ubSoldierID, INT8 bNewStance )
|
||||
{
|
||||
SOLDIERTYPE *pSoldier = MercPtrs[ ubSoldierID ];
|
||||
|
||||
if( pSoldier->flags.uiStatusFlags & SOLDIER_DRIVER )
|
||||
if( pSoldier->flags.uiStatusFlags & ( SOLDIER_DRIVER | SOLDIER_PASSENGER ) )
|
||||
{
|
||||
pSoldier = GetSoldierStructureForVehicle( pSoldier->iVehicleId );
|
||||
}
|
||||
@@ -6371,11 +6375,30 @@ INT8 UIHandleInteractiveTilesAndItemsOnTerrain( SOLDIERTYPE *pSoldier, INT32 usM
|
||||
|
||||
gfBeginVehicleCursor = FALSE;
|
||||
|
||||
// If we are a passenger or driver just show an ?
|
||||
if ( ( pSoldier->flags.uiStatusFlags & ( SOLDIER_VEHICLE | SOLDIER_DRIVER | SOLDIER_PASSENGER )) )
|
||||
{
|
||||
// unless we are over our own vehicle, then we can call vehicle menu
|
||||
if( gfUIFullTargetFound )
|
||||
{
|
||||
pTSoldier = MercPtrs[ gusUIFullTargetID ];
|
||||
if( pSoldier->iVehicleId == pTSoldier->bVehicleID )
|
||||
{
|
||||
guiNewUICursor = ENTER_VEHICLE_UICURSOR;
|
||||
return( 1 );
|
||||
}
|
||||
}
|
||||
guiNewUICursor = INVALID_ACTION_UICURSOR;
|
||||
return( 0 );
|
||||
}
|
||||
|
||||
if ( gfUIFullTargetFound )
|
||||
{
|
||||
pTSoldier = MercPtrs[ gusUIFullTargetID ];
|
||||
|
||||
if ( OK_ENTERABLE_VEHICLE( pTSoldier ) && pTSoldier->bVisible != -1 )
|
||||
// anv: added condition - make sure we won't put vehicle in another vehicle
|
||||
if ( OK_ENTERABLE_VEHICLE( pTSoldier ) && pTSoldier->bVisible != -1 && !( pSoldier->flags.uiStatusFlags & ( SOLDIER_DRIVER | SOLDIER_PASSENGER | SOLDIER_VEHICLE ) ) )
|
||||
//if ( OK_ENTERABLE_VEHICLE( pTSoldier ) && pTSoldier->bVisible != -1 )
|
||||
{
|
||||
// grab number of occupants in vehicles
|
||||
if ( fItemsOnlyIfOnIntTiles )
|
||||
|
||||
Reference in New Issue
Block a user