Fix: inventory button to change firemodes was greyed out for guns with one base fire mode, even if it had several barrel configurations

git-svn-id: https://ja2svn.mooo.com/source/ja2/trunk/GameSource/ja2_v1.13/Build@8701 3b4a5df2-a311-0410-b5c6-a8a6f20db521
This commit is contained in:
Flugente
2019-10-23 22:07:58 +00:00
parent cd87c4f9cc
commit 8b698f0633
3 changed files with 13 additions and 1 deletions
+2 -1
View File
@@ -1090,7 +1090,8 @@ void UpdateSMPanel( )
if ( ( ( IsGunAutofireCapable( &gpSMCurrentMerc->inv[HANDPOS] ) || IsGunBurstCapable( &gpSMCurrentMerc->inv[HANDPOS], FALSE, gpSMCurrentMerc ) ) && !Weapon[gpSMCurrentMerc->inv[HANDPOS].usItem].NoSemiAuto )
|| IsGrenadeLauncherAttached ( &(gpSMCurrentMerc->inv[HANDPOS]) )
|| IsWeaponAttached( &(gpSMCurrentMerc->inv[HANDPOS]), IC_GUN )
|| IsWeaponAttached( &( gpSMCurrentMerc->inv[HANDPOS] ), IC_BLADE ) )
|| IsWeaponAttached( &( gpSMCurrentMerc->inv[HANDPOS] ), IC_BLADE )
|| HasSeveralBarrelConfigurations( gpSMCurrentMerc->inv[HANDPOS].usItem ) )
{
EnableButton( iSMPanelButtons[ BURSTMODE_BUTTON ] );
}
+10
View File
@@ -2539,6 +2539,16 @@ UINT8 GetFittingBarrelMode( UINT16 usItem, UINT8 aBarrelMode )
return bestfound;
}
bool HasSeveralBarrelConfigurations( UINT16 usItem )
{
if ( ( Item[usItem].usItemClass & IC_BOBBY_GUN ) )
{
return (Weapon[Item[usItem].ubClassIndex].barrelconfigurations.size() > 1);
}
return false;
}
// Flugente: this function calls UseGun and handles the firing of severeal shots at once
BOOLEAN UseGunWrapper( SOLDIERTYPE *pSoldier, INT32 sTargetGridNo )
{
+1
View File
@@ -546,5 +546,6 @@ BOOLEAN ArtilleryStrike( UINT16 usItem, UINT8 ubOwnerID, UINT32 usStartingGridNo
// Flugente: functions for using several barrels at once
UINT8 GetNextBarrelMode( UINT16 usItem, UINT8 aBarrelMode );
UINT8 GetFittingBarrelMode( UINT16 usItem, UINT8 aBarrelMode ); // return a number of barrels this gun can fire, equal or below aBarrelMode
bool HasSeveralBarrelConfigurations( UINT16 usItem );
#endif