From 8b698f0633e851cadfe571475d67e84607683514 Mon Sep 17 00:00:00 2001 From: Flugente Date: Wed, 23 Oct 2019 22:07:58 +0000 Subject: [PATCH] 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 --- Tactical/Interface Panels.cpp | 3 ++- Tactical/Weapons.cpp | 10 ++++++++++ Tactical/Weapons.h | 1 + 3 files changed, 13 insertions(+), 1 deletion(-) diff --git a/Tactical/Interface Panels.cpp b/Tactical/Interface Panels.cpp index 4e811eb2..0e02cf9e 100644 --- a/Tactical/Interface Panels.cpp +++ b/Tactical/Interface Panels.cpp @@ -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 ] ); } diff --git a/Tactical/Weapons.cpp b/Tactical/Weapons.cpp index 5e12cea1..2bddab75 100644 --- a/Tactical/Weapons.cpp +++ b/Tactical/Weapons.cpp @@ -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 ) { diff --git a/Tactical/Weapons.h b/Tactical/Weapons.h index 3b49b992..2c223ffb 100644 --- a/Tactical/Weapons.h +++ b/Tactical/Weapons.h @@ -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