You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
734 lines
22 KiB
734 lines
22 KiB
-- ///////////////////////////////////////////////////////////////////////////////////////////
|
|
--
|
|
-- Blizzard API
|
|
-- Author: SLOKnightfall
|
|
|
|
-- Functions based on the Blizzard API that return the same data structure for extra sets
|
|
|
|
-- ///////////////////////////////////////////////////////////////////////////////////////////
|
|
|
|
local addonName, addon = ...
|
|
---addon = LibStub("AceAddon-3.0"):NewAddon(addon, addonName, "AceEvent-3.0", "AceConsole-3.0", "AceHook-3.0")
|
|
addon = LibStub("AceAddon-3.0"):GetAddon(addonName)
|
|
|
|
|
|
local playerInv_DB
|
|
local Profile
|
|
local playerNme
|
|
local realmName
|
|
local playerClass, classID,_
|
|
local Sets = {}
|
|
addon.Sets = Sets
|
|
|
|
--local SetsDataProvider = addon.SetsDataProvider
|
|
local L = LibStub("AceLocale-3.0"):GetLocale(addonName)
|
|
|
|
local itemSlots = {
|
|
INVTYPE_HEAD = "HEADSLOT",
|
|
INVTYPE_SHOULDER = "SHOULDERSLOT",
|
|
INVTYPE_CLOAK = "BACKSLOT",
|
|
INVTYPE_CHEST = "CHESTSLOT",
|
|
INVTYPE_ROBE = "CHESTSLOT",
|
|
INVTYPE_TABARD = "TABARDSLOT",
|
|
INVTYPE_BODY = "SHIRTSLOT",
|
|
INVTYPE_WRIST = "WRISTSLOT",
|
|
INVTYPE_HAND = "HANDSSLOT",
|
|
INVTYPE_WAIST = "WAISTSLOT",
|
|
INVTYPE_LEGS = "LEGSSLOT",
|
|
INVTYPE_FEET = "FEETSLOT",
|
|
INVTYPE_WEAPON = "MAINHANDSLOT",
|
|
INVTYPE_RANGED = "MAINHANDSLOT",
|
|
INVTYPE_RANGEDRIGHT = "MAINHANDSLOT",
|
|
INVTYPE_THROWN = "MAINHANDSLOT",
|
|
INVTYPE_SHIELD = "SECONDARYHANDSLOT",
|
|
INVTYPE_2HWEAPON = "MAINHANDSLOT",
|
|
INVTYPE_WEAPONMAINHAND = "MAINHANDSLOT",
|
|
INVTYPE_WEAPONOFFHAND = "SECONDARYHANDSLOT",
|
|
INVTYPE_HOLDABLE = "SECONDARYHANDSLOT",
|
|
}
|
|
|
|
|
|
|
|
local function GetItemSlot(itemLinkOrID)
|
|
local _, _, _, slot = GetItemInfoInstant(itemLinkOrID)
|
|
if not slot then return end
|
|
return itemSlots[slot]
|
|
end
|
|
addon.GetItemSlot = GetItemSlot
|
|
|
|
local function GetItemCategory(appearanceID)
|
|
return (appearanceID and C_TransmogCollection.GetCategoryForItem(appearanceID)) or 0
|
|
end
|
|
addon.GetItemCategory = GetItemCategory
|
|
local function GetTransmogLocation(itemLinkOrID)
|
|
return TransmogUtil.GetTransmogLocation(GetItemSlot(itemLinkOrID), Enum.TransmogType.Appearance, Enum.TransmogModification.Main)
|
|
end
|
|
addon.GetTransmogLocation = GetTransmogLocation
|
|
--Determines type of set based on setID
|
|
local function DetermineSetType(setID)
|
|
|
|
local setType = addon.GetSetType(setID)
|
|
--Default Blizzard Set
|
|
if not setType or setType == "BlizzardSet"then
|
|
return "set"
|
|
|
|
--Extra Set
|
|
elseif setType == "ExtraSet" then
|
|
return "extraSet"
|
|
|
|
else
|
|
--Mogit set
|
|
--Saved Set
|
|
return "savedset"
|
|
end
|
|
end
|
|
|
|
addon.DetermineSetType = DetermineSetType
|
|
addon.C_Transmog = {}
|
|
|
|
function addon.C_Transmog.LoadOutfit(outfitID)
|
|
--if addon.IsDefaultSet(outfitID) then
|
|
--C_Transmog.LoadOutfit(addon:GetBlizzID(outfitID))
|
|
--else
|
|
BetterWardrobeCollectionFrame.SetsTransmogFrame:LoadSet(outfitID)
|
|
--end
|
|
end
|
|
|
|
addon.C_TransmogSets = {}
|
|
addon.C_TransmogCollection = {}
|
|
|
|
--C_TransmogSets.GetSetPrimaryAppearances(setID)
|
|
--[[ Name = "GetSetPrimaryAppearances",
|
|
Type = "Function",
|
|
|
|
Arguments =
|
|
{
|
|
{ Name = "transmogSetID", Type = "number", Nilable = false },
|
|
},
|
|
|
|
Returns =
|
|
{
|
|
{ Name = "apppearances", Type = "table", InnerType = "TransmogSetPrimaryAppearanceInfo", Nilable = false },
|
|
},
|
|
|
|
Name = "TransmogSetPrimaryAppearanceInfo",
|
|
Type = "Structure",
|
|
Fields =
|
|
{
|
|
{ Name = "appearanceID", Type = "number", Nilable = false },
|
|
{ Name = "collected", Type = "bool", Nilable = false },
|
|
},]]
|
|
|
|
function addon.C_TransmogSets.GetSetPrimaryAppearances(setID)
|
|
local setType = DetermineSetType(setID)
|
|
|
|
if setType == "set" then
|
|
return C_TransmogSets.GetSetPrimaryAppearances(setID)
|
|
|
|
else
|
|
--elseif setType == "extraset" then
|
|
local setSources = addon.GetSetsources(setID)
|
|
local primaryAppearances = {}
|
|
for appearanceID, collected in pairs(setSources) do
|
|
local data = {["appearanceID"] = appearanceID, ["collected"] = collected}
|
|
tinsert(primaryAppearances, data)
|
|
end
|
|
|
|
return primaryAppearances
|
|
end
|
|
end
|
|
|
|
|
|
function addon.C_TransmogSets.GetSetInfo(setID)
|
|
if not setID then return {} end
|
|
local setType = DetermineSetType(setID)
|
|
|
|
if setType == "set" then
|
|
return C_TransmogSets.GetSetInfo(setID)
|
|
|
|
else
|
|
--elseif setType == "extraset" then
|
|
return addon.GetSetInfo(setID)
|
|
end
|
|
end
|
|
|
|
|
|
function addon.C_TransmogSets.SetIsFavorite(setID, value)
|
|
end
|
|
|
|
|
|
function addon.C_TransmogSets.GetBaseSetsCounts()
|
|
if BetterWardrobeCollectionFrame:CheckTab(2) then
|
|
return C_TransmogSets.GetBaseSetsCounts()
|
|
--elseif BetterWardrobeCollectionFrame:CheckTab(3) then
|
|
else
|
|
local sets = addon.GetBaseList()
|
|
local totalSets = #sets or 0
|
|
local collectedSets = 0
|
|
local SetsDataProvider = addon.SetsDataProvider
|
|
|
|
for i, data in ipairs(sets) do
|
|
local sourceData = addon.SetsDataProvider:GetSetSourceData(data.setID)
|
|
local topSourcesCollected, topSourcesTotal = (sourceData and sourceData.numCollected) or 0, (sourceData and sourceData.numTotal) or 0
|
|
if topSourcesCollected == topSourcesTotal then
|
|
collectedSets = collectedSets + 1
|
|
end
|
|
end
|
|
return collectedSets, totalSets
|
|
end
|
|
end
|
|
|
|
function addon.C_TransmogSets.GetSourcesForSlot(setID, slot)
|
|
if BetterWardrobeCollectionFrame:CheckTab(2) then
|
|
return C_TransmogSets.GetSourcesForSlot(setID, slot)
|
|
else
|
|
local categoryID, visualID, canEnchant, icon, isCollected, itemLink, transmogLink, unknown1, itemSubTypeIndex = C_TransmogCollection.GetAppearanceSourceInfo(sourceID)
|
|
end
|
|
end
|
|
|
|
|
|
function addon.C_TransmogSets.SetHasNewSources(setID)
|
|
local setType = DetermineSetType(setID)
|
|
|
|
if setType == "set" then
|
|
return C_TransmogSets.SetHasNewSources(setID)
|
|
|
|
elseif setType == "extraset" then
|
|
if addon.newTransmogInfo[setID] then return true end
|
|
|
|
return false
|
|
end
|
|
end
|
|
|
|
|
|
|
|
function addon.C_TransmogSets.SetHasNewSourcesForSlot(setID, transmogSlot)
|
|
if (addon.newTransmogInfo[setID]) then
|
|
for itemID, inventoryType in pairs(addon.newTransmogInfo[setID]) do
|
|
if inventoryType == transmogSlot then
|
|
return true
|
|
end
|
|
|
|
end
|
|
|
|
return false
|
|
else
|
|
return false
|
|
end
|
|
end
|
|
|
|
function addon.C_TransmogSets.GetBaseSetID(setID)
|
|
local setType = DetermineSetType(setID)
|
|
if setType == "set" then
|
|
return C_TransmogSets.GetBaseSetID(setID)
|
|
|
|
elseif setType == "extraset" then
|
|
return setID
|
|
else
|
|
return setID
|
|
end
|
|
end
|
|
|
|
local SourceDB = {}
|
|
function addon.ClearSourceDB()
|
|
wipe(SourceDB)
|
|
end
|
|
|
|
function addon.GetSetSources(setID)
|
|
local setAppearances = C_TransmogSets.GetSetPrimaryAppearances(setID)
|
|
if not setAppearances then
|
|
return nil
|
|
end
|
|
|
|
local lookupTable = {}
|
|
for i, appearanceInfo in ipairs(setAppearances) do
|
|
lookupTable[appearanceInfo.appearanceID] = appearanceInfo.collected
|
|
end
|
|
return lookupTable
|
|
end
|
|
local counter = 0
|
|
function addon.C_TransmogSets.GetSetSources(setID)
|
|
if SourceDB[setID] then return SourceDB[setID][1], SourceDB[setID][2] end
|
|
local setInfo = addon.GetSetInfo(setID)
|
|
local SetType = setInfo and setInfo.setType
|
|
--Default Blizzard Set
|
|
if not SetType or SetType == "BlizzardSet" then
|
|
return addon.GetSetSources(setID)
|
|
end
|
|
|
|
local setSources = {}
|
|
local atTransmogrifier = C_Transmog.IsAtTransmogNPC()
|
|
local unavailable = false
|
|
local SetType = setInfo.setType
|
|
local sources = {}
|
|
--Blizzard Saved Set
|
|
if SetType == "SavedBlizzard" then
|
|
local setTransmogInfo = C_TransmogCollection.GetOutfitItemTransmogInfoList(addon:GetBlizzID(setID))
|
|
for slotID, data in ipairs(setTransmogInfo) do
|
|
local sourceInfo = data.appearanceID and C_TransmogCollection.GetSourceInfo(data.appearanceID)
|
|
local sources = sourceInfo and C_TransmogCollection.GetAppearanceSources(sourceInfo.visualID, GetItemCategory(sourceInfo.visualID), GetTransmogLocation(sourceInfo.itemID))
|
|
if sources then
|
|
--items[sources.itemID] = true
|
|
if #sources > 1 then
|
|
CollectionWardrobeUtil.SortSources(sources, sources[1].visualID, sourceID)
|
|
end
|
|
setSources[sources[1].sourceID] = sources[1].isCollected--and sourceInfo.isCollected
|
|
end
|
|
|
|
if slotID == 3 and data.secondaryAppearanceID then
|
|
local sourceInfo = C_TransmogCollection.GetSourceInfo(data.secondaryAppearanceID)
|
|
local sources = sourceInfo and C_TransmogCollection.GetAppearanceSources(sourceInfo.visualID, GetItemCategory(sourceInfo.visualID), GetTransmogLocation(sourceInfo.itemID))
|
|
if sources then
|
|
--items[sources.itemID] = true
|
|
if #sources > 1 then
|
|
CollectionWardrobeUtil.SortSources(sources, sources[1].visualID, sourceID)
|
|
end
|
|
setSources[sources[1].sourceID] = sources[1].isCollected--and sourceInfo.isCollected
|
|
end
|
|
end
|
|
end
|
|
|
|
SourceDB[setID] = {setSources, unavailable}
|
|
return setSources, unavailable
|
|
|
|
--Other Sets
|
|
else
|
|
if not setInfo.itemData then
|
|
else
|
|
--print("Lookup "..counter)
|
|
counter = counter+1
|
|
for slotID, sourceData in pairs(setInfo.itemData) do
|
|
local sourceID = sourceData[2]
|
|
local appearanceID = sourceData[3]
|
|
if sourceID ~= 0 then
|
|
local sourceInfo = sourceID and C_TransmogCollection.GetSourceInfo(sourceID)
|
|
|
|
local sources = appearanceID and C_TransmogCollection.GetAppearanceSources(appearanceID, GetItemCategory(appearanceID), GetTransmogLocation(sourceInfo.itemID))
|
|
if sources then
|
|
--items[sources.itemID] = true
|
|
if #sources > 1 then
|
|
CollectionWardrobeUtil.SortSources(sources, sources[1].visualID, sourceID)
|
|
end
|
|
setSources[sources[1].sourceID] = sources[1].isCollected--and sourceInfo.isCollected
|
|
else
|
|
|
|
local allSources = C_TransmogCollection.GetAllAppearanceSources(appearanceID)
|
|
local list = {}
|
|
for _, sourceID in ipairs(allSources) do
|
|
|
|
local info = C_TransmogCollection.GetSourceInfo(sourceID)
|
|
if (info and not info.sourceType) then --and not setInfo.sourceType then
|
|
unavailable = true
|
|
end
|
|
|
|
local isCollected = select(5,C_TransmogCollection.GetAppearanceSourceInfo(sourceID))
|
|
info.isCollected = isCollected
|
|
tinsert(list, info)
|
|
end
|
|
|
|
if #list >= 1 then
|
|
CollectionWardrobeUtil.SortSources(list, list[1].visualID, sourceID)
|
|
setSources[list[1].sourceID or sourceID ] = list[1].isCollected or false
|
|
if not list[1].sourceType then --and not setInfo.sourceType then
|
|
unavailable = true
|
|
end
|
|
end
|
|
end
|
|
end
|
|
end
|
|
|
|
if setInfo.itemData[3] and setInfo.offShoulder then
|
|
local sourceInfo = C_TransmogCollection.GetSourceInfo(setInfo.offShoulder)
|
|
--local sources = sourceInfo and C_TransmogCollection.GetAppearanceSources(sourceInfo.visualID)
|
|
local sources = sourceInfo and C_TransmogCollection.GetAppearanceSources(sourceInfo.visualID, GetItemCategory(sourceInfo.visualID), GetTransmogLocation(sourceInfo.itemID))
|
|
|
|
if sources then
|
|
--items[sources.itemID] = true
|
|
if #sources > 1 then
|
|
CollectionWardrobeUtil.SortSources(sources, sources[1].visualID, sourceID)
|
|
end
|
|
setSources[sources[1].sourceID] = sources[1].isCollected--and sourceInfo.isCollected
|
|
end
|
|
end
|
|
end
|
|
|
|
SourceDB[setID] = {setSources, unavailable}
|
|
|
|
return setSources, unavailable
|
|
end
|
|
end
|
|
|
|
function addon:SetFavoriteItem(visualID, set)
|
|
if addon.favoritesDB.profile.item[visualID] then
|
|
addon.favoritesDB.profile.item[visualID] = nil
|
|
else
|
|
addon.favoritesDB.profile.item[visualID] = true
|
|
end
|
|
|
|
BetterWardrobeCollectionFrame.ItemsCollectionFrame:RefreshVisualsList()
|
|
BetterWardrobeCollectionFrame.ItemsCollectionFrame:UpdateItems()
|
|
end
|
|
|
|
function addon:IsFavoriteItem(visualID)
|
|
return addon.favoritesDB.profile.item[visualID]
|
|
end
|
|
|
|
function Sets:ClearHidden(setList)
|
|
if addon.Profile.ShowHidden then return setList end
|
|
|
|
local setType = "item"
|
|
if BetterWardrobeCollectionFrame:CheckTab(2) then
|
|
setType = "set"
|
|
elseif BetterWardrobeCollectionFrame:CheckTab(3) then
|
|
setType = "extraset"
|
|
elseif BetterWardrobeCollectionFrame:CheckTab(4) then
|
|
return setList
|
|
end
|
|
|
|
local newSet = {}
|
|
for i, setInfo in pairs(setList) do
|
|
local itemID = setInfo.setID or setInfo.visualID
|
|
if not addon.HiddenAppearanceDB.profile[setType][itemID] then
|
|
tinsert(newSet, setInfo)
|
|
end
|
|
end
|
|
return newSet
|
|
end
|
|
|
|
local function CheckMissingLocation(setInfo)
|
|
local filtered = false
|
|
local missingSelection
|
|
if BetterWardrobeCollectionFrame:CheckTab(2) then
|
|
|
|
local invType = {}
|
|
missingSelection = addon.Filters.Base.missingSelection
|
|
local sources = addon.GetSetSources(setInfo.setID)
|
|
if not sources then return end
|
|
for sourceID in pairs(sources) do
|
|
local sourceInfo = C_TransmogCollection.GetSourceInfo(sourceID)
|
|
--local sources = sourceInfo and C_TransmogCollection.GetAppearanceSources(sourceInfo.visualID)
|
|
local sources = sourceInfo and C_TransmogCollection.GetAppearanceSources(sourceInfo.visualID, GetItemCategory(sourceInfo.visualID), GetTransmogLocation(sourceInfo.itemID))
|
|
|
|
if sources then
|
|
if #sources > 1 then
|
|
CollectionWardrobeUtil.SortSources(sources, sources[1].visualID, sourceID)
|
|
|
|
end
|
|
if missingSelection[sourceInfo.invType] and not sources[1].isCollected then
|
|
|
|
return true
|
|
elseif missingSelection[sourceInfo.invType] then
|
|
filtered = true
|
|
end
|
|
end
|
|
end
|
|
|
|
for type, value in pairs(missingSelection) do
|
|
if value and invType[type] then
|
|
filtered = true
|
|
end
|
|
end
|
|
else
|
|
local missingSelection = addon.Filters.Extra.missingSelection
|
|
|
|
for type, value in pairs(missingSelection) do
|
|
if value then
|
|
filtered = true
|
|
break
|
|
end
|
|
end
|
|
--no need to filter if nothing is selected
|
|
if not filtered then return true end
|
|
|
|
local invType = {}
|
|
if not setInfo.itemData then
|
|
local sources = addon.GetSetSources(setInfo.setID)
|
|
for sourceID in pairs(sources) do
|
|
local sourceInfo = C_TransmogCollection.GetSourceInfo(sourceID)
|
|
|
|
local isCollected = Sets.isMogKnown(sourceID)
|
|
if missingSelection[sourceInfo.invType] and not isCollected then
|
|
return true
|
|
elseif missingSelection[sourceInfo.invType] then
|
|
filtered = true
|
|
end
|
|
end
|
|
|
|
else
|
|
local setSources = addon.GetSetsources(setInfo.setID)
|
|
for sourceID, isCollected in pairs(setSources) do
|
|
local sourceInfo = C_TransmogCollection.GetSourceInfo(sourceID)
|
|
if missingSelection[sourceInfo.invType] and not isCollected then
|
|
return true
|
|
elseif missingSelection[sourceInfo.invType] then
|
|
filtered = true
|
|
end
|
|
end
|
|
end
|
|
|
|
for type, value in pairs(missingSelection) do
|
|
if value and invType[type] then
|
|
filtered = true
|
|
end
|
|
end
|
|
end
|
|
|
|
return not filtered
|
|
end
|
|
|
|
addon.RefreshFilter = true
|
|
function addon:FilterSets(setList, setType)
|
|
if C_Transmog.IsAtTransmogNPC() then return setList end
|
|
|
|
local FilterSets = {}
|
|
local searchString = string.lower(WardrobeCollectionFrameSearchBox:GetText())
|
|
local filterCollected = addon.Filters.Base.filterCollected
|
|
local missingSelection = addon.Filters.Base.missingSelection
|
|
local filterSelection = addon.Filters.Base.filterSelection
|
|
local xpacSelection = addon.Filters.Base.xpacSelection
|
|
|
|
if BetterWardrobeCollectionFrame:CheckTab(3) then
|
|
filterCollected = addon.Filters.Extra.filterCollected
|
|
missingSelection = addon.Filters.Extra.missingSelection
|
|
filterSelection = addon.Filters.Extra.filterSelection
|
|
xpacSelection = addon.Filters.Extra.xpacSelection
|
|
end
|
|
|
|
setList = addon:SearchSets(setList)
|
|
|
|
for i, data in ipairs(setList) do
|
|
local setData = BetterWardrobeSetsDataProviderMixin:GetSetSourceData(data.setID)
|
|
local count , total = setData.numCollected, setData.numTotal
|
|
local expansion = data.expansionID
|
|
local sourcefilter = (BetterWardrobeCollectionFrame:CheckTab(3) and filterSelection[data.filter])
|
|
local unavailableFilter = (not unavailable or (addon.Profile.HideUnavalableSets and unavailable))
|
|
|
|
if BetterWardrobeCollectionFrame:CheckTab(2) then
|
|
expansion = expansion + 1
|
|
sourcefilter = true
|
|
unavailableFilter = true
|
|
end
|
|
|
|
local collected = count == total
|
|
if ((filterCollected[1] and collected) or (filterCollected[2] and not collected)) and
|
|
CheckMissingLocation(data) and
|
|
xpacSelection[expansion] and
|
|
--not duplicate and
|
|
sourcefilter then
|
|
--(not unavailable or (addon.Profile.HideUnavalableSets and unavailable)) then ----and
|
|
tinsert(FilterSets, data)
|
|
end
|
|
end
|
|
|
|
|
|
return FilterSets
|
|
end
|
|
|
|
|
|
function addon:SearchSets(setList)
|
|
local searchedSets = {}
|
|
local searchString = string.lower(BetterWardrobeCollectionFrameSearchBox:GetText())
|
|
|
|
setList = Sets:ClearHidden(setList)
|
|
if searchString == "" then return setList end
|
|
for i, data in ipairs(setList) do
|
|
if (searchString and string.find(string.lower(data.name), searchString)) or (data.label and string.find(string.lower(data.label), searchString)) or (data.description and string.find(string.lower(data.description), searchString)) or (data.className and string.find(string.lower(data.className), searchString)) then
|
|
tinsert(searchedSets, data)
|
|
end
|
|
end
|
|
return searchedSets
|
|
end
|
|
|
|
|
|
--[[
|
|
|
|
C_TransmogSets.SetBaseSetsFilter(LE_TRANSMOG_SET_FILTER_PVE, value)
|
|
end
|
|
info.checked = C_TransmogSets.GetBaseSetsFilter(LE_TRANSMOG_SET_FILTER_PVE)]]
|
|
|
|
|
|
function addon.C_TransmogCollection.GetOutfitItemTransmogInfoList(setID)
|
|
local setData = addon.GetSetInfo(setID)
|
|
local itemTransmogInfoList = {}
|
|
local offShoulder = setData.offShoulder or 0
|
|
local mainHandEnchant = setData.mainHandEnchant or 0
|
|
local offHandEnchant = setData.offHandEnchant or 0
|
|
local itemData = setData.itemData or {}
|
|
|
|
|
|
for i = 1, 19 do
|
|
--for slotID, data in pairs(setData.itemData) do
|
|
local itemTransmogInfo
|
|
local data = itemData[i]
|
|
if i == 3 then
|
|
itemTransmogInfo = ItemUtil.CreateItemTransmogInfo((data and data[2]) or 0, offShoulder, 0)
|
|
|
|
elseif i == 16 then
|
|
itemTransmogInfo = ItemUtil.CreateItemTransmogInfo((data and data[2]) or 0, 0, mainHandEnchant)
|
|
|
|
elseif i == 17 then
|
|
itemTransmogInfo = ItemUtil.CreateItemTransmogInfo((data and data[2]) or 0, 0, offHandEnchant)
|
|
|
|
else
|
|
itemTransmogInfo = ItemUtil.CreateItemTransmogInfo((data and data[2]) or 0, 0, 0)
|
|
end
|
|
|
|
itemTransmogInfoList[i] = itemTransmogInfo
|
|
end
|
|
|
|
return itemTransmogInfoList
|
|
end
|
|
--[[ TODO: Remove
|
|
function addon:GetSetCounts(setID)
|
|
if ( not self.sourceData ) then
|
|
self.sourceData = { }
|
|
end
|
|
local sourceData = self.sourceData[setID]
|
|
|
|
if ( not self.sourceExtraData ) then
|
|
self.sourceExtraData = { }
|
|
end
|
|
local sourceExtraData = self.sourceExtraData[setID]
|
|
|
|
if (BetterWardrobeCollectionFrame:CheckTab(2)) then
|
|
if ( not sourceData ) then
|
|
local primaryAppearances = C_TransmogSets.GetSetPrimaryAppearances(setID)
|
|
local numCollected = 0
|
|
local numTotal = 0
|
|
local sources = {}
|
|
for i, primaryAppearance in ipairs(primaryAppearances) do
|
|
sources[primaryAppearance.appearanceID] = true
|
|
if primaryAppearance.collected then
|
|
numCollected = numCollected + 1
|
|
end
|
|
numTotal = numTotal + 1
|
|
end
|
|
sourceData = { numCollected = numCollected, numTotal = numTotal, sources = sources, primaryAppearances = primaryAppearances }
|
|
self.sourceData[setID] = sourceData
|
|
end
|
|
|
|
return sourceData
|
|
else
|
|
if not sourceExtraData then
|
|
|
|
--elseif BetterWardrobeCollectionFrame:CheckTab(3) then
|
|
local sources, unavailable = addon.GetSetsources(setID)
|
|
local numCollected = 0
|
|
local numTotal = 0
|
|
if sources then
|
|
for sourceID, collected in pairs(sources) do
|
|
if (collected) then
|
|
numCollected = numCollected + 1
|
|
end
|
|
numTotal = numTotal + 1
|
|
end
|
|
sourceExtraData = {numCollected = numCollected, numTotal = numTotal, sources = sources, unavailable = unavailable }
|
|
self.sourceExtraData[setID] = sourceData
|
|
end
|
|
end
|
|
|
|
return sourceExtraData
|
|
end
|
|
end
|
|
]]
|
|
--[[function BetterWardrobeSetsDataProviderMixin:GetSetSourceCounts(setID)
|
|
local sourceData = self:GetSetSourceData(setID)
|
|
return sourceData.numCollected, sourceData.numTotal
|
|
end]]
|
|
|
|
|
|
--function a()
|
|
--local link = gsub(C_TradeSkillUI.GetTradeSkillListLink(), "\124", "\124\124")
|
|
--local _,_,current, max,_ = strsplit(":", link, 5)
|
|
--DEFAULT_CHAT_FRAME:AddMessage(current..":"..max)
|
|
--end
|
|
|
|
function addon.Model_ApplyUICamera(self, uiCameraID)
|
|
local posX, posY, posZ, yaw, pitch, roll, animId, animVariation, animFrame, centerModel = GetUICameraInfo(uiCameraID)
|
|
if posX and posY and posZ and yaw and pitch and roll then
|
|
self:MakeCurrentCameraCustom()
|
|
if uiCameraID == 200 then
|
|
self:SetPosition(-8.5, 0, -2.677635)
|
|
else
|
|
self:SetPosition(posX, posY, posZ)
|
|
end
|
|
|
|
self:SetFacing(yaw)
|
|
self:SetPitch(pitch)
|
|
self:SetRoll(roll)
|
|
self:UseModelCenterToTransform(centerModel)
|
|
|
|
local cameraX, cameraY, cameraZ = self:TransformCameraSpaceToModelSpace(MODELFRAME_UI_CAMERA_POSITION):GetXYZ()
|
|
local targetX, targetY, targetZ = self:TransformCameraSpaceToModelSpace(MODELFRAME_UI_CAMERA_TARGET):GetXYZ()
|
|
|
|
self:SetCameraPosition(cameraX, cameraY, cameraZ)
|
|
self:SetCameraTarget(targetX, targetY, targetZ)
|
|
end
|
|
|
|
if( animId and animFrame ~= -1 and animId ~= -1 ) then
|
|
self:FreezeAnimation(animId, animVariation, animFrame)
|
|
else
|
|
self:SetAnimation(0, 0)
|
|
end
|
|
end
|
|
|
|
|
|
|
|
local function ChatEdit_ActivateChat(editBox)
|
|
if ( editBox.disableActivate ) then
|
|
return;
|
|
end
|
|
|
|
ChatFrame_ClearChatFocusOverride();
|
|
if ( ACTIVE_CHAT_EDIT_BOX and ACTIVE_CHAT_EDIT_BOX ~= editBox ) then
|
|
ChatEdit_DeactivateChat(ACTIVE_CHAT_EDIT_BOX);
|
|
end
|
|
ACTIVE_CHAT_EDIT_BOX = editBox;
|
|
|
|
ChatEdit_SetLastActiveWindow(editBox);
|
|
|
|
--Stop any sort of fading
|
|
UIFrameFadeRemoveFrame(editBox);
|
|
|
|
editBox:Show();
|
|
editBox:SetFocus();
|
|
editBox:SetFrameStrata("DIALOG");
|
|
editBox:Raise();
|
|
|
|
editBox.header:Show();
|
|
ChatEdit_UpdateNewcomerEditBoxHint(editBox);
|
|
editBox.focusLeft:Show();
|
|
editBox.focusRight:Show();
|
|
editBox.focusMid:Show();
|
|
editBox:SetAlpha(1.0);
|
|
|
|
ChatEdit_UpdateHeader(editBox);
|
|
|
|
if ( CHAT_SHOW_IME ) then
|
|
_G[editBox:GetName().."Language"]:Show();
|
|
end
|
|
end
|
|
|
|
function addon.ChatFrame_OpenChat(text, chatFrame, desiredCursorPosition)
|
|
|
|
local editBox = ChatEdit_ChooseBoxForSend(chatFrame);
|
|
|
|
ChatEdit_ActivateChat(editBox);
|
|
editBox.desiredCursorPosition = desiredCursorPosition;
|
|
|
|
if text then
|
|
editBox.text = text;
|
|
editBox.setText = 1;
|
|
end
|
|
|
|
if ( editBox:GetAttribute("chatType") == editBox:GetAttribute("stickyType") ) then
|
|
if ( (editBox:GetAttribute("stickyType") == "PARTY") and (not IsInGroup(LE_PARTY_CATEGORY_HOME)) or
|
|
(editBox:GetAttribute("stickyType") == "RAID") and (not IsInRaid(LE_PARTY_CATEGORY_HOME)) or
|
|
(editBox:GetAttribute("stickyType") == "INSTANCE_CHAT") and (not IsInGroup(LE_PARTY_CATEGORY_INSTANCE))) then
|
|
editBox:SetAttribute("chatType", "SAY");
|
|
end
|
|
end
|
|
|
|
ChatEdit_UpdateHeader(editBox);
|
|
return editBox;
|
|
end
|