James D. Callahan III [03-24-10 - 03:38]
diff --git a/Frame.lua b/Frame.lua
index 7f4191e..6ce7fcf 100644
--- a/Frame.lua
+++ b/Frame.lua
@@ -2795,341 +2795,362 @@ do
return (not faction or faction == BFAC[Player.faction] or faction == FACTION_NEUTRAL)
end
- function MainPanel.scroll_frame:ExpandEntry(entry_index)
- local pad = " "
- local orig_index = entry_index
- local acquire_id = self.entries[orig_index].acquire_id
-
- -- entry_index is the position in self.entries that we want to expand. Since we are expanding the current entry, the return
- -- value should be the index of the next button after the expansion occurs
- entry_index = entry_index + 1
+ function MainPanel.scroll_frame:ExpandAcquireData(entry_index, acquire_type, acquire_data, recipe_id, hide_type)
+ local obtain_filters = addon.db.profile.filters.obtain
+ local rep_color = private.reputation_colors
+ local padding = " "
- if acquire_id then
- for spell_id in pairs(private.acquire_list[acquire_id].recipes) do
- local recipe_entry = private.recipe_list[spell_id]
+ if acquire_type == A.TRAINER and obtain_filters.trainer then
+ for id_num in pairs(acquire_data) do
+ local trainer = private.trainer_list[id_num]
- if recipe_entry.is_visible and recipe_entry.is_relevant then
+ if CheckDisplayFaction(trainer.faction) then
local t = AcquireTable()
-
- t.text = FormatRecipeText(recipe_entry)
+ t.recipe_id = recipe_id
t.is_expanded = true
- t.recipe_id = spell_id
- t.acquire_id = acquire_id
+
+ local name = trainer.name
+
+ if trainer.faction == FACTION_HORDE then
+ name = addon:Horde(name)
+ elseif trainer.faction == FACTION_ALLIANCE then
+ name = addon:Alliance(name)
+ else
+ name = SetTextColor(rep_color["neutral"], name)
+ end
+ t.text = string.format("%s%s %s", padding, hide_type and "" or addon:Trainer(L["Trainer"])..":", name)
tinsert(self.entries, entry_index, t)
entry_index = entry_index + 1
- end
- end
- return entry_index
- end
- local location_id = self.entries[orig_index].location_id
-
- if location_id then
- for spell_id in pairs(private.location_list[location_id].recipes) do
- local recipe_entry = private.recipe_list[spell_id]
- if recipe_entry.is_visible and recipe_entry.is_relevant then
- local t = AcquireTable()
+ local coord_text = ""
- t.text = FormatRecipeText(recipe_entry)
+ if trainer.coord_x ~= 0 and trainer.coord_y ~= 0 then
+ coord_text = addon:Coords("(" .. trainer.coord_x .. ", " .. trainer.coord_y .. ")")
+ end
+ t = AcquireTable()
+ t.recipe_id = recipe_id
t.is_expanded = true
- t.recipe_id = spell_id
- t.location_id = location_id
+ t.text = padding .. padding .. trainer.location .. " " .. coord_text
tinsert(self.entries, entry_index, t)
entry_index = entry_index + 1
end
end
- return entry_index
- end
- local recipe_id = self.entries[orig_index].recipe_id
- local obtain_filters = addon.db.profile.filters.obtain
- local rep_color = private.reputation_colors
-
- for acquire_type, acquire_info in pairs(private.recipe_list[recipe_id].acquire_data) do
- if acquire_type == A.TRAINER and obtain_filters.trainer then
- for id_num in pairs(acquire_info) do
- local trainer = private.trainer_list[id_num]
-
- if CheckDisplayFaction(trainer.faction) then
- local t = AcquireTable()
- t.recipe_id = recipe_id
- t.is_expanded = true
+ elseif acquire_type == A.VENDOR and (obtain_filters.vendor or obtain_filters.pvp) then
+ -- Right now PVP obtained items are located on vendors so they have the vendor and pvp flag.
+ -- We need to display the vendor in the drop down if we want to see vendors or if we want to see PVP
+ -- This allows us to select PVP only and to see just the PVP recipes
+ for id_num in pairs(acquire_data) do
+ local vendor = private.vendor_list[id_num]
+
+ if CheckDisplayFaction(vendor.faction) then
+ local t = AcquireTable()
+ t.recipe_id = recipe_id
+ t.is_expanded = true
- local nStr = ""
+ local name = vendor.name
- if trainer.faction == FACTION_HORDE then
- nStr = addon:Horde(trainer.name)
- elseif trainer.faction == FACTION_ALLIANCE then
- nStr = addon:Alliance(trainer.name)
- else
- nStr = SetTextColor(rep_color["neutral"], trainer.name)
- end
- t.text = pad .. addon:Trainer(L["Trainer"] .. " : ") .. nStr
-
- tinsert(self.entries, entry_index, t)
- entry_index = entry_index + 1
+ if vendor.faction == FACTION_HORDE then
+ name = addon:Horde(name)
+ elseif vendor.faction == FACTION_ALLIANCE then
+ name = addon:Alliance(name)
+ else
+ name = SetTextColor(rep_color["neutral"], name)
+ end
+ t.text = string.format("%s%s %s", padding, hide_type and "" or addon:Vendor(L["Vendor"])..":", name)
- local coord_text = ""
+ tinsert(self.entries, entry_index, t)
+ entry_index = entry_index + 1
- if trainer.coord_x ~= 0 and trainer.coord_y ~= 0 then
- coord_text = addon:Coords("(" .. trainer.coord_x .. ", " .. trainer.coord_y .. ")")
- end
- t = AcquireTable()
- t.recipe_id = recipe_id
- t.is_expanded = true
- t.text = pad .. pad .. trainer.location .. " " .. coord_text
+ local coord_text = ""
- tinsert(self.entries, entry_index, t)
- entry_index = entry_index + 1
+ if vendor.coord_x ~= 0 and vendor.coord_y ~= 0 then
+ coord_text = addon:Coords("(" .. vendor.coord_x .. ", " .. vendor.coord_y .. ")")
end
- end
- -- Right now PVP obtained items are located on vendors so they have the vendor and pvp flag.
- -- We need to display the vendor in the drop down if we want to see vendors or if we want to see PVP
- -- This allows us to select PVP only and to see just the PVP recipes
- elseif acquire_type == A.VENDOR and (obtain_filters.vendor or obtain_filters.pvp) then
- for id_num in pairs(acquire_info) do
- local vendor = private.vendor_list[id_num]
+ t = AcquireTable()
+ t.recipe_id = recipe_id
+ t.is_expanded = true
+ t.text = padding .. padding .. vendor.location .. " " .. coord_text
- if CheckDisplayFaction(vendor.faction) then
- local t = AcquireTable()
- t.recipe_id = recipe_id
- t.is_expanded = true
+ tinsert(self.entries, entry_index, t)
+ entry_index = entry_index + 1
+ end
+ end
+ elseif acquire_type == A.MOB and (obtain_filters.mobdrop or obtain_filters.instance or obtain_filters.raid) then
+ -- Mobs can be in instances, raids, or specific mob related drops.
+ for id_num in pairs(acquire_data) do
+ local t = AcquireTable()
+ t.recipe_id = recipe_id
+ t.is_expanded = true
- local nStr = ""
+ local mob = private.mob_list[id_num]
+ t.text = string.format("%s%s %s", padding, hide_type and "" or addon:MobDrop(L["Mob Drop"])..":", addon:Red(mob.name))
- if vendor.faction == FACTION_HORDE then
- nStr = addon:Horde(vendor.name)
- elseif vendor.faction == FACTION_ALLIANCE then
- nStr = addon:Alliance(vendor.name)
- else
- nStr = SetTextColor(rep_color["neutral"], vendor.name)
- end
- t.text = pad .. addon:Vendor(L["Vendor"] .. " : ") .. nStr
+ tinsert(self.entries, entry_index, t)
+ entry_index = entry_index + 1
- tinsert(self.entries, entry_index, t)
- entry_index = entry_index + 1
+ local coord_text = ""
- local coord_text = ""
+ if mob.coord_x ~= 0 and mob.coord_y ~= 0 then
+ coord_text = addon:Coords("(" .. mob.coord_x .. ", " .. mob.coord_y .. ")")
+ end
+ t = AcquireTable()
+ t.recipe_id = recipe_id
+ t.is_expanded = true
+ t.text = padding .. padding .. mob.location .. " " .. coord_text
- if vendor.coord_x ~= 0 and vendor.coord_y ~= 0 then
- coord_text = addon:Coords("(" .. vendor.coord_x .. ", " .. vendor.coord_y .. ")")
- end
- t = AcquireTable()
- t.recipe_id = recipe_id
- t.is_expanded = true
- t.text = pad .. pad .. vendor.location .. " " .. coord_text
+ tinsert(self.entries, entry_index, t)
+ entry_index = entry_index + 1
+ end
+ elseif acquire_type == A.QUEST and obtain_filters.quest then
+ for id_num in pairs(acquire_data) do
+ local quest = private.quest_list[id_num]
- tinsert(self.entries, entry_index, t)
- entry_index = entry_index + 1
- end
- end
- -- Mobs can be in instances, raids, or specific mob related drops.
- elseif acquire_type == A.MOB and (obtain_filters.mobdrop or obtain_filters.instance or obtain_filters.raid) then
- for id_num in pairs(acquire_info) do
+ if CheckDisplayFaction(quest.faction) then
local t = AcquireTable()
t.recipe_id = recipe_id
t.is_expanded = true
- local mob = private.mob_list[id_num]
- t.text = pad .. addon:MobDrop(L["Mob Drop"] .. " : ") .. addon:Red(mob.name)
+ local name = quest.name
+
+ if quest.faction == FACTION_HORDE then
+ name = addon:Horde(name)
+ elseif quest.faction == FACTION_ALLIANCE then
+ name = addon:Alliance(name)
+ else
+ name = SetTextColor(rep_color["neutral"], name)
+ end
+ t.text = string.format("%s%s %s", padding, hide_type and "" or addon:Quest(L["Quest"])..":", name)
tinsert(self.entries, entry_index, t)
entry_index = entry_index + 1
local coord_text = ""
- if mob.coord_x ~= 0 and mob.coord_y ~= 0 then
- coord_text = addon:Coords("(" .. mob.coord_x .. ", " .. mob.coord_y .. ")")
+ if quest.coord_x ~= 0 and quest.coord_y ~= 0 then
+ coord_text = addon:Coords("(" .. quest.coord_x .. ", " .. quest.coord_y .. ")")
end
t = AcquireTable()
t.recipe_id = recipe_id
t.is_expanded = true
- t.text = pad .. pad .. mob.location .. " " .. coord_text
+ t.text = padding .. padding .. quest.location .. " " .. coord_text
tinsert(self.entries, entry_index, t)
entry_index = entry_index + 1
end
- elseif acquire_type == A.QUEST and obtain_filters.quest then
- for id_num in pairs(acquire_info) do
- local quest = private.quest_list[id_num]
+ end
+ elseif acquire_type == A.SEASONAL and obtain_filters.seasonal then
+ for id_num in pairs(acquire_data) do
+ local t = AcquireTable()
- if CheckDisplayFaction(quest.faction) then
- local t = AcquireTable()
- t.recipe_id = recipe_id
- t.is_expanded = true
+ t.recipe_id = recipe_id
+ t.is_expanded = true
+ t.text = string.format("%s%s %s", padding, hide_type and "" or SEASONAL_CATEGORY..":", private.seasonal_list[id_num].name)
- local nStr = ""
+ tinsert(self.entries, entry_index, t)
+ entry_index = entry_index + 1
+ end
+ elseif acquire_type == A.REPUTATION then
+ if not faction_strings then
+ faction_strings = {
+ [0] = SetTextColor(rep_color["neutral"], FACTION_NEUTRAL .. " : "),
+ [1] = SetTextColor(rep_color["friendly"], BFAC["Friendly"] .. " : "),
+ [2] = SetTextColor(rep_color["honored"], BFAC["Honored"] .. " : "),
+ [3] = SetTextColor(rep_color["revered"], BFAC["Revered"] .. " : "),
+ [4] = SetTextColor(rep_color["exalted"], BFAC["Exalted"] .. " : ")
+ }
+ end
- if quest.faction == FACTION_HORDE then
- nStr = addon:Horde(quest.name)
- elseif quest.faction == FACTION_ALLIANCE then
- nStr = addon:Alliance(quest.name)
- else
- nStr = SetTextColor(rep_color["neutral"], quest.name)
- end
- t.text = pad .. addon:Quest(L["Quest"] .. " : ") .. nStr
+ for rep_id, rep_info in pairs(acquire_data) do
+ for rep_level, level_info in pairs(rep_info) do
+ for vendor_id in pairs(level_info) do
+ local rep_vendor = private.vendor_list[vendor_id]
- tinsert(self.entries, entry_index, t)
- entry_index = entry_index + 1
+ if CheckDisplayFaction(rep_vendor.faction) then
+ local t = AcquireTable()
- local coord_text = ""
+ t.recipe_id = recipe_id
+ t.is_expanded = true
+ t.text = string.format("%s%s %s", padding, hide_type and "" or addon:Rep(L[_G.REPUTATION])..":",
+ private.reputation_list[rep_id].name)
- if quest.coord_x ~= 0 and quest.coord_y ~= 0 then
- coord_text = addon:Coords("(" .. quest.coord_x .. ", " .. quest.coord_y .. ")")
- end
- t = AcquireTable()
- t.recipe_id = recipe_id
- t.is_expanded = true
- t.text = pad .. pad .. quest.location .. " " .. coord_text
+ tinsert(self.entries, entry_index, t)
+ entry_index = entry_index + 1
+
+ local name = ""
+
+ if rep_vendor.faction == FACTION_HORDE then
+ name = addon:Horde(rep_vendor.name)
+ elseif rep_vendor.faction == FACTION_ALLIANCE then
+ name = addon:Alliance(rep_vendor.name)
+ else
+ name = SetTextColor(rep_color["neutral"], rep_vendor.name)
+ end
+ t = AcquireTable()
+ t.recipe_id = recipe_id
+ t.is_expanded = true
+
+ t.text = padding .. padding .. faction_strings[rep_level] .. name
+
+ tinsert(self.entries, entry_index, t)
+ entry_index = entry_index + 1
+
+ local coord_text = ""
- tinsert(self.entries, entry_index, t)
- entry_index = entry_index + 1
+ if rep_vendor.coord_x ~= 0 and rep_vendor.coord_y ~= 0 then
+ coord_text = addon:Coords("(" .. rep_vendor.coord_x .. ", " .. rep_vendor.coord_y .. ")")
+ end
+ t = AcquireTable()
+ t.recipe_id = recipe_id
+ t.is_expanded = true
+ t.text = padding .. padding .. padding .. rep_vendor.location .. " " .. coord_text
+
+ tinsert(self.entries, entry_index, t)
+ entry_index = entry_index + 1
+ end
end
end
- elseif acquire_type == A.SEASONAL and obtain_filters.seasonal then
- for id_num in pairs(acquire_info) do
+ end
+ elseif acquire_type == A.WORLD_DROP and obtain_filters.worlddrop then
+ if not hide_type then
+ for id_num in pairs(acquire_data) do
+ local _, _, _, hex_color = GetItemQualityColor(private.recipe_list[recipe_id].quality)
local t = AcquireTable()
+
t.recipe_id = recipe_id
t.is_expanded = true
+ t.text = padding..hex_color..L["World Drop"].."|r"
- t.text = pad .. addon:Season(SEASONAL_CATEGORY .. " : " .. private.seasonal_list[id_num].name)
tinsert(self.entries, entry_index, t)
entry_index = entry_index + 1
end
- elseif acquire_type == A.REPUTATION then
- -- Reputation Obtain
- -- Rep: ID, Faction
- -- RepLevel = 0 (Neutral), 1 (Friendly), 2 (Honored), 3 (Revered), 4 (Exalted)
- -- Rep_vendor - VendorID
- if not faction_strings then
- faction_strings = {
- [0] = SetTextColor(rep_color["neutral"], FACTION_NEUTRAL .. " : "),
- [1] = SetTextColor(rep_color["friendly"], BFAC["Friendly"] .. " : "),
- [2] = SetTextColor(rep_color["honored"], BFAC["Honored"] .. " : "),
- [3] = SetTextColor(rep_color["revered"], BFAC["Revered"] .. " : "),
- [4] = SetTextColor(rep_color["exalted"], BFAC["Exalted"] .. " : ")
- }
- end
-
- for rep_id, rep_info in pairs(acquire_info) do
- for rep_level, level_info in pairs(rep_info) do
- for vendor_id in pairs(level_info) do
- local rep_vendor = private.vendor_list[vendor_id]
-
- if CheckDisplayFaction(rep_vendor.faction) then
- local t = AcquireTable()
- t.recipe_id = recipe_id
- t.is_expanded = true
-
- t.text = pad .. addon:Rep(_G.REPUTATION .. " : ") .. private.reputation_list[rep_id].name
- tinsert(self.entries, entry_index, t)
- entry_index = entry_index + 1
-
- local nStr = ""
-
- if rep_vendor.faction == FACTION_HORDE then
- nStr = addon:Horde(rep_vendor.name)
- elseif rep_vendor.faction == FACTION_ALLIANCE then
- nStr = addon:Alliance(rep_vendor.name)
- else
- nStr = SetTextColor(rep_color["neutral"], rep_vendor.name)
- end
- t = AcquireTable()
- t.recipe_id = recipe_id
- t.is_expanded = true
-
- t.text = pad .. pad .. faction_strings[rep_level] .. nStr
-
- tinsert(self.entries, entry_index, t)
- entry_index = entry_index + 1
-
- local coord_text = ""
+ end
+ elseif acquire_type == A.CUSTOM then
+ if not hide_type then
+ for id_num in pairs(acquire_data) do
+ local t = AcquireTable()
- if rep_vendor.coord_x ~= 0 and rep_vendor.coord_y ~= 0 then
- coord_text = addon:Coords("(" .. rep_vendor.coord_x .. ", " .. rep_vendor.coord_y .. ")")
- end
- t = AcquireTable()
- t.recipe_id = recipe_id
- t.is_expanded = true
- t.text = pad .. pad .. pad .. rep_vendor.location .. " " .. coord_text
+ t.recipe_id = recipe_id
+ t.is_expanded = true
+ t.text = padding .. addon:Normal(private.custom_list[id_num].name)
- tinsert(self.entries, entry_index, t)
- entry_index = entry_index + 1
- end
- end
- end
+ tinsert(self.entries, entry_index, t)
+ entry_index = entry_index + 1
end
- elseif acquire_type == A.WORLD_DROP and obtain_filters.worlddrop then
- for id_num in pairs(acquire_info) do
+ end
+ elseif acquire_type == A.PVP and obtain_filters.pvp then
+ for id_num in pairs(acquire_data) do
+ local vendor = private.vendor_list[id_num]
+
+ if CheckDisplayFaction(vendor.faction) then
local t = AcquireTable()
t.recipe_id = recipe_id
t.is_expanded = true
- local hex_color = select(4, GetItemQualityColor(private.recipe_list[recipe_id].quality))
+ local coord_text = ""
+
+ if vendor.coord_x ~= 0 and vendor.coord_y ~= 0 then
+ coord_text = addon:Coords("(" .. vendor.coord_x .. ", " .. vendor.coord_y .. ")")
+ end
+ local name = ""
+
+ if vendor.faction == FACTION_HORDE then
+ name = addon:Horde(vendor.name)
+ elseif vendor.faction == FACTION_ALLIANCE then
+ name = addon:Alliance(vendor.name)
+ else
+ name = SetTextColor(rep_color["neutral"], vendor.name)
+ end
+ t.text = string.format("%s%s %s", padding, hide_type and "" or addon:Vendor(L["Vendor"])..":", name)
- t.text = pad..hex_color..L["World Drop"].."|r"
tinsert(self.entries, entry_index, t)
entry_index = entry_index + 1
- end
- elseif acquire_type == A.CUSTOM then
- for id_num in pairs(acquire_info) do
- local t = AcquireTable()
+
+ t = AcquireTable()
t.recipe_id = recipe_id
t.is_expanded = true
+ t.text = padding .. padding .. vendor.location .. " " .. coord_text
- t.text = pad .. addon:Normal(private.custom_list[id_num].name)
tinsert(self.entries, entry_index, t)
entry_index = entry_index + 1
end
- elseif acquire_type == A.PVP and obtain_filters.pvp then
- for id_num in pairs(acquire_info) do
- local vendor = private.vendor_list[id_num]
+ end
+ --@alpha@
+ elseif acquire_type > A_MAX then
+ local t = AcquireTable()
+ t.recipe_id = recipe_id
+ t.is_expanded = true
+
+ t.text = "Unhandled Acquire Case - Type: " .. acquire_type
+ tinsert(self.entries, entry_index, t)
+ entry_index = entry_index + 1
+ --@end-alpha@
+ end
+ return entry_index
+ end
- if CheckDisplayFaction(vendor.faction) then
- local t = AcquireTable()
- t.recipe_id = recipe_id
- t.is_expanded = true
+ function MainPanel.scroll_frame:ExpandEntry(entry_index)
+ local orig_index = entry_index
+ local list_entry = self.entries[orig_index]
- local coord_text = ""
+ -- entry_index is the position in self.entries that we want to expand. Since we are expanding the current entry, the return
+ -- value should be the index of the next button after the expansion occurs
+ entry_index = entry_index + 1
- if vendor.coord_x ~= 0 and vendor.coord_y ~= 0 then
- coord_text = addon:Coords("(" .. vendor.coord_x .. ", " .. vendor.coord_y .. ")")
- end
- local nStr = ""
+ if list_entry.acquire_id then
+ local acquire_id = list_entry.acquire_id
- if vendor.faction == FACTION_HORDE then
- nStr = addon:Horde(vendor.name)
- elseif vendor.faction == FACTION_ALLIANCE then
- nStr = addon:Alliance(vendor.name)
- else
- nStr = SetTextColor(rep_color["neutral"], vendor.name)
- end
- t.text = pad .. addon:Vendor(L["Vendor"] .. " : ") .. nStr
+ if list_entry.is_header then
+ for spell_id in pairs(private.acquire_list[acquire_id].recipes) do
+ local recipe_entry = private.recipe_list[spell_id]
+ local t = AcquireTable()
- tinsert(self.entries, entry_index, t)
- entry_index = entry_index + 1
+ t.text = FormatRecipeText(recipe_entry)
- t = AcquireTable()
- t.recipe_id = recipe_id
+ if acquire_id == A.WORLD_DROP or acquire_id == A.CUSTOM then
t.is_expanded = true
- t.text = pad .. pad .. vendor.location .. " " .. coord_text
+ else
+ t.is_expanded = false
+ t.is_subheader = true
+ end
+ t.recipe_id = spell_id
+ t.acquire_id = acquire_id
- tinsert(self.entries, entry_index, t)
- entry_index = entry_index + 1
+ tinsert(self.entries, entry_index, t)
+ entry_index = entry_index + 1
+ end
+ elseif list_entry.is_subheader then
+ for acquire_type, acquire_data in pairs(private.recipe_list[list_entry.recipe_id].acquire_data) do
+ if acquire_type == acquire_id then
+ entry_index = self:ExpandAcquireData(entry_index, acquire_type, acquire_data, list_entry.recipe_id, true)
end
end
- --@alpha@
- elseif acquire_type > A_MAX then
+ end
+ return entry_index
+ end
+
+ if list_entry.location_id then
+ local location_id = list_entry.location_id
+
+ for spell_id in pairs(private.location_list[location_id].recipes) do
+ local recipe_entry = private.recipe_list[spell_id]
local t = AcquireTable()
- t.recipe_id = recipe_id
+
+ t.text = FormatRecipeText(recipe_entry)
t.is_expanded = true
+ t.recipe_id = spell_id
+ t.location_id = location_id
- t.text = "Unhandled Acquire Case - Type: " .. acquire_type
tinsert(self.entries, entry_index, t)
entry_index = entry_index + 1
- --@end-alpha@
end
+ return entry_index
+ end
+ local recipe_id = self.entries[orig_index].recipe_id
+
+ for acquire_type, acquire_data in pairs(private.recipe_list[recipe_id].acquire_data) do
+ entry_index = self:ExpandAcquireData(entry_index, acquire_type, acquire_data, recipe_id)
end
return entry_index
end