1 #include "resources.qh"
4 /// \brief Source file that contains implementation of the resource system.
5 /// \copyright GNU GPLv2 or any later version.
7 float GetResourceAmount(entity e, int resource_type)
9 .float resource_field = GetResourceField(resource_type);
10 return e.(resource_field);
13 bool SetResourceAmountExplicit(entity e, int resource_type, float amount)
15 .float resource_field = GetResourceField(resource_type);
16 if (e.(resource_field) != amount)
18 e.(resource_field) = amount;
24 void SetResourceAmount(entity e, int resource_type, float amount)
26 SetResourceAmountExplicit(e, resource_type, amount);
29 int GetResourceType(.float resource_field)
31 switch (resource_field)
33 case health: { return RESOURCE_HEALTH; }
34 case armorvalue: { return RESOURCE_ARMOR; }
35 case ammo_shells: { return RESOURCE_SHELLS; }
36 case ammo_nails: { return RESOURCE_BULLETS; }
37 case ammo_rockets: { return RESOURCE_ROCKETS; }
38 case ammo_cells: { return RESOURCE_CELLS; }
39 case ammo_plasma: { return RESOURCE_PLASMA; }
40 case ammo_fuel: { return RESOURCE_FUEL; }
42 error("GetResourceType: Invalid field.");
46 .float GetResourceField(int resource_type)
48 switch (resource_type)
50 case RESOURCE_HEALTH: { return health; }
51 case RESOURCE_ARMOR: { return armorvalue; }
52 case RESOURCE_SHELLS: { return ammo_shells; }
53 case RESOURCE_BULLETS: { return ammo_nails; }
54 case RESOURCE_ROCKETS: { return ammo_rockets; }
55 case RESOURCE_CELLS: { return ammo_cells; }
56 case RESOURCE_PLASMA: { return ammo_plasma; }
57 case RESOURCE_FUEL: { return ammo_fuel; }
59 error("GetResourceField: Invalid resource type.");