]> de.git.xonotic.org Git - xonotic/xonotic-data.pk3dir.git/blobdiff - qcsrc/client/resources.qc
Merge branch 'terencehill/cl_forceplayercolors_3' into 'master'
[xonotic/xonotic-data.pk3dir.git] / qcsrc / client / resources.qc
index 3685e9ac81ae984ebd94035577161427dfe1449c..88a1fffc931c2cb23ebe36c9ff00432d189c054b 100644 (file)
@@ -5,72 +5,79 @@
 /// \brief Source file that contains implementation of the resource system.
 /// \copyright GNU GPLv2 or any later version.
 
-float GetResourceAmount(entity e, int resource_type)
+float GetResource(entity e, int res_type)
 {
-       .float resource_field = GetResourceField(resource_type);
-       return e.(resource_field);
+       return e.(GetResourceField(res_type));
 }
 
-void SetResourceAmount(entity e, int resource_type, float amount)
+bool SetResourceExplicit(entity e, int res_type, float amount)
 {
-       .float resource_field = GetResourceField(resource_type);
-       e.(resource_field) = amount;
+       .float res_field = GetResourceField(res_type);
+       if (e.(res_field) != amount)
+       {
+               e.(res_field) = amount;
+               return true;
+       }
+       return false;
+}
+
+void SetResource(entity e, int res_type, float amount)
+{
+       SetResourceExplicit(e, res_type, amount);
 }
 
-void TakeResource(entity receiver, int resource_type, float amount)
+void TakeResource(entity receiver, int res_type, float amount)
 {
        if (amount == 0)
        {
                return;
        }
-       SetResourceAmount(receiver, resource_type,
-               GetResourceAmount(receiver, resource_type) - amount);
+       SetResource(receiver, res_type, GetResource(receiver, res_type) - amount);
 }
 
-void TakeResourceWithLimit(entity receiver, int resource_type, float amount,
-       float limit)
+void TakeResourceWithLimit(entity receiver, int res_type, float amount, float limit)
 {
        if (amount == 0)
        {
                return;
        }
-       float current_amount = GetResourceAmount(receiver, resource_type);
+       float current_amount = GetResource(receiver, res_type);
        if (current_amount - amount < limit)
        {
                amount = limit + current_amount;
        }
-       TakeResource(receiver, resource_type, amount);
+       TakeResource(receiver, res_type, amount);
 }
 
-int GetResourceType(.float resource_field)
+int GetResourceType(.float res_field)
 {
-       switch (resource_field)
+       switch (res_field)
        {
-               case health: { return RESOURCE_HEALTH; }
-               case armorvalue: { return RESOURCE_ARMOR; }
-               case ammo_shells: { return RESOURCE_SHELLS; }
-               case ammo_nails: { return RESOURCE_BULLETS; }
-               case ammo_rockets: { return RESOURCE_ROCKETS; }
-               case ammo_cells: { return RESOURCE_CELLS; }
-               case ammo_plasma: { return RESOURCE_PLASMA; }
-               case ammo_fuel: { return RESOURCE_FUEL; }
+               case health: { return RES_HEALTH; }
+               case armorvalue: { return RES_ARMOR; }
+               case ammo_shells: { return RES_SHELLS; }
+               case ammo_nails: { return RES_BULLETS; }
+               case ammo_rockets: { return RES_ROCKETS; }
+               case ammo_cells: { return RES_CELLS; }
+               case ammo_plasma: { return RES_PLASMA; }
+               case ammo_fuel: { return RES_FUEL; }
        }
        error("GetResourceType: Invalid field.");
        return 0;
 }
 
-.float GetResourceField(int resource_type)
+.float GetResourceField(int res_type)
 {
-       switch (resource_type)
+       switch (res_type)
        {
-               case RESOURCE_HEALTH: { return health; }
-               case RESOURCE_ARMOR: { return armorvalue; }
-               case RESOURCE_SHELLS: { return ammo_shells; }
-               case RESOURCE_BULLETS: { return ammo_nails; }
-               case RESOURCE_ROCKETS: { return ammo_rockets; }
-               case RESOURCE_CELLS: { return ammo_cells; }
-               case RESOURCE_PLASMA: { return ammo_plasma; }
-               case RESOURCE_FUEL: { return ammo_fuel; }
+               case RES_HEALTH: { return health; }
+               case RES_ARMOR: { return armorvalue; }
+               case RES_SHELLS: { return ammo_shells; }
+               case RES_BULLETS: { return ammo_nails; }
+               case RES_ROCKETS: { return ammo_rockets; }
+               case RES_CELLS: { return ammo_cells; }
+               case RES_PLASMA: { return ammo_plasma; }
+               case RES_FUEL: { return ammo_fuel; }
        }
        error("GetResourceField: Invalid resource type.");
        return health;