X-Git-Url: https://de.git.xonotic.org/?p=xonotic%2Fxonotic-data.pk3dir.git;a=blobdiff_plain;f=qcsrc%2Fcommon%2Fweapons%2Fall.qh;h=47568b31a072fc94127d679fc6219aa910e1c88d;hp=6ba62eb2f42afd3127adaea103c39b3b21239cb2;hb=201f6309c92217b63dc34daf004fbb7424096eca;hpb=349aeb508e5a3d577df60bef8a552da2db7d928d diff --git a/qcsrc/common/weapons/all.qh b/qcsrc/common/weapons/all.qh index 6ba62eb2f4..47568b31a0 100644 --- a/qcsrc/common/weapons/all.qh +++ b/qcsrc/common/weapons/all.qh @@ -2,15 +2,12 @@ #define WEAPONS_ALL_H #include "../command/all.qh" +#include "../stats.qh" #include "config.qh" // weapon sets typedef vector WepSet; -#define WEPSET(id) WepSet_FromWeapon(WEP_##id.m_id) -WepSet WepSet_FromWeapon(int a); #ifdef SVQC -void WepSet_AddStat(); -void WepSet_AddStat_InMap(); void WriteWepSet(float dest, WepSet w); #endif @@ -34,10 +31,19 @@ WepSet ReadWepSet(); #endif REGISTRY(Weapons, 72) // Increase as needed. Can be up to 72. -REGISTER_REGISTRY(RegisterWeapons) +#define Weapons_from(i) _Weapons_from(i, WEP_Null) +#define get_weaponinfo(i) Weapons_from(i) +REGISTER_REGISTRY(Weapons) STATIC_INIT(WeaponPickup) { FOREACH(Weapons, true, LAMBDA(it.m_pickup = NEW(WeaponPickup, it))); } -entity get_weaponinfo(int id); +.WepSet m_wepset; +#define WEPSET(id) (WEP_##id.m_wepset) +#define WepSet_FromWeapon(i) (Weapons_from(i).m_wepset) +WepSet _WepSet_FromWeapon(int i); +STATIC_INIT(WepSets) +{ + FOREACH(Weapons, true, LAMBDA(it.m_wepset = _WepSet_FromWeapon(it.m_id))); +} GENERIC_COMMAND(dumpweapons, "Dump all weapons into weapons_dump.txt") // WEAPONTODO: make this work with other progs than just server { @@ -94,7 +100,7 @@ GENERIC_COMMAND(dumpweapons, "Dump all weapons into weapons_dump.txt") // WEAPON #define REGISTER_WEAPON(id, inst) \ /* WepSet WEPSET_##id; */ \ - REGISTER(RegisterWeapons, WEP, Weapons, id, m_id, inst) + REGISTER(Weapons, WEP, id, m_id, inst) // create cvars for weapon settings #define WEP_ADD_CVAR_NONE(wepname,name) [[last]] float autocvar_g_balance_##wepname##_##name; @@ -131,29 +137,21 @@ REGISTER_WEAPON(Null, NEW(Weapon)); #include "all.inc" -entity get_weaponinfo(int id) -{ - if (id >= WEP_FIRST && id <= WEP_LAST) { - Weapon w = Weapons[id]; - if (w) return w; - } - return WEP_Null; -} - // TODO: remove after 0.8.2. Retains impulse number compatibility because 0.8.1 clients don't reload the weapons.cfg -#define WEP_HARDCODED_IMPULSES 22 +#define WEP_HARDCODED_IMPULSES 20 // TODO: invert after 0.8.2. Will require moving 'best weapon' impulses #define WEP_IMPULSE_BEGIN 230 #define WEP_IMPULSE_END bound(WEP_IMPULSE_BEGIN, WEP_IMPULSE_BEGIN + (Weapons_COUNT - 1) - 1, 253) -REGISTRY_SORT(Weapons, netname, WEP_HARDCODED_IMPULSES + 1) +REGISTRY_SORT(Weapons, WEP_HARDCODED_IMPULSES + 1) +REGISTRY_CHECK(Weapons) STATIC_INIT(register_weapons_done) { FOREACH(Weapons, true, LAMBDA( it.m_id = i; - WepSet set = WepSet_FromWeapon(it.m_id); + WepSet set = it.m_wepset; WEPSET_ALL |= set; if ((it.spawnflags) & WEP_FLAG_SUPERWEAPON) WEPSET_SUPERWEAPONS |= set; it.weapon = it.m_id; @@ -169,9 +167,46 @@ STATIC_INIT(register_weapons_done) #endif weaponorder_byid = ""; for (int i = Weapons_MAX - 1; i >= 1; --i) - if (Weapons[i]) + if (Weapons_from(i)) weaponorder_byid = strcat(weaponorder_byid, " ", ftos(i)); weaponorder_byid = strzone(substring(weaponorder_byid, 1, strlen(weaponorder_byid) - 1)); } +#ifndef MENUQC + +.entity weaponchild; +.entity exteriorweaponentity; +.vector weaponentity_glowmod; + +//.int weapon; // current weapon +#ifdef SVQC +.int switchweapon = _STAT(SWITCHWEAPON); +.int switchingweapon = _STAT(SWITCHINGWEAPON); +#endif +.string weaponname; // name of .weapon + +.vector spawnorigin; // for casings + +// weapon animation vectors: +.vector anim_fire1; +.vector anim_fire2; +.vector anim_idle; +.vector anim_reload; + +// static frame globals + +ENUMCLASS(WFRAME) +CASE(WFRAME, DONTCHANGE) +CASE(WFRAME, FIRE1) +CASE(WFRAME, FIRE2) +CASE(WFRAME, IDLE) +CASE(WFRAME, RELOAD) +ENUMCLASS_END(WFRAME) + +.WFRAME wframe; + +vector shotorg_adjust_values(vector vecs, bool y_is_right, bool visual, int algn); +void CL_WeaponEntity_SetModel(entity this, string name); +#endif + #endif