X-Git-Url: http://de.git.xonotic.org/?p=xonotic%2Fxonotic-data.pk3dir.git;a=blobdiff_plain;f=qcsrc%2Fcommon%2Fitems%2Fitem%2Fpickup.qh;h=26771e68d09e2ef325bdf23cc8ec272ce275e51c;hp=1875517f137cba8eac0d5508354907416125a996;hb=d492869ab1f18e05121529b7bcffcb637d13994c;hpb=88713a575bd27dabc5926d636542b6145ab6f51c diff --git a/qcsrc/common/items/item/pickup.qh b/qcsrc/common/items/item/pickup.qh index 1875517f1..26771e68d 100644 --- a/qcsrc/common/items/item/pickup.qh +++ b/qcsrc/common/items/item/pickup.qh @@ -1,44 +1,60 @@ -#ifndef PICKUP_H -#define PICKUP_H -#include "../item.qh" -CLASS(Pickup, GameItem) - ATTRIB(Pickup, m_model, string, string_null) - ATTRIB(Pickup, m_sound, string, "misc/itempickup.wav") - ATTRIB(Pickup, m_name, string, string_null) - METHOD(Pickup, show, void(entity this)) - void Pickup_show(entity this) { printf("%s: %s\n", etos(this), this.m_name); } +#pragma once + #ifdef SVQC - ATTRIB(Pickup, m_botvalue, int, 0) - ATTRIB(Pickup, m_itemflags, int, 0) - ATTRIB(Pickup, m_itemid, int, 0) - 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) - METHOD(Pickup, giveTo, bool(entity this, entity item, entity player)) - bool Pickup_giveTo(entity this, entity item, entity player) { return Item_GiveTo(item, player); } - bool ITEM_HANDLE(Pickup, entity this, entity item, entity player); +PROPERTY(float, g_pickup_respawntime_weapon) +PROPERTY(float, g_pickup_respawntime_superweapon) +PROPERTY(float, g_pickup_respawntime_ammo) +PROPERTY(float, g_pickup_respawntime_short) +PROPERTY(float, g_pickup_respawntime_medium) +PROPERTY(float, g_pickup_respawntime_long) +PROPERTY(float, g_pickup_respawntime_powerup) +PROPERTY(float, g_pickup_respawntimejitter_weapon) +PROPERTY(float, g_pickup_respawntimejitter_superweapon) +PROPERTY(float, g_pickup_respawntimejitter_ammo) +PROPERTY(float, g_pickup_respawntimejitter_short) +PROPERTY(float, g_pickup_respawntimejitter_medium) +PROPERTY(float, g_pickup_respawntimejitter_long) +PROPERTY(float, g_pickup_respawntimejitter_powerup) #endif -ENDCLASS(Pickup) -#ifdef SVQC -// For g_pickup_respawntime -#include "../../../server/defs.qh" -// Getters to dynamically retrieve the values of g_pickup_respawntime* -GETTER(float, g_pickup_respawntime_weapon) -GETTER(float, g_pickup_respawntime_superweapon) -GETTER(float, g_pickup_respawntime_ammo) -GETTER(float, g_pickup_respawntime_short) -GETTER(float, g_pickup_respawntime_medium) -GETTER(float, g_pickup_respawntime_long) -GETTER(float, g_pickup_respawntime_powerup) -GETTER(float, g_pickup_respawntimejitter_weapon) -GETTER(float, g_pickup_respawntimejitter_superweapon) -GETTER(float, g_pickup_respawntimejitter_ammo) -GETTER(float, g_pickup_respawntimejitter_short) -GETTER(float, g_pickup_respawntimejitter_medium) -GETTER(float, g_pickup_respawntimejitter_long) -GETTER(float, g_pickup_respawntimejitter_powerup) +#include +#include +#include +CLASS(Pickup, GameItem) +#ifdef GAMEQC + ATTRIB(Pickup, m_model, Model); + ATTRIB(Pickup, m_sound, Sound, SND_ITEMPICKUP); #endif - + ATTRIB(Pickup, m_name, string); + METHOD(Pickup, show, void(Pickup this)) + { + TC(Pickup, this); + LOG_INFOF("%s: %s\n", etos(this), this.m_name); + } + ATTRIB(Pickup, m_itemid, int, 0); +#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); + 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()); + ATTRIB(Pickup, m_pickupanyway, 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)