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:
Wanne
2014-05-18 15:26:15 +00:00
parent cf1b9982ba
commit bbff053fc5
35 changed files with 1209 additions and 144 deletions
+40 -32
View File
@@ -5693,6 +5693,13 @@ void RenderTEAMPanel( BOOLEAN fDirty )
// clear pStr value
swprintf( pStr, L"");
INT8 bSeatIndex = GetSeatIndexFromSoldier( pSoldier );
if( bSeatIndex != (-1) )
{
swprintf( sTemp, L"%s\n", gNewVehicle[ pVehicleList[ pSoldier->iVehicleId ].ubVehicleType ].VehicleSeats[ bSeatIndex ].zSeatName );
wcscat( pStr, sTemp );
}
if (gGameOptions.fNewTraitSystem) // SANDRO - old/new traits check
{
UINT8 ubTempSkillArray[30];
@@ -5716,7 +5723,8 @@ void RenderTEAMPanel( BOOLEAN fDirty )
if ( bNumSkillTraits == 0 )
{
swprintf( pStr, L"%s", pPersonnelScreenStrings[ PRSNL_TXT_NOSKILLS ] );
swprintf( sTemp, L"%s", pPersonnelScreenStrings[ PRSNL_TXT_NOSKILLS ] );
wcscat( pStr, sTemp );
}
else
{
@@ -6974,8 +6982,8 @@ void AddPlayerToInterfaceTeamSlot( UINT8 ubID )
return;
}
//if ( !( MercPtrs[ ubID ]->flags.uiStatusFlags & ( SOLDIER_DRIVER | SOLDIER_PASSENGER ) ) )
//{
if ( !( MercPtrs[ ubID ]->flags.uiStatusFlags & ( SOLDIER_DRIVER | SOLDIER_PASSENGER ) ) )
{
if ( !PlayerExistsInSlot( ubID ) )
{
// Find a free slot
@@ -6999,38 +7007,38 @@ void AddPlayerToInterfaceTeamSlot( UINT8 ubID )
}
}
}
//}
//else
//{
// // anv: for passengers, position on team panel will be linked with seat in vehicle
// if ( MercPtrs[ ubID ]->flags.uiStatusFlags & ( SOLDIER_DRIVER | SOLDIER_PASSENGER ) )
// {
// SOLDIERTYPE *pVehicle = GetSoldierStructureForVehicle( MercPtrs[ ubID ]->iVehicleId );
// if( pVehicle != NULL )
// {
// for( UINT8 iCounter = 0; iCounter < gNewVehicle[ pVehicleList[ MercPtrs[ ubID ]->iVehicleId ].ubVehicleType ].iNewSeatingCapacities; iCounter++ )
// {
// SOLDIERTYPE *pPassenger = pVehicleList[ MercPtrs[ ubID ]->iVehicleId ].pPassengers[ iCounter ];
// if( pPassenger != NULL && pPassenger->ubID == ubID )
// {
// gTeamPanel[ iCounter ].fOccupied = TRUE;
// gTeamPanel[ iCounter ].ubID = ubID;
}
else
{
// anv: for passengers, position on team panel will be linked with seat in vehicle
if ( MercPtrs[ ubID ]->flags.uiStatusFlags & ( SOLDIER_DRIVER | SOLDIER_PASSENGER ) )
{
SOLDIERTYPE *pVehicle = GetSoldierStructureForVehicle( MercPtrs[ ubID ]->iVehicleId );
if( pVehicle != NULL )
{
for( UINT8 iCounter = 0; iCounter < gNewVehicle[ pVehicleList[ MercPtrs[ ubID ]->iVehicleId ].ubVehicleType ].iNewSeatingCapacities; iCounter++ )
{
SOLDIERTYPE *pPassenger = pVehicleList[ MercPtrs[ ubID ]->iVehicleId ].pPassengers[ iCounter ];
if( pPassenger != NULL && pPassenger->ubID == ubID )
{
gTeamPanel[ iCounter ].fOccupied = TRUE;
gTeamPanel[ iCounter ].ubID = ubID;
// MSYS_SetRegionUserData( &gTEAM_FirstHandInv[ iCounter ], 0, iCounter );
// MSYS_SetRegionUserData( &gTEAM_FaceRegions[ iCounter ], 0, iCounter );
MSYS_SetRegionUserData( &gTEAM_FirstHandInv[ iCounter ], 0, iCounter );
MSYS_SetRegionUserData( &gTEAM_FaceRegions[ iCounter ], 0, iCounter );
// // DIRTY INTERFACE
// fInterfacePanelDirty = DIRTYLEVEL2;
// DIRTY INTERFACE
fInterfacePanelDirty = DIRTYLEVEL2;
// // Set ID to do open anim
// MercPtrs[ ubID ]->flags.fUInewMerc = TRUE;
//
// return;
// }
// }
// }
// }
//}
// Set ID to do open anim
MercPtrs[ ubID ]->flags.fUInewMerc = TRUE;
return;
}
}
}
}
}
}
BOOLEAN InitTEAMSlots( )