Quantcast

Re-wrote addon:AddRecipeFlags() for the new flag system.

James D. Callahan III [04-01-10 - 09:48]
Re-wrote addon:AddRecipeFlags() for the new flag system.
Filename
ARL.lua
diff --git a/ARL.lua b/ARL.lua
index c3372bb..bf3dc13 100644
--- a/ARL.lua
+++ b/ARL.lua
@@ -880,15 +880,31 @@ end
 -- @param ... A listing of filtering flags.  See [[API/database-documentation]] for a listing of filter flags
 -- @return None, array is passed as a reference.
 function addon:AddRecipeFlags(spell_id, ...)
-	-- flags are defined in Documentation.lua
-	local numvars = select('#',...)
-	local flags = private.recipe_list[spell_id]["Flags"]
-
-	-- Find out how many flags we're adding
-	for i = 1, numvars, 1 do
-		-- Get the value of the current flag
-		local flag = select(i, ...)
-		flags[flag] = true
+	local num_flags = select('#',...)
+	local recipe = private.recipe_list[spell_id]
+
+	for index = 1, num_flags, 1 do
+		local flag = select(index, ...)
+		local flag_name = private.filter_strings[flag]
+
+		local bitfield
+		local member_name
+
+		for table_index, bits in ipairs(private.bit_flags) do
+			if bits[flag_name] then
+				bitfield = bits
+				member_name = private.flag_members[table_index]
+			end
+		end
+
+		if not bitfield or not member_name then
+			return
+		end
+
+		if not recipe.flags[member_name] then
+			recipe.flags[member_name] = 0
+		end
+		recipe.flags[member_name] = bit.bxor(recipe.flags[member_name], bitfield[flag_name])
 	end
 end