mirror of
https://github.com/ZDoom/gzdoom-gles.git
synced 2024-11-11 07:12:16 +00:00
added SWF_SELECTPRIORITY flag to A_SelectWeapon
This commit is contained in:
parent
13fa06fe7a
commit
a1a0da1f13
3 changed files with 20 additions and 2 deletions
|
@ -3103,12 +3103,19 @@ DEFINE_ACTION_FUNCTION_PARAMS(AActor, A_Recoil)
|
||||||
// A_SelectWeapon
|
// A_SelectWeapon
|
||||||
//
|
//
|
||||||
//===========================================================================
|
//===========================================================================
|
||||||
|
enum SW_Flags
|
||||||
|
{
|
||||||
|
SWF_SELECTPRIORITY = 1,
|
||||||
|
};
|
||||||
DEFINE_ACTION_FUNCTION_PARAMS(AActor, A_SelectWeapon)
|
DEFINE_ACTION_FUNCTION_PARAMS(AActor, A_SelectWeapon)
|
||||||
{
|
{
|
||||||
PARAM_SELF_PROLOGUE(AActor);
|
PARAM_SELF_PROLOGUE(AActor);
|
||||||
PARAM_CLASS(cls, AWeapon);
|
PARAM_CLASS(cls, AWeapon);
|
||||||
|
PARAM_INT_OPT(flags) { flags = 0; }
|
||||||
|
|
||||||
if (cls == NULL || self->player == NULL)
|
bool selectPriority = !!(flags & SWF_SELECTPRIORITY);
|
||||||
|
|
||||||
|
if ((!selectPriority && cls == NULL) || self->player == NULL)
|
||||||
{
|
{
|
||||||
ACTION_RETURN_BOOL(false);
|
ACTION_RETURN_BOOL(false);
|
||||||
}
|
}
|
||||||
|
@ -3123,6 +3130,14 @@ DEFINE_ACTION_FUNCTION_PARAMS(AActor, A_SelectWeapon)
|
||||||
}
|
}
|
||||||
ACTION_RETURN_BOOL(true);
|
ACTION_RETURN_BOOL(true);
|
||||||
}
|
}
|
||||||
|
else if (selectPriority)
|
||||||
|
{
|
||||||
|
// [XA] if the named weapon cannot be found (or is a dummy like 'None'),
|
||||||
|
// select the next highest priority weapon. This is basically
|
||||||
|
// the same as A_CheckReload minus the ammo check. Handy.
|
||||||
|
self->player->mo->PickNewWeapon(NULL);
|
||||||
|
ACTION_RETURN_BOOL(true);
|
||||||
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
ACTION_RETURN_BOOL(false);
|
ACTION_RETURN_BOOL(false);
|
||||||
|
|
|
@ -265,7 +265,7 @@ ACTOR Actor native //: Thinker
|
||||||
native state A_CheckLOF(state jump, int flags = 0, float range = 0, float minrange = 0, float angle = 0, float pitch = 0, float offsetheight = 0, float offsetwidth = 0, int ptr_target = AAPTR_DEFAULT, float offsetforward = 0);
|
native state A_CheckLOF(state jump, int flags = 0, float range = 0, float minrange = 0, float angle = 0, float pitch = 0, float offsetheight = 0, float offsetwidth = 0, int ptr_target = AAPTR_DEFAULT, float offsetforward = 0);
|
||||||
native state A_JumpIfTargetInLOS (state label, float/*angle*/ fov = 0, int flags = 0, float dist_max = 0, float dist_close = 0);
|
native state A_JumpIfTargetInLOS (state label, float/*angle*/ fov = 0, int flags = 0, float dist_max = 0, float dist_close = 0);
|
||||||
native state A_JumpIfInTargetLOS (state label, float/*angle*/ fov = 0, int flags = 0, float dist_max = 0, float dist_close = 0);
|
native state A_JumpIfInTargetLOS (state label, float/*angle*/ fov = 0, int flags = 0, float dist_max = 0, float dist_close = 0);
|
||||||
native bool A_SelectWeapon(class<Weapon> whichweapon);
|
native bool A_SelectWeapon(class<Weapon> whichweapon, int flags = 0);
|
||||||
action native A_Punch();
|
action native A_Punch();
|
||||||
action native A_Feathers();
|
action native A_Feathers();
|
||||||
action native A_ClassBossHealth();
|
action native A_ClassBossHealth();
|
||||||
|
|
|
@ -150,6 +150,9 @@ const int WRF_ALLOWUSER2 = 256;
|
||||||
const int WRF_ALLOWUSER3 = 512;
|
const int WRF_ALLOWUSER3 = 512;
|
||||||
const int WRF_ALLOWUSER4 = 1024;
|
const int WRF_ALLOWUSER4 = 1024;
|
||||||
|
|
||||||
|
// Flags for A_SelectWeapon
|
||||||
|
const int SWF_SELECTPRIORITY = 1;
|
||||||
|
|
||||||
// Morph constants
|
// Morph constants
|
||||||
const int MRF_ADDSTAMINA = 1;
|
const int MRF_ADDSTAMINA = 1;
|
||||||
const int MRF_FULLHEALTH = 2;
|
const int MRF_FULLHEALTH = 2;
|
||||||
|
|
Loading…
Reference in a new issue