* updated ufoai plugin
[xonotic/netradiant.git] / contrib / ufoai / ufoai_filters.cpp
index 3cce5893fe77b46dd9c011ef1451e254d5872158..ed155b8f7cd004a83469bd9cac4342238cbfdaee 100644 (file)
@@ -1,47 +1,48 @@
 
 #include "plugin.h"
+#include "ufoai_filters.h"
 #include "ifilters.h"
 
 #define FilterAdd g_FuncTable.m_pfnFilterAdd
-
-enum FILTERS {
-       FILTER_ACTORCLIP,
-       FILTER_WEAPONCLIP,
-       FILTER_NODRAW,
-       FILTER_STEPON,
-       FILTER_LEVEL1,
-       FILTER_LEVEL2,
-       FILTER_LEVEL3,
-       FILTER_LEVEL4,
-       FILTER_LEVEL5,
-       FILTER_LEVEL6,
-       FILTER_LEVEL7,
-       FILTER_LEVEL8,
-
-       FILTER_MAX
-};
+#define FiltersActivate g_FuncTable.m_pfnFiltersActivate
 
 static bfilter_t* filters[FILTER_MAX];
 
 void UFOAIFilterInit (void)
 {
-       filters[FILTER_LEVEL1] = FilterAdd(1, 0, "level1", (0x10 << 0));
-       filters[FILTER_LEVEL2] = FilterAdd(1, 0, "level2", (0x10 << 1));
-       filters[FILTER_LEVEL3] = FilterAdd(1, 0, "level3", (0x10 << 2));
-       filters[FILTER_LEVEL4] = FilterAdd(1, 0, "level4", (0x10 << 3));
-       filters[FILTER_LEVEL5] = FilterAdd(1, 0, "level5", (0x10 << 4));
-       filters[FILTER_LEVEL6] = FilterAdd(1, 0, "level6", (0x10 << 5));
-       filters[FILTER_LEVEL7] = FilterAdd(1, 0, "level7", (0x10 << 6));
-       filters[FILTER_LEVEL8] = FilterAdd(1, 0, "level8", (0x10 << 7));
+       filters[FILTER_ACTORCLIP] = FilterAdd(2, 0, "actorclip", UFOAI_CONTENTS_ACTORCLIP);
+       filters[FILTER_WEAPONCLIP] = FilterAdd(2, 0, "weaponclip", UFOAI_CONTENTS_WEAPONCLIP);
+       filters[FILTER_NODRAW] = FilterAdd(2, 0, "nodraw", UFOAI_SURF_NODRAW);
+       filters[FILTER_STEPON] = FilterAdd(2, 0, "stepon", UFOAI_CONTENTS_STEPON);
+
+       filters[FILTER_LEVEL1] = FilterAdd(2, 0, "level1", UFOAI_CONTENTS_LEVEL_1);
+       filters[FILTER_LEVEL2] = FilterAdd(2, 0, "level2", UFOAI_CONTENTS_LEVEL_2);
+       filters[FILTER_LEVEL3] = FilterAdd(2, 0, "level3", UFOAI_CONTENTS_LEVEL_3);
+       filters[FILTER_LEVEL4] = FilterAdd(2, 0, "level4", UFOAI_CONTENTS_LEVEL_4);
+       filters[FILTER_LEVEL5] = FilterAdd(2, 0, "level5", UFOAI_CONTENTS_LEVEL_5);
+       filters[FILTER_LEVEL6] = FilterAdd(2, 0, "level6", UFOAI_CONTENTS_LEVEL_6);
+       filters[FILTER_LEVEL7] = FilterAdd(2, 0, "level7", UFOAI_CONTENTS_LEVEL_7);
+       filters[FILTER_LEVEL8] = FilterAdd(2, 0, "level8", UFOAI_CONTENTS_LEVEL_8);
+
+       Sys_Printf("UFO:AI Filters initialized\n");
 }
 
 void PerformFiltering (int type)
 {
-       switch (type) {
-       default:
-               Sys_Printf("TODO: Implement filters");
-               break;
+       if (!filters[type]) {
+               Sys_Printf("filters are not yet initialized\n");
+               return;
+       }
+
+       if (filters[type]->active) {
+               filters[type]->active = false;
+               Sys_Printf("filter %i deactivated\n", type);
+       } else {
+               filters[type]->active = true;
+               Sys_Printf("filter %i activated\n", type);
        }
+
+       FiltersActivate();
 }
 
 void DoSteponFiltering(void)