X-Git-Url: https://de.git.xonotic.org/?a=blobdiff_plain;f=qcsrc%2Fcommon%2Ft_items.qh;h=38598e098c126dc0e8b4c4f12af2c20fb77d9f6f;hb=9c765062f5aa52580c1896462d9593d70550c070;hp=20963fd269e562bc06c3d1316c30dbb1c123b197;hpb=d76e35463312f99268e71c65c1305f4a58b975f3;p=xonotic%2Fxonotic-data.pk3dir.git diff --git a/qcsrc/common/t_items.qh b/qcsrc/common/t_items.qh index 20963fd26..38598e098 100644 --- a/qcsrc/common/t_items.qh +++ b/qcsrc/common/t_items.qh @@ -1,5 +1,25 @@ #pragma once +#ifdef SVQC +#include +#endif + +/// \brief Unconditional maximum amount of resources the player can have. +const int RESOURCE_AMOUNT_HARD_LIMIT = 999; + +/// \brief Describes the available resource types. +enum +{ + RESOURCE_HEALTH, ///< Health. + RESOURCE_ARMOR, ///< Armor. + RESOURCE_SHELLS, ///< Shells (used by shotgun). + RESOURCE_BULLETS, ///< Bullets (used by machinegun and rifle) + RESOURCE_ROCKETS, ///< Rockets (used by mortar, hagar, devastator, etc). + RESOURCE_CELLS, ///< Cells (used by electro, crylink, vortex, etc) + RESOURCE_PLASMA, ///< Plasma (unused). + RESOURCE_FUEL ///< Fuel (used by jetpack). +}; + const int AMMO_COUNT = 4; // amount of ammo types to show in the inventory panel // item networking @@ -79,11 +99,56 @@ void Item_ScheduleRespawnIn(entity e, float t); void Item_ScheduleRespawn(entity e); void Item_ScheduleInitialRespawn(entity e); -float ITEM_MODE_NONE = 0; -float ITEM_MODE_HEALTH = 1; -float ITEM_MODE_ARMOR = 2; -float ITEM_MODE_FUEL = 3; -float Item_GiveAmmoTo(entity item, entity player, .float ammotype, float ammomax, float mode); + +/// \brief Converts resource entity property to resource type. +/// \param[in] resource_property Resource entity property to convert. +/// \return Resource type (a RESOURCE_* constant). +int GetResourceType(.float resource_property); + +/// \brief Converts resource type (a RESOURCE_* constant) to entity property. +/// \param[in] resource_type Type of the resource. +/// \return Entity proprty for that resource. +.float GetResourceProperty(int resource_type); + +/// \brief Returns the maximum amount of the given resource. +/// \param[in] resource_type Type of the resource (a RESOURCE_* constant). +/// \return Maximum amount of the given resource. +float GetResourceLimit(int resource_type); + +/// \brief Gives player a resource such as health, armor or ammo. +/// \param[in,out] player Player to give resource to. +/// \param[in] resource_type Type of the resource (a RESOURCE_* constant). +/// \param[in] amount Amount of resource to give. +/// \return No return. +void GivePlayerResource(entity player, int resource_type, float amount); + +/// \brief Gives player a resource such as health, armor or ammo. +/// \param[in,out] player Player to give resource to. +/// \param[in] resource_property Entity property of the resource. +/// \param[in] amount Amount of resource to give. +/// \return No return. +void GivePlayerResourceViaProperty(entity player, .float resource_property, + float amount); + +/// \brief Gives health to the player. +/// \param[in,out] player Player to give health to. +/// \param[in] amount Amount of health to give. +/// \return No return. +void GivePlayerHealth(entity player, float amount); + +/// \brief Gives armor to the player. +/// \param[in,out] player Player to give armor to. +/// \param[in] amount Amount of armor to give. +/// \return No return. +void GivePlayerArmor(entity player, float amount); + +/// \brief Gives fuel to the player. +/// \param[in,out] player Player to give fuel to. +/// \param[in] amount Amount of fuel to give. +/// \return No return. +void GivePlayerFuel(entity player, float amount); + +float Item_GiveAmmoTo(entity item, entity player, .float ammotype, float ammomax); float Item_GiveTo(entity item, entity player);