mirror of
https://github.com/ZDoom/gzdoom-gles.git
synced 2024-11-28 06:53:40 +00:00
324 lines
16 KiB
C
324 lines
16 KiB
C
/*
|
|
** infomacros.h
|
|
**
|
|
**---------------------------------------------------------------------------
|
|
** Copyright 1998-2005 Randy Heit
|
|
** All rights reserved.
|
|
**
|
|
** Redistribution and use in source and binary forms, with or without
|
|
** modification, are permitted provided that the following conditions
|
|
** are met:
|
|
**
|
|
** 1. Redistributions of source code must retain the above copyright
|
|
** notice, this list of conditions and the following disclaimer.
|
|
** 2. Redistributions in binary form must reproduce the above copyright
|
|
** notice, this list of conditions and the following disclaimer in the
|
|
** documentation and/or other materials provided with the distribution.
|
|
** 3. The name of the author may not be used to endorse or promote products
|
|
** derived from this software without specific prior written permission.
|
|
**
|
|
** THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
|
|
** IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
|
|
** OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
|
|
** IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
|
|
** INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
|
|
** NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
|
** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
|
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
|
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
|
|
** THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
**---------------------------------------------------------------------------
|
|
**
|
|
** This file contains macros for building Actor defaults lists
|
|
** Defaults lists are byte-packed arrays of keys and values.
|
|
**
|
|
** For Visual C++, a simple byte array will do, with one
|
|
** restriction: Any strings must be at the end of the array.
|
|
**
|
|
** For GCC, we need to get more complicated: Everything needs
|
|
** to be a separate variable. Fortunately, GCC byte-aligns
|
|
** char variables, so as long they appear in the right order
|
|
** (which they do in all version I tried), this will work.
|
|
*/
|
|
|
|
#ifndef __INFOMACROS_H__
|
|
#define __INFOMACROS_H__
|
|
|
|
#ifndef __INFO_H__
|
|
#error infomacros.h is meant to be included by info.h
|
|
#endif
|
|
|
|
#ifdef WORDS_BIGENDIAN
|
|
#define BREAK_WORD(x) ((unsigned)(x)>>8), (x)&255
|
|
#define BREAK_LONG(x) ((unsigned)(x)>>24), ((x)>>16)&255, ((x)>>8)&255, (x)&255
|
|
#else
|
|
#define BREAK_WORD(x) (x)&255, ((unsigned)(x))>>8
|
|
#define BREAK_LONG(x) (x)&255, ((x)>>8)&255, ((x)>>16)&255, ((unsigned)(x))>>24
|
|
#endif
|
|
|
|
typedef void (*voidfunc_)();
|
|
|
|
|
|
#if defined(_MSC_VER)
|
|
|
|
/************************************************
|
|
************** Visual C++ macros ****************
|
|
************************************************/
|
|
|
|
#pragma data_seg(".areg$u") // ActorInfo initializer list
|
|
#pragma data_seg(".greg$u") // AT_GAME_SET list
|
|
#pragma data_seg(".sreg$u") // AT_SPEED_SET list
|
|
#pragma data_seg()
|
|
|
|
#define DOOMEDNUMOF(actor) actor##ActorInfo.DoomEdNum
|
|
|
|
#define BEGIN_DEFAULTS_PRE(actor) \
|
|
extern FActorInfo actor##ActorInfo; \
|
|
__declspec(allocate(".areg$u")) FActorInfo *actor##DefaultsReg = &actor##ActorInfo; \
|
|
FActorInfo actor##ActorInfo = {
|
|
|
|
#define BEGIN_DEFAULTS_POST(actor,game,ednum,id) \
|
|
GAME_##game, id, ednum,
|
|
|
|
#ifdef WORDS_BIGENDIAN
|
|
#define END_DEFAULTS "\xED\x5E" };
|
|
#else
|
|
#define END_DEFAULTS "\x5E\xED" };
|
|
#endif
|
|
|
|
#define ADD_BYTE_PROP(prop,val) BREAK_WORD(prop|ADEFTYPE_Byte), val,
|
|
#define ADD_FIXD_PROP(prop,val) BREAK_WORD(prop|ADEFTYPE_FixedMul), val,
|
|
#define ADD_WORD_PROP(prop,val) BREAK_WORD(prop|ADEFTYPE_Word), BREAK_WORD(val),
|
|
#define ADD_LONG_PROP(prop,val) BREAK_WORD(prop|ADEFTYPE_Long), BREAK_LONG(val),
|
|
#ifdef WORDS_BIGENDIAN
|
|
#define ADD_STRING_PROP(prop1,prop2,val) "\0" prop2 val "\0"
|
|
#else
|
|
#define ADD_STRING_PROP(prop1,prop2,val) prop2 "\0" val "\0"
|
|
#endif
|
|
|
|
// Define a function that gets called when the game is started.
|
|
#define AT_GAME_SET(ns) \
|
|
extern void ns##_gs(); \
|
|
__declspec(allocate(".greg$u")) voidfunc_ ns##_gsr = ns##_gs; \
|
|
void ns##_gs ()
|
|
|
|
// Define a function that gets called when the speed is changed.
|
|
#define AT_SPEED_SET(ns,varname) \
|
|
extern void ns##_ss(EGameSpeed); \
|
|
__declspec(allocate(".sreg$u")) void (*ns##_gsr)(EGameSpeed) = ns##_ss; \
|
|
void ns##_ss (EGameSpeed varname)
|
|
|
|
#else
|
|
|
|
/***********************************************
|
|
************* Non-Visual C++ macros ************
|
|
************************************************/
|
|
|
|
#define DOOMEDNUMOF(actor) actor##ActorInfo.DoomEdNum
|
|
|
|
extern void ApplyActorDefault (int defnum, const char *datastr);
|
|
extern void ApplyActorDefault (int defnum, int dataint);
|
|
|
|
// All variables used for the default list must be declared extern to
|
|
// ensure that GCC actually generates them in the object file.
|
|
#define BEGIN_DEFAULTS_PRE(actor) \
|
|
extern FActorInfo actor##ActorInfo; \
|
|
extern FActorInfo *actor##DefaultsReg; \
|
|
extern void actor##DefaultsConstructor(); \
|
|
FActorInfo *actor##DefaultsReg __attribute__((section("areg"))) = &actor##ActorInfo; \
|
|
FActorInfo actor##ActorInfo = {
|
|
|
|
#define BEGIN_DEFAULTS_POST(actor,game,ednum,id) \
|
|
GAME_##game, id, ednum, actor##DefaultsConstructor }; \
|
|
void actor##DefaultsConstructor() { \
|
|
|
|
#define END_DEFAULTS }
|
|
|
|
#define ADD_BYTE_PROP(prop,val) ApplyActorDefault (prop, (val));
|
|
#define ADD_FIXD_PROP(prop,val) ApplyActorDefault (prop, ((val)<<FRACBITS));
|
|
#define ADD_WORD_PROP(prop,val) ApplyActorDefault (prop, (val));
|
|
#define ADD_LONG_PROP(prop,val) ApplyActorDefault (prop, (val));
|
|
#define ADD_STRING_PROP(prop1,prop2,val) ApplyActorDefault (prop1, (val));
|
|
|
|
#define AT_GAME_SET(ns) \
|
|
extern void ns##_gs(); \
|
|
voidfunc_ ns##_gsr __attribute__((section("greg"))) = ns##_gs; \
|
|
void ns##_gs ()
|
|
|
|
//typedef void (*speedfunc)(EGameSpeed);
|
|
|
|
#define AT_SPEED_SET(ns,varname) \
|
|
extern void ns##_ss(EGameSpeed); \
|
|
void (*ns##_gsr)(EGameSpeed) __attribute__((section("sreg"))) = ns##_ss; \
|
|
void ns##_ss (EGameSpeed varname)
|
|
|
|
#endif
|
|
|
|
// Common macros
|
|
|
|
#define SimpleSpeedSetter(T,normalSpeed,fastSpeed,speed) \
|
|
{ GetDefault<T>()->Speed = (speed == SPEED_Fast) ? fastSpeed : normalSpeed; }
|
|
|
|
#define AT_GAME_SET_FRIEND(ns) friend void ns##_gs();
|
|
|
|
#define DECLARE_STATELESS_ACTOR(cls,parent) \
|
|
DECLARE_CLASS(cls,parent) \
|
|
protected: \
|
|
cls () throw() {} \
|
|
public:
|
|
|
|
#define DECLARE_ACTOR(cls,parent) \
|
|
DECLARE_STATELESS_ACTOR(cls,parent) \
|
|
static FState States[];
|
|
|
|
#define BEGIN_DEFAULTS(actor,game,ednum,spawnid) \
|
|
BEGIN_DEFAULTS_PRE(actor) \
|
|
RUNTIME_CLASS(actor), &actor::States[0], NULL, NULL, sizeof(actor::States)/sizeof(actor::States[0]), \
|
|
BEGIN_DEFAULTS_POST(actor,game,ednum,spawnid)
|
|
|
|
#define BEGIN_STATELESS_DEFAULTS(actor,game,ednum,spawnid) \
|
|
BEGIN_DEFAULTS_PRE(actor) \
|
|
RUNTIME_CLASS(actor), NULL, NULL, NULL, 0, \
|
|
BEGIN_DEFAULTS_POST(actor,game,ednum,spawnid)
|
|
|
|
// IMPLEMENT_ACTOR combines IMPLEMENT_CLASS and BEGIN_DEFAULTS
|
|
#define IMPLEMENT_ACTOR(actor,game,ednum,spawnid) \
|
|
IMPLEMENT_CLASS(actor) BEGIN_DEFAULTS(actor,game,ednum,spawnid)
|
|
|
|
#define IMPLEMENT_STATELESS_ACTOR(actor,game,ednum,spawnid) \
|
|
IMPLEMENT_CLASS(actor) BEGIN_STATELESS_DEFAULTS(actor,game,ednum,spawnid)
|
|
|
|
#define IMPLEMENT_ABSTRACT_ACTOR(actor) \
|
|
IMPLEMENT_STATELESS_ACTOR(actor,Any,-1,0) END_DEFAULTS
|
|
|
|
#define ACTOR_STATE_NAMES(actor) \
|
|
extern FStateName actor##StateNames[]; \
|
|
extern FActorInfo actor##ActorInfo; \
|
|
struct actor##StateNamesAssignerClass { actor##StateNamesAssignerClass() { actor##ActorInfo.StateNames = actor##StateNames; } } \
|
|
actor##StateNamesAssigner; \
|
|
FStateName actor##StateNames[]
|
|
|
|
#define PROP_SeeSound(x) ADD_STRING_PROP(ADEF_SeeSound,"\1",x)
|
|
#define PROP_AttackSound(x) ADD_STRING_PROP(ADEF_AttackSound,"\2",x)
|
|
#define PROP_PainSound(x) ADD_STRING_PROP(ADEF_PainSound,"\3",x)
|
|
#define PROP_DeathSound(x) ADD_STRING_PROP(ADEF_DeathSound,"\4",x)
|
|
#define PROP_ActiveSound(x) ADD_STRING_PROP(ADEF_ActiveSound,"\5",x)
|
|
#define PROP_UseSound(x) ADD_STRING_PROP(ADEF_UseSound,"\6",x)
|
|
#define PROP_Weapon_UpSound(x) ADD_STRING_PROP(ADEF_Weapon_UpSound,"\7",x)
|
|
#define PROP_Weapon_ReadySound(x) ADD_STRING_PROP(ADEF_Weapon_ReadySound,"\10",x)
|
|
#define PROP_Inventory_PickupSound(x) ADD_STRING_PROP(ADEF_Inventory_PickupSound,"\11",x)
|
|
#define PROP_Tag(x) ADD_STRING_PROP(ADEF_Tag,"\12",x)
|
|
#define PROP_Weapon_AmmoType1(x) ADD_STRING_PROP(ADEF_Weapon_AmmoType1,"\13",x)
|
|
#define PROP_Weapon_AmmoType2(x) ADD_STRING_PROP(ADEF_Weapon_AmmoType2,"\14",x)
|
|
#define PROP_Weapon_SisterType(x) ADD_STRING_PROP(ADEF_Weapon_SisterType,"\15",x)
|
|
#define PROP_Weapon_ProjectileType(x) ADD_STRING_PROP(ADEF_Weapon_ProjectileType,"\16",x)
|
|
#define PROP_PowerupGiver_Powerup(x) ADD_STRING_PROP(ADEF_PowerupGiver_Powerup,"\17",x)
|
|
#define PROP_Inventory_Icon(x) ADD_STRING_PROP(ADEF_Inventory_Icon,"\20",x)
|
|
|
|
#define PROP_XScale(x) ADD_BYTE_PROP(ADEF_XScale,x)
|
|
#define PROP_YScale(x) ADD_BYTE_PROP(ADEF_YScale,x)
|
|
#define PROP_SpawnHealth(x) ADD_WORD_PROP(ADEF_SpawnHealth,x)
|
|
#define PROP_SpawnHealthLong(x) ADD_LONG_PROP(ADEF_SpawnHealth,x)
|
|
#define PROP_ReactionTime(x) ADD_BYTE_PROP(ADEF_ReactionTime,x)
|
|
#define PROP_PainChance(x) ADD_BYTE_PROP(ADEF_PainChance,x)
|
|
#define PROP_MaxPainChance ADD_WORD_PROP(ADEF_PainChance,256)
|
|
#define PROP_SpeedFixed(x) ADD_FIXD_PROP(ADEF_Speed,x)
|
|
#define PROP_SpeedLong(x) ADD_LONG_PROP(ADEF_Speed,x)
|
|
#define PROP_Radius(x) ADD_LONG_PROP(ADEF_Radius,x)
|
|
#define PROP_RadiusFixed(x) ADD_FIXD_PROP(ADEF_Radius,x)
|
|
#define PROP_Height(x) ADD_LONG_PROP(ADEF_Height,x)
|
|
#define PROP_HeightFixed(x) ADD_FIXD_PROP(ADEF_Height,x)
|
|
#define PROP_Mass(x) ADD_WORD_PROP(ADEF_Mass,x)
|
|
#define PROP_MassLong(x) ADD_LONG_PROP(ADEF_Mass,x)
|
|
#define PROP_Damage(x) ADD_BYTE_PROP(ADEF_Damage,x)
|
|
#define PROP_DamageLong(x) ADD_LONG_PROP(ADEF_Damage,x)
|
|
#define PROP_DamageType(x) ADD_BYTE_PROP(ADEF_DamageType,x)
|
|
#define PROP_Flags(x) ADD_LONG_PROP(ADEF_Flags,x)
|
|
#define PROP_Flags2(x) ADD_LONG_PROP(ADEF_Flags2,x)
|
|
#define PROP_Flags3(x) ADD_LONG_PROP(ADEF_Flags3,x)
|
|
#define PROP_Flags4(x) ADD_LONG_PROP(ADEF_Flags4,x)
|
|
#define PROP_FlagsSet(x) ADD_LONG_PROP(ADEF_FlagsSet,x)
|
|
#define PROP_Flags2Set(x) ADD_LONG_PROP(ADEF_Flags2Set,x)
|
|
#define PROP_Flags3Set(x) ADD_LONG_PROP(ADEF_Flags3Set,x)
|
|
#define PROP_Flags4Set(x) ADD_LONG_PROP(ADEF_Flags4Set,x)
|
|
#define PROP_FlagsClear(x) ADD_LONG_PROP(ADEF_FlagsClear,x)
|
|
#define PROP_Flags2Clear(x) ADD_LONG_PROP(ADEF_Flags2Clear,x)
|
|
#define PROP_Flags3Clear(x) ADD_LONG_PROP(ADEF_Flags3Clear,x)
|
|
#define PROP_Flags4Clear(x) ADD_LONG_PROP(ADEF_Flags4Clear,x)
|
|
#define PROP_Alpha(x) ADD_LONG_PROP(ADEF_Alpha,x)
|
|
#define PROP_RenderStyle(x) ADD_BYTE_PROP(ADEF_RenderStyle,x)
|
|
#define PROP_RenderFlags(x) ADD_WORD_PROP(ADEF_RenderFlags,x)
|
|
#define PROP_Translation(x,y) ADD_WORD_PROP(ADEF_Translation,((x)<<8)|(y))
|
|
#define PROP_MinMissileChance(x) ADD_BYTE_PROP(ADEF_MinMissileChance,x)
|
|
#define PROP_MeleeRange(x) ADD_FIXD_PROP(ADEF_MeleeRange,x)
|
|
#define PROP_MaxDropOffHeight(x) ADD_FIXD_PROP(ADEF_MaxDropOffHeight,x)
|
|
#define PROP_MaxStepHeight(x) ADD_FIXD_PROP(ADEF_MaxStepHeight,x)
|
|
#define PROP_BounceFactor(x) ADD_LONG_PROP(ADEF_BounceFactor,x)
|
|
|
|
#define PROP_SpawnState(x) ADD_BYTE_PROP(ADEF_SpawnState,x)
|
|
#define PROP_SeeState(x) ADD_BYTE_PROP(ADEF_SeeState,x)
|
|
#define PROP_PainState(x) ADD_BYTE_PROP(ADEF_PainState,x)
|
|
#define PROP_MeleeState(x) ADD_BYTE_PROP(ADEF_MeleeState,x)
|
|
#define PROP_MissileState(x) ADD_BYTE_PROP(ADEF_MissileState,x)
|
|
#define PROP_CrashState(x) ADD_BYTE_PROP(ADEF_CrashState,x)
|
|
#define PROP_DeathState(x) ADD_BYTE_PROP(ADEF_DeathState,x)
|
|
#define PROP_XDeathState(x) ADD_BYTE_PROP(ADEF_XDeathState,x)
|
|
#define PROP_BDeathState(x) ADD_BYTE_PROP(ADEF_BDeathState,x)
|
|
#define PROP_IDeathState(x) ADD_BYTE_PROP(ADEF_IDeathState,x)
|
|
#define PROP_EDeathState(x) ADD_BYTE_PROP(ADEF_EDeathState,x)
|
|
#define PROP_RaiseState(x) ADD_BYTE_PROP(ADEF_RaiseState,x)
|
|
#define PROP_WoundState(x) ADD_BYTE_PROP(ADEF_WoundState,x)
|
|
#define PROP_YesState(x) ADD_BYTE_PROP(ADEF_YesState,x)
|
|
#define PROP_NoState(x) ADD_BYTE_PROP(ADEF_NoState,x)
|
|
#define PROP_GreetingsState(x) ADD_BYTE_PROP(ADEF_GreetingsState,x)
|
|
|
|
#define PROP_StrifeType(x) ADD_WORD_PROP(ADEF_StrifeType,x)
|
|
#define PROP_StrifeTeaserType(x) ADD_WORD_PROP(ADEF_StrifeTeaserType,x)
|
|
#define PROP_StrifeTeaserType2(x) ADD_WORD_PROP(ADEF_StrifeTeaserType2,x)
|
|
|
|
#define PROP_Inventory_Amount(x) ADD_BYTE_PROP(ADEF_Inventory_Amount,x)
|
|
#define PROP_Inventory_AmountWord(x) ADD_WORD_PROP(ADEF_Inventory_Amount,x)
|
|
#define PROP_Inventory_MaxAmount(x) ADD_WORD_PROP(ADEF_Inventory_MaxAmount,x)
|
|
#define PROP_Inventory_MaxAmountLong(x) ADD_LONG_PROP(ADEF_Inventory_MaxAmount,x)
|
|
#define PROP_Inventory_DefMaxAmount ADD_BYTE_PROP(ADEF_Inventory_DefMaxAmount,0)
|
|
#define PROP_Inventory_RespawnTics(x) ADD_WORD_PROP(ADEF_Inventory_RespawnTics,x)
|
|
#define PROP_Inventory_FlagsSet(x) ADD_LONG_PROP(ADEF_Inventory_FlagsSet,x)
|
|
#define PROP_Inventory_FlagsClear(x) ADD_LONG_PROP(ADEF_Inventory_FlagsClear,x)
|
|
|
|
#define PROP_PuzzleItem_Number(x) ADD_BYTE_PROP(ADEF_PuzzleItem_Number,x)
|
|
|
|
#define PROP_BasicArmorPickup_SavePercent(x) ADD_LONG_PROP(ADEF_BasicArmorPickup_SavePercent,x)
|
|
#define PROP_BasicArmorPickup_SaveAmount(x) ADD_BYTE_PROP(ADEF_BasicArmorPickup_SaveAmount,x)
|
|
#define PROP_BasicArmorBonus_SavePercent(x) ADD_LONG_PROP(ADEF_BasicArmorBonus_SavePercent,x)
|
|
#define PROP_BasicArmorBonus_SaveAmount(x) ADD_BYTE_PROP(ADEF_BasicArmorBonus_SaveAmount,x)
|
|
#define PROP_BasicArmorBonus_MaxSaveAmount(x) ADD_BYTE_PROP(ADEF_BasicArmorBonus_MaxSaveAmount,x)
|
|
#define PROP_HexenArmor_ArmorAmount(x) ADD_BYTE_PROP(ADEF_HexenArmor_ArmorAmount,x)
|
|
|
|
#define PROP_PowerupGiver_EffectTics(x) ADD_LONG_PROP(ADEF_PowerupGiver_EffectTics,x)
|
|
#define PROP_Powerup_EffectTics(x) ADD_LONG_PROP(ADEF_Powerup_EffectTics,x)
|
|
#define PROP_Powerup_Color(a,r,g,b) ADD_LONG_PROP(ADEF_Powerup_Color,((a)<<24)|((r)<<16)|((g)<<8)|(b))
|
|
|
|
#define PROP_Ammo_BackpackAmount(x) ADD_WORD_PROP(ADEF_Ammo_BackpackAmount,x)
|
|
#define PROP_Ammo_BackpackMaxAmount(x) ADD_WORD_PROP(ADEF_Ammo_BackpackMaxAmount,x)
|
|
|
|
#define PROP_Weapon_Flags(x) ADD_LONG_PROP(ADEF_Weapon_Flags,x)
|
|
#define PROP_Weapon_FlagsSet(x) ADD_LONG_PROP(ADEF_Weapon_FlagsSet,x)
|
|
#define PROP_Weapon_AmmoGive1(x) ADD_BYTE_PROP(ADEF_Weapon_AmmoGive1,x)
|
|
#define PROP_Weapon_AmmoGive2(x) ADD_BYTE_PROP(ADEF_Weapon_AmmoGive2,x)
|
|
#define PROP_Weapon_AmmoUse1(x) ADD_BYTE_PROP(ADEF_Weapon_AmmoUse1,x)
|
|
#define PROP_Weapon_AmmoUse2(x) ADD_BYTE_PROP(ADEF_Weapon_AmmoUse2,x)
|
|
#define PROP_Weapon_Kickback(x) ADD_BYTE_PROP(ADEF_Weapon_Kickback,x)
|
|
#define PROP_Weapon_YAdjust(x) ADD_FIXD_PROP(ADEF_Weapon_YAdjust,x)
|
|
#define PROP_Weapon_SelectionOrder(x) ADD_WORD_PROP(ADEF_Weapon_SelectionOrder,x)
|
|
#define PROP_Weapon_MoveCombatDist(x) ADD_LONG_PROP(ADEF_Weapon_MoveCombatDist,x)
|
|
#define PROP_Weapon_UpState(x) ADD_BYTE_PROP(ADEF_Weapon_UpState,x)
|
|
#define PROP_Weapon_DownState(x) ADD_BYTE_PROP(ADEF_Weapon_DownState,x)
|
|
#define PROP_Weapon_ReadyState(x) ADD_BYTE_PROP(ADEF_Weapon_ReadyState,x)
|
|
#define PROP_Weapon_AtkState(x) ADD_BYTE_PROP(ADEF_Weapon_AtkState,x)
|
|
#define PROP_Weapon_HoldAtkState(x) ADD_BYTE_PROP(ADEF_Weapon_HoldAtkState,x)
|
|
#define PROP_Weapon_AltAtkState(x) ADD_BYTE_PROP(ADEF_Weapon_AltAtkState,x)
|
|
#define PROP_Weapon_AltHoldAtkState(x) ADD_BYTE_PROP(ADEF_Weapon_AltHoldAtkState,x)
|
|
#define PROP_Weapon_FlashState(x) ADD_BYTE_PROP(ADEF_Weapon_FlashState,x)
|
|
#define PROP_Sigil_NumPieces(x) ADD_BYTE_PROP(ADEF_Sigil_NumPieces,x)
|
|
|
|
#endif //__INFOMACROS_H__
|