* Updated to ZDoom 4204:

- Added Weapon.MinSelectionAmmo1 and Weapon.MinSelectionAmmo2 to exclude weapons from autoselection even if they have enough ammo to be used.
- Made FName::NameManager::Inited a static member variable.

git-svn-id: http://mancubus.net/svn/hosted/gzdoom/trunk@1547 b0f79afe-0144-0410-b225-9a4edf0717df
This commit is contained in:
gez 2013-03-24 10:22:19 +00:00
parent 5f8da0db96
commit 3d90aa2206
7 changed files with 33 additions and 3 deletions

View file

@ -264,6 +264,7 @@ public:
const PClass *ProjectileType; // Projectile used by primary attack
const PClass *AltProjectileType; // Projectile used by alternate attack
int SelectionOrder; // Lower-numbered weapons get picked first
int MinSelAmmo1, MinSelAmmo2; // Ignore in BestWeapon() if inadequate ammo
fixed_t MoveCombatDist; // Used by bots, but do they *really* need it?
int ReloadCounter; // For A_CheckForReload
int BobStyle; // [XA] Bobbing style. Defines type of bobbing (e.g. Normal, Alpha)

View file

@ -65,6 +65,10 @@ void AWeapon::Serialize (FArchive &arc)
}
arc << FOVScale
<< Crosshair;
if (SaveVersion >= 4203)
{
arc << MinSelAmmo1 << MinSelAmmo2;
}
}
//===========================================================================

View file

@ -65,6 +65,7 @@ struct FName::NameManager::NameBlock
// PRIVATE DATA DEFINITIONS ------------------------------------------------
FName::NameManager FName::NameData;
bool FName::NameManager::Inited;
// Define the predefined names.
static const char *PredefinedNames[] =

View file

@ -116,7 +116,7 @@ protected:
int AddName (const char *text, unsigned int hash, unsigned int bucket);
NameBlock *AddBlock (size_t len);
void InitBuckets ();
bool Inited;
static bool Inited;
};
static NameManager NameData;

View file

@ -766,6 +766,12 @@ AWeapon *APlayerPawn::BestWeapon (const PClass *ammotype)
!weap->CheckAmmo (AWeapon::PrimaryFire, false))
continue;
// Don't select if if there isn't enough ammo as determined by the weapon's author.
if (weap->MinSelAmmo1 > 0 && (weap->Ammo1 == NULL || weap->Ammo1->Amount < weap->MinSelAmmo1))
continue;
if (weap->MinSelAmmo2 > 0 && (weap->Ammo2 == NULL || weap->Ammo2->Amount < weap->MinSelAmmo2))
continue;
// This weapon is usable!
bestOrder = weap->SelectionOrder;
bestMatch = weap;

View file

@ -3,5 +3,5 @@
// This file was automatically generated by the
// updaterevision tool. Do not edit by hand.
#define ZD_SVN_REVISION_STRING "4202"
#define ZD_SVN_REVISION_NUMBER 4202
#define ZD_SVN_REVISION_STRING "4204"
#define ZD_SVN_REVISION_NUMBER 4204

View file

@ -1739,6 +1739,24 @@ DEFINE_CLASS_PROPERTY(selectionorder, I, Weapon)
defaults->SelectionOrder = i;
}
//==========================================================================
//
//==========================================================================
DEFINE_CLASS_PROPERTY(minselectionammo1, I, Weapon)
{
PROP_INT_PARM(i, 0);
defaults->MinSelAmmo1 = i;
}
//==========================================================================
//
//==========================================================================
DEFINE_CLASS_PROPERTY(minselectionammo2, I, Weapon)
{
PROP_INT_PARM(i, 0);
defaults->MinSelAmmo2 = i;
}
//==========================================================================
//
//==========================================================================