X-Git-Url: http://de.git.xonotic.org/?a=blobdiff_plain;f=qcsrc%2Fcommon%2Fitems%2Fitem%2Fpickup.qh;h=136c8dab6dbf73c633ab35b548134611e6c9b7a3;hb=641c47df604de42c11c68a7d80813b29affcefb2;hp=7e814e0b75c5273f76612df674279e7e7b6a5c3f;hpb=b800544899fb0c516022ab01b21b94ef6db84ab1;p=xonotic%2Fxonotic-data.pk3dir.git diff --git a/qcsrc/common/items/item/pickup.qh b/qcsrc/common/items/item/pickup.qh index 7e814e0b7..136c8dab6 100644 --- a/qcsrc/common/items/item/pickup.qh +++ b/qcsrc/common/items/item/pickup.qh @@ -1,49 +1,40 @@ -#ifndef PICKUP_H -#define PICKUP_H -#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) - 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 - -#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 +#pragma once -#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 +#include +#include +CLASS(Pickup, GameItem) +#ifndef MENUQC + ATTRIB(Pickup, m_model, Model); + ATTRIB(Pickup, m_sound, Sound, SND_ITEMPICKUP); #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_name, string); + METHOD(Pickup, show, void(Pickup this)) + { + TC(Pickup, this); + LOG_INFOF("%s: %s\n", etos(this), this.m_name); } -} - +#ifdef SVQC + 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()); + ATTRIB(Pickup, m_respawntimejitter, float()); + float Item_GiveTo(entity item, entity player); + METHOD(Pickup, giveTo, bool(Pickup this, entity item, entity player)) + { + TC(Pickup, this); + bool b = Item_GiveTo(item, player); + if (b) { + LOG_DEBUGF("entity %i picked up %s", 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)