Convert MapScreenCharacterSt::usSolID to SoldierID

This commit is contained in:
Asdow
2024-11-17 01:25:00 +02:00
parent 2918801f75
commit c475f9e4e6
14 changed files with 331 additions and 318 deletions
+23 -19
View File
@@ -2362,16 +2362,17 @@ void addAmmoToPocketPopup( SOLDIERTYPE *pSoldier, INT16 sPocket, POPUP* popup )
}
POPUP * createPopupForPocket( SOLDIERTYPE *pSoldier, INT16 sPocket ){
SOLDIERTYPE* pSelectedSoldier = gCharactersList[bSelectedInfoChar].usSolID;
if( !(
guiCurrentItemDescriptionScreen == MAP_SCREEN
&& fShowMapInventoryPool
&& ( ( Menptr[ gCharactersList[ bSelectedInfoChar ].usSolID ].sSectorX == sSelMapX )
&& ( Menptr[ gCharactersList[ bSelectedInfoChar ].usSolID ].sSectorY == sSelMapY )
&& ( Menptr[ gCharactersList[ bSelectedInfoChar ].usSolID ].bSectorZ == iCurrentMapSectorZ )
&& fShowMapInventoryPool
&& ( ( pSelectedSoldier->sSectorX == sSelMapX )
&& ( pSelectedSoldier->sSectorY == sSelMapY )
&& ( pSelectedSoldier->bSectorZ == iCurrentMapSectorZ )
)
&& CanPlayerUseSectorInventory( &Menptr[ gCharactersList[ bSelectedInfoChar ].usSolID ] )
) )
&& CanPlayerUseSectorInventory( pSelectedSoldier )
) )
{
return NULL;
}
@@ -5853,13 +5854,14 @@ void UpdateAttachmentTooltips(OBJECTTYPE *pObject, UINT8 ubStatusIndex)
}
}
BOOLEAN showAttachmentPopups = FALSE;
SOLDIERTYPE* pSoldier = gCharactersList[bSelectedInfoChar].usSolID;
if( guiCurrentItemDescriptionScreen == MAP_SCREEN
&& fShowMapInventoryPool
&& ( (Menptr[ gCharactersList[ bSelectedInfoChar ].usSolID ].sSectorX == sSelMapX )
&& ( Menptr[ gCharactersList[ bSelectedInfoChar ].usSolID ].sSectorY == sSelMapY )
&& ( Menptr[ gCharactersList[ bSelectedInfoChar ].usSolID ].bSectorZ == iCurrentMapSectorZ ) )
&& CanPlayerUseSectorInventory( &Menptr[ gCharactersList[ bSelectedInfoChar ].usSolID ] )
&& ( (pSoldier->sSectorX == sSelMapX )
&& ( pSoldier->sSectorY == sSelMapY )
&& ( pSoldier->bSectorZ == iCurrentMapSectorZ ) )
&& CanPlayerUseSectorInventory( pSoldier )
&& attachList.size()>0 ) // silversurfer: no need to show popups if we have nothing to display
{
showAttachmentPopups = TRUE;
@@ -10546,18 +10548,20 @@ void ItemPopupRegionCallback( MOUSE_REGION * pRegion, INT32 iReason )
if (iReason & MSYS_CALLBACK_REASON_LBUTTON_DWN)
{
if( ( Menptr[ gCharactersList[ bSelectedInfoChar ].usSolID ].sSectorX != sSelMapX ) ||
( Menptr[ gCharactersList[ bSelectedInfoChar ].usSolID ].sSectorY != sSelMapY ) ||
( Menptr[ gCharactersList[ bSelectedInfoChar ].usSolID ].bSectorZ != iCurrentMapSectorZ ) ||
( Menptr[ gCharactersList[ bSelectedInfoChar ].usSolID ].flags.fBetweenSectors ) )
SOLDIERTYPE* pSelected = gCharactersList[bSelectedInfoChar].usSolID;
if( ( pSelected->sSectorX != sSelMapX ) ||
( pSelected->sSectorY != sSelMapY ) ||
( pSelected->bSectorZ != iCurrentMapSectorZ ) ||
( pSelected->flags.fBetweenSectors ) )
{
if ( gpItemPointer == NULL )
{
swprintf( sString, pMapInventoryErrorString[ 2 ], Menptr[ gCharactersList[ bSelectedInfoChar ].usSolID ].name );
swprintf( sString, pMapInventoryErrorString[ 2 ], pSelected->name );
}
else
{
swprintf( sString, pMapInventoryErrorString[ 5 ], Menptr[ gCharactersList[ bSelectedInfoChar ].usSolID ].name );
swprintf( sString, pMapInventoryErrorString[ 5 ], pSelected->name );
}
DoMapMessageBox( MSG_BOX_BASIC_STYLE, sString, MAP_SCREEN, MSG_BOX_FLAG_OK, NULL );
return;
@@ -12824,7 +12828,7 @@ void UpdateItemHatches()
{
if ( fShowInventoryFlag && bSelectedInfoChar >= 0 )
{
pSoldier = MercPtrs[ gCharactersList[ bSelectedInfoChar ].usSolID ];
pSoldier = gCharactersList[ bSelectedInfoChar ].usSolID;
}
}
else
@@ -14539,7 +14543,7 @@ void UpdateMercBodyRegionHelpText( )
wcscpy( sString, L"" );
// valid soldier selected
pSoldier = MercPtrs[gCharactersList[bSelectedInfoChar].usSolID];
pSoldier = gCharactersList[bSelectedInfoChar].usSolID;
// health/energy/morale
if ( pSoldier->bAssignment != ASSIGNMENT_POW )
@@ -14551,7 +14555,7 @@ void UpdateMercBodyRegionHelpText( )
// robot (condition only)
swprintf( sString, L"%s: %d/%d", pMapScreenStatusStrings[3], pSoldier->stats.bLife, pSoldier->stats.bLifeMax );
}
else if ( Menptr[gCharactersList[bSelectedInfoChar].usSolID].flags.uiStatusFlags & SOLDIER_VEHICLE )
else if (pSoldier->flags.uiStatusFlags & SOLDIER_VEHICLE )
{
// vehicle (condition/fuel)
swprintf( sString, L"%s: %d/%d, %s: %d/%d",
+2 -4
View File
@@ -7320,9 +7320,7 @@ void KeyRingItemPanelButtonCallback( MOUSE_REGION * pRegion, INT32 iReason )
}
pSoldier = &( Menptr[ gCharactersList[ bSelectedInfoChar ].usSolID ] );
pSoldier = gCharactersList[ bSelectedInfoChar ].usSolID;
sStartYPosition = MAP_START_KEYRING_Y;
sWidth = 261;
sHeight = ( 359 - 107 );
@@ -7457,7 +7455,7 @@ void KeyRingSlotInvClickCallback( MOUSE_REGION * pRegion, INT32 iReason )
}
else
{
UINT16 ubSrcID, ubDestID;
SoldierID ubSrcID, ubDestID;
BOOLEAN fOKToGo = FALSE;
BOOLEAN fDeductPoints = FALSE;
+7 -7
View File
@@ -51,24 +51,24 @@ bool checkLBEArrayIntegrity(bool verbose) {
if (!gCharactersList[i].fValid || gCharactersList[i].usSolID >= NOBODY) continue;
SoldierID id = gCharactersList[i].usSolID;
SOLDIERTYPE soldier = Menptr[id];
SOLDIERTYPE *soldier = id;
if (verbose)ScreenMsg(FONT_MCOLOR_LTYELLOW, MSG_INTERFACE, L"LBENODE integrity check start: checking soldier items (%s)...", soldier.name);
if (verbose)ScreenMsg(FONT_MCOLOR_LTYELLOW, MSG_INTERFACE, L"LBENODE integrity check start: checking soldier items (%s)...", soldier->name);
for (int j = 0; j < soldier.inv.size(); j++) {
OBJECTTYPE * object = &(soldier.inv[j]);
for (int j = 0; j < soldier->inv.size(); j++) {
OBJECTTYPE * object = &(soldier->inv[j]);
if (object->HasAnyActiveLBEs()) {
if (!checkObjectLBEIntegrity(object)) {
ScreenMsg(FONT_MCOLOR_LTRED, MSG_INTERFACE, L"> LBENODE missing: %s -> %s!", soldier.name, Item[object->usItem].szItemName);
ScreenMsg(FONT_MCOLOR_LTRED, MSG_INTERFACE, L"> LBENODE missing: %s -> %s!", soldier->name, Item[object->usItem].szItemName);
integrityCheck = false;
}
else {
if (verbose)ScreenMsg(FONT_MCOLOR_LTGREEN, MSG_INTERFACE, L"> OK: %s -> %s", soldier.name, Item[object->usItem].szItemName);
if (verbose)ScreenMsg(FONT_MCOLOR_LTGREEN, MSG_INTERFACE, L"> OK: %s -> %s", soldier->name, Item[object->usItem].szItemName);
}
}
else {
if (verbose)ScreenMsg(FONT_MCOLOR_LTGRAY, MSG_INTERFACE, L"> SKIP: %s -> %s", soldier.name, Item[object->usItem].szItemName);
if (verbose)ScreenMsg(FONT_MCOLOR_LTGRAY, MSG_INTERFACE, L"> SKIP: %s -> %s", soldier->name, Item[object->usItem].szItemName);
}
}
}
+1 -1
View File
@@ -502,7 +502,7 @@ void MercArrivesCallback( UINT16 ubSoldierID )
{
if (gCharactersList[cnt].fValid)
{
pTeamSoldier = &Menptr[gCharactersList[cnt].usSolID];
pTeamSoldier = gCharactersList[cnt].usSolID;
if (pTeamSoldier != pSoldier && pTeamSoldier->bAssignment != ASSIGNMENT_DEAD && pTeamSoldier->bAssignment != ASSIGNMENT_POW && pTeamSoldier->bAssignment != IN_TRANSIT && pSoldier->ubStrategicInsertionCode != INSERTION_CODE_CHOPPER)
{
force_helidrop = false;
+1 -1
View File
@@ -1096,7 +1096,7 @@ EquipmentSelection::Functions(UINT32 aVal)
}
else if ( aVal < gTemplateVector.size( ) )
{
SOLDIERTYPE* pSoldier = &Menptr[gCharactersList[bSelectedInfoChar].usSolID];
SOLDIERTYPE* pSoldier = gCharactersList[bSelectedInfoChar].usSolID;
if ( pSoldier )
{
std::string name = gTemplateVector[aVal];