From c533c0bd29988a06e4f0a9cb21a79b8a134bfb9e Mon Sep 17 00:00:00 2001 From: "James D. Callahan III" Date: Thu, 1 Apr 2010 05:48:34 -0400 Subject: [PATCH] Re-wrote addon:AddRecipeFlags() for the new flag system. --- ARL.lua | 34 +++++++++++++++++++++++++--------- 1 file changed, 25 insertions(+), 9 deletions(-) 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 -- 1.7.9.5