]> de.git.xonotic.org Git - xonotic/xonotic-data.pk3dir.git/blobdiff - qcsrc/common/items/item/pickup.qh
Merge branch 'Mario/balance_v2' into 'master'
[xonotic/xonotic-data.pk3dir.git] / qcsrc / common / items / item / pickup.qh
index 7e814e0b75c5273f76612df674279e7e7b6a5c3f..dbc74a0625621bee288da55c946ebbfaf6ab4704 100644 (file)
@@ -1,49 +1,37 @@
 #ifndef PICKUP_H
 #define PICKUP_H
+#include "../inventory.qh"
 #include "../item.qh"
 CLASS(Pickup, GameItem)
-    METHOD(Pickup, respondTo, bool(entity, int))
-    ATTRIB(Pickup, m_model, string, string_null)
-    ATTRIB(Pickup, m_sound, string, string_null)
-    ATTRIB(Pickup, m_respawntime, int, 0)
-    ATTRIB(Pickup, m_respawntimejitter, int, 0)
+#ifndef MENUQC
+    ATTRIB(Pickup, m_model, Model, NULL)
+    ATTRIB(Pickup, m_sound, Sound, SND_ITEMPICKUP)
+#endif
     ATTRIB(Pickup, m_name, string, string_null)
-    ATTRIB(Pickup, m_itemid, int, 0)
-    ATTRIB(Pickup, m_botvalue, int, 0)
-ENDCLASS(Pickup)
-
-#define SPAWNTIMES(_) \
-    _(WEAPON, weapon) \
-    _(AMMO, ammo) \
-    _(SHORT, short) \
-    _(MEDIUM, medium) \
-    _(LONG, long) \
-    /**/
-
-#define SPAWNTIMES_ENUM(id, idlc) SPAWNTIME_##id ,
-enum { SPAWNTIMES(SPAWNTIMES_ENUM) };
-#undef SPAWNTIMES_ENUM
-
+    METHOD(Pickup, show, void(Pickup this)) { LOG_INFOF("%s: %s\n", etos(this), this.m_name); }
 #ifdef SVQC
-#include "../../../server/defs.qh"
-
-#define SPAWNTIMES_MAP(id, idlc) i == SPAWNTIME_##id ? g_pickup_respawntime_##idlc :
-[[inline]] int spawntime(int i) { return SPAWNTIMES(SPAWNTIMES_MAP) 0; }
-#undef SPAWNTIMES_MAP
-
-#define SPAWNTIMES_MAP(id, idlc) i == SPAWNTIME_##id ? g_pickup_respawntimejitter_##idlc :
-[[inline]] int spawntimejitter(int i) { return SPAWNTIMES(SPAWNTIMES_MAP) 0; }
-#undef SPAWNTIMES_MAP
-#endif
-
-bool Pickup_respondTo(entity this, int request)
-{
-    switch (request) {
-        default: return false;
-        case ITEM_SIGNAL(Default):
-            print(strcat(this.m_name, " responding\n"));
-            return true;
+    ATTRIB(Pickup, m_mins, vector, '-16 -16 0')
+    ATTRIB(Pickup, m_maxs, vector, '16 16 32')
+    ATTRIB(Pickup, m_botvalue, int, 0)
+    ATTRIB(Pickup, m_itemflags, int, 0)
+    ATTRIB(Pickup, m_itemid, int, 0)
+    float generic_pickupevalfunc(entity player, entity item);
+    ATTRIB(Pickup, m_pickupevalfunc, float(entity player, entity item), generic_pickupevalfunc)
+    ATTRIB(Pickup, m_respawntime, float(), func_null)
+    ATTRIB(Pickup, m_respawntimejitter, float(), func_null)
+    float Item_GiveTo(entity item, entity player);
+    METHOD(Pickup, giveTo, bool(Pickup this, entity item, entity player))
+    {
+        bool b = Item_GiveTo(item, player);
+        if (b) {
+            LOG_TRACEF("entity %i picked up %s\n", player, this.m_name);
+            player.inventory.inv_items[this.m_id]++;
+            Inventory_update(player);
+        }
+        return b;
     }
-}
+    bool ITEM_HANDLE(Pickup, Pickup this, entity item, entity player);
+#endif
+ENDCLASS(Pickup)
 
 #endif