]> de.git.xonotic.org Git - xonotic/xonotic-data.pk3dir.git/commitdiff
Merge branch 'master' into Mario/mutator_array_fix
authorMario <mario@smbclan.net>
Tue, 7 Mar 2017 19:16:25 +0000 (05:16 +1000)
committerMario <mario@smbclan.net>
Tue, 7 Mar 2017 19:16:25 +0000 (05:16 +1000)
qcsrc/common/mutators/base.qh

index ee5dc4ab12b7ec974a2de6a508e0ac6086713eb4..92e6323b3253e868bff39854337279af96dc4bac 100644 (file)
@@ -162,10 +162,10 @@ ENDCLASS(Mutator)
 
 REGISTRY(Mutators, BITS(7))
 #define Mutators_from(i) _Mutators_from(i, NULL)
-Mutator loaded_mutators[Mutators_MAX];
 bool Mutator_Add(Mutator mut);
 void Mutator_Remove(Mutator mut);
 bool mutator_log = false;
+.bool m_added;
 
 #ifdef GAMEQC
 /** server mutators activate corresponding client mutators for all clients */
@@ -211,18 +211,10 @@ NET_HANDLE(Mutator, bool isNew)
 
 bool Mutator_Add(Mutator mut)
 {
-    int j = -1;
-    for (int i = 0; i < Mutators_MAX; ++i) {
-        if (loaded_mutators[i] == mut)
-            return true; // already added
-        if (!(loaded_mutators[i]))
-            j = i;
-    }
-    if (j < 0) {
-        backtrace("WARNING: too many mutators, cannot add any more\n");
-        return false;
-    }
-    loaded_mutators[j] = mut;
+    if(mut.m_added)
+        return true; // already added
+
+    mut.m_added = true;
     mutatorfunc_t func = mut.mutatorfunc;
     if (!func(MUTATOR_ADDING)) {
         // good
@@ -242,15 +234,7 @@ bool Mutator_Add(Mutator mut)
 
 void Mutator_Remove(Mutator mut)
 {
-    int i;
-    for (i = 0; i < Mutators_MAX; ++i)
-        if (loaded_mutators[i] == mut)
-            break;
-    if (i >= Mutators_MAX) {
-        backtrace("WARNING: removing not-added mutator\n");
-        return;
-    }
-    loaded_mutators[i] = NULL;
+    mut.m_added = false;
     mutatorfunc_t func = mut.mutatorfunc;
     if (func(MUTATOR_REMOVING)) {
         // baaaaad