]> de.git.xonotic.org Git - xonotic/xonotic-data.pk3dir.git/blobdiff - qcsrc/common/weapons/all.qc
Migrating resources (ammo, health etc) to a registry for ease of maintenance and...
[xonotic/xonotic-data.pk3dir.git] / qcsrc / common / weapons / all.qc
index 7c089ba70c096514f3af93df29aecd695b88ecde..e1efeb02e933c4559f5455d8e1691fd1a42f7ecc 100644 (file)
@@ -3,54 +3,50 @@
 #define WEAPONS_ALL_C
 
 #if defined(CSQC)
-       #include "../constants.qh"
-       #include "../stats.qh"
-       #include <lib/warpzone/anglestransform.qh>
-       #include <lib/warpzone/common.qh>
-       #include <lib/warpzone/client.qh>
-       #include "../util.qh"
-       #include <client/autocvars.qh>
-       #include "../deathtypes/all.qh"
-       #include <lib/csqcmodel/interpolate.qh>
-       #include "../physics/movetypes/movetypes.qh"
        #include <client/main.qh>
+       #include <common/constants.qh>
+       #include <common/deathtypes/all.qh>
+       #include <common/physics/movetypes/movetypes.qh>
+       #include <common/stats.qh>
+       #include <common/util.qh>
+       #include <common/weapons/calculations.qc>
+       #include <common/weapons/weapon/_mod.inc>
        #include <lib/csqcmodel/cl_model.qh>
+       #include <lib/csqcmodel/interpolate.qh>
+       #include <lib/warpzone/anglestransform.qh>
+       #include <lib/warpzone/client.qh>
+       #include <lib/warpzone/common.qh>
 #elif defined(MENUQC)
+       #include <common/weapons/weapon/_mod.inc>
 #elif defined(SVQC)
+       #include <common/constants.qh>
+       #include <common/deathtypes/all.qh>
        #include <common/items/_mod.qh>
+       #include <common/mapinfo.qh>
+       #include <common/monsters/_mod.qh>
+       #include <common/notifications/all.qh>
+       #include <common/stats.qh>
+       #include <common/teams.qh>
+       #include <common/util.qh>
+       #include <common/weapons/calculations.qc>
+       #include <common/weapons/config.qc>
+       #include <common/weapons/config.qh>
+       #include <common/weapons/weapon/_mod.inc>
+       #include <lib/csqcmodel/sv_model.qh>
        #include <lib/warpzone/anglestransform.qh>
        #include <lib/warpzone/common.qh>
-       #include <lib/warpzone/util_server.qh>
        #include <lib/warpzone/server.qh>
-       #include "../constants.qh"
-       #include "../stats.qh"
-       #include "../teams.qh"
-       #include <common/util.qh>
-       #include "../monsters/_mod.qh"
-       #include "config.qh"
-       #include <server/weapons/common.qh>
-       #include <server/weapons/csqcprojectile.qh>
-       #include <server/weapons/tracing.qh>
+       #include <lib/warpzone/util_server.qh>
+       #include <server/command/_mod.qh>
+       #include <server/hook.qh>
        #include <server/items/spawning.qh>
-       #include <server/autocvars.qh>
-       #include "../notifications/all.qh"
-       #include "../deathtypes/all.qh"
        #include <server/mutators/_mod.qh>
-       #include "../mapinfo.qh"
-       #include <server/command/_mod.qh>
-       #include <lib/csqcmodel/sv_model.qh>
        #include <server/portals.qh>
-#include <server/hook.qh>
-#endif
-#ifdef GAMEQC
-       #include "calculations.qc"
-#endif
-#ifdef SVQC
-       #include "config.qc"
+       #include <server/weapons/common.qh>
+       #include <server/weapons/csqcprojectile.qh>
+       #include <server/weapons/tracing.qh>
 #endif
 
-#include "weapon/_mod.inc"
-
 
 // WEAPON PLUGIN SYSTEM
 
@@ -65,11 +61,11 @@ WepSet _WepSet_FromWeapon(int a)
                                if (a >= 24)
                                {
                                        a -= 24;
-                                       return '0 0 1' * (2 ** a);
+                                       return '0 0 1' * BIT(a);
                                }
-                       return '0 1 0' * (2 ** a);
+                       return '0 1 0' * BIT(a);
                }
-       return '1 0 0' * (2 ** a);
+       return '1 0 0' * BIT(a);
 }
 #ifdef SVQC
        void WriteWepSet(float dst, WepSet w)
@@ -206,7 +202,8 @@ WepSet W_RandomWeapons(entity e, WepSet remaining, int n)
        return result;
 }
 
-string GetAmmoPicture(int ammotype)
+// TODO: registry handles for below functions
+string GetAmmoPicture(Resource ammotype)
 {
        switch (ammotype)
        {
@@ -220,7 +217,7 @@ string GetAmmoPicture(int ammotype)
        }
 }
 
-string GetAmmoName(int ammotype)
+string GetAmmoName(Resource ammotype)
 {
        switch (ammotype)
        {
@@ -234,8 +231,25 @@ string GetAmmoName(int ammotype)
        }
 }
 
+entity GetAmmoItem(Resource ammotype)
+{
+       switch (ammotype)
+       {
+               case RES_SHELLS:  return ITEM_Shells;
+               case RES_BULLETS: return ITEM_Bullets;
+               case RES_ROCKETS: return ITEM_Rockets;
+               case RES_CELLS:   return ITEM_Cells;
+               case RES_PLASMA:  return ITEM_Plasma;
+               case RES_FUEL:    return ITEM_JetpackFuel;
+       }
+       LOG_WARNF("Invalid ammo type %d ", ammotype.m_id);
+       return NULL;
+       // WEAPONTODO: use this generic func to reduce duplication ?
+       // GetAmmoPicture  GetAmmoName  notif_arg_item_wepammo  ammo_pickupevalfunc ?
+}
+
 #ifdef CSQC
-int GetAmmoTypeFromNum(int i)
+Resource GetAmmoTypeFromNum(int i)
 {
        switch (i)
        {
@@ -249,7 +263,7 @@ int GetAmmoTypeFromNum(int i)
        }
 }
 
-int GetAmmoStat(int ammotype)
+int GetAmmoStat(Resource ammotype)
 {
        switch (ammotype)
        {
@@ -658,8 +672,8 @@ CLIENT_COMMAND(weapon_find, "Show spawn locations of a weapon")
                        LOG_INFOF("Incorrect parameters for ^2%s^7", argv(0));
                case CMD_REQUEST_USAGE:
                {
-                       LOG_HELP("Usage:^3 cl_cmd weapon_find weapon");
-                       LOG_HELP("  Where 'weapon' is the lowercase weapon name, 'all' or 'unowned'.");
+                       LOG_HELP("Usage:^3 cl_cmd weapon_find <weapon>");
+                       LOG_HELP("  Where <weapon> is the lowercase weapon name, 'all' or 'unowned'.");
                        return;
                }
        }