]> de.git.xonotic.org Git - xonotic/xonotic-data.pk3dir.git/commitdiff
work around a fteqcc bug; fteqcc currently does not support "var functiontype array[N]"
authorRudolf Polzer <divVerent@xonotic.org>
Wed, 23 Feb 2011 19:57:40 +0000 (20:57 +0100)
committerRudolf Polzer <divVerent@xonotic.org>
Wed, 23 Feb 2011 19:57:40 +0000 (20:57 +0100)
qcsrc/server/mutators/base.qc
qcsrc/server/mutators/base.qh

index 6f42ff8e908514443eaaefa83fdf8a7ebcba09b1..6978496802d1d61585b46ea45bb3d937e32db1f8 100644 (file)
@@ -88,16 +88,16 @@ float CallbackChain_Call(entity cb)
 }
 
 #define MAX_MUTATORS 8
-var mutatorfunc_t mutators[MAX_MUTATORS];
-float Mutator_Add(mutatorfunc_t func)
+string loaded_mutators[MAX_MUTATORS];
+float Mutator_Add(mutatorfunc_t func, string name)
 {
        float i, j;
        j = -1;
        for(i = 0; i < MAX_MUTATORS; ++i)
        {
-               if(func == mutators[i])
+               if(name == loaded_mutators[i])
                        return 1; // already added
-               if(func == func_null)
+               if(!loaded_mutators[i])
                        j = i;
        }
        if(j < 0)
@@ -105,7 +105,7 @@ float Mutator_Add(mutatorfunc_t func)
                backtrace("WARNING: too many mutators, cannot add any more\n");
                return 0;
        }
-       mutators[j] = func;
+       loaded_mutators[j] = name;
 
        if(func(MUTATOR_ADDING) == 0)
        {
@@ -113,21 +113,21 @@ float Mutator_Add(mutatorfunc_t func)
                return 1;
        }
        backtrace("WARNING: when adding mutator: adding failed\n");
-       Mutator_Remove(func);
+       Mutator_Remove(func, name);
        return 0;
 }
-void Mutator_Remove(float(float) func)
+void Mutator_Remove(float(float) func, string name)
 {
        float i;
        for(i = 0; i < MAX_MUTATORS; ++i)
-               if(func == mutators[i])
+               if(name == loaded_mutators[i])
                        break;
        if(i >= MAX_MUTATORS)
        {
                backtrace("WARNING: removing not-added mutator\n");
                return;
        }
-       mutators[i] = func_null;
+       loaded_mutators[i] = string_null;
 
        if(func(MUTATOR_REMOVING) != 0)
        {
index f150d1ea995597f80afdb1c2c248210e2d47bf37..05a5187e508709528c16cee43e7938027fb64d5b 100644 (file)
@@ -17,11 +17,11 @@ float CallbackChain_Call(entity cb);
 #define MUTATOR_REMOVING 0
 #define MUTATOR_ADDING 1
 typedef float(float) mutatorfunc_t;
-float Mutator_Add(mutatorfunc_t func);
-void Mutator_Remove(mutatorfunc_t func); // calls error() on fail
+float Mutator_Add(mutatorfunc_t func, string name);
+void Mutator_Remove(mutatorfunc_t func, string name); // calls error() on fail
 
-#define MUTATOR_ADD(name) Mutator_Add(MUTATOR_##name)
-#define MUTATOR_REMOVE(name) Mutator_Remove(MUTATOR_##name)
+#define MUTATOR_ADD(name) Mutator_Add(MUTATOR_##name, #name)
+#define MUTATOR_REMOVE(name) Mutator_Remove(MUTATOR_##name, #name)
 #define MUTATOR_DEFINITION(name) float MUTATOR_##name(float mode)
 #define MUTATOR_DECLARATION(name) float MUTATOR_##name(float mode)
 #define MUTATOR_HOOKFUNCTION(name) float HOOKFUNCTION_##name()