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.

564 lines
22 KiB

local SLE, T, E, L, V, P, G = unpack(select(2, ...))
local Armory = SLE.Armory_Core
local M = E.Misc
local LCG = LibStub('LibCustomGlow-1.0')
local GetAverageItemLevel = GetAverageItemLevel
local TRANSMOGRIFIED_HEADER = TRANSMOGRIFIED_HEADER
local C_Transmog_GetSlotInfo = C_Transmog.GetSlotInfo
local C_TransmogCollection_GetAppearanceSourceInfo = C_TransmogCollection.GetAppearanceSourceInfo
local C_Transmog_GetSlotVisualInfo = C_Transmog.GetSlotVisualInfo
local C_TransmogCollection_GetIllusionSourceInfo = C_TransmogCollection.GetIllusionSourceInfo
local HandleModifiedItemClick = HandleModifiedItemClick
local C_TransmogCollection_GetInspectItemTransmogInfoList = C_TransmogCollection.GetInspectItemTransmogInfoList
local GetSpecialization, GetSpecializationInfo, GetInspectSpecialization = GetSpecialization, GetSpecializationInfo, GetInspectSpecialization
local InCombatLockdown = InCombatLockdown
local CA, IA, SA
Armory.Constants = {}
--Create ench replacement string DB
if not SLE_ArmoryDB or type(SLE_ArmoryDB) ~= 'table' then
SLE_ArmoryDB = {
EnchantString = {}
}
end
Armory.Constants.GearList = {
'HeadSlot', 'HandsSlot', 'NeckSlot', 'WaistSlot', 'ShoulderSlot', 'LegsSlot', 'BackSlot', 'FeetSlot', 'ChestSlot', 'Finger0Slot',
'ShirtSlot', 'Finger1Slot', 'TabardSlot', 'Trinket0Slot', 'WristSlot', 'Trinket1Slot', 'SecondaryHandSlot', 'MainHandSlot'
}
Armory.Constants.AzeriteSlot = {
'HeadSlot', 'ShoulderSlot', 'ChestSlot',
}
Armory.Constants.CanTransmogrify = {
['HeadSlot'] = true,
['ShoulderSlot'] = true,
['BackSlot'] = true,
['ChestSlot'] = true,
['TabardSlot'] = true,
['WristSlot'] = true,
['HandsSlot'] = true,
['WaistSlot'] = true,
['LegsSlot'] = true,
['FeetSlot'] = true,
['MainHandSlot'] = true,
['SecondaryHandSlot'] = true
}
Armory.Constants.EnchantableSlots = {
['Finger0Slot'] = true, ['Finger1Slot'] = true, ['MainHandSlot'] = true, ['SecondaryHandSlot'] = true,
--Uncomment this when shadowlands actually launches
['ChestSlot'] = true, ['BackSlot'] = true,
['FeetSlot'] = 2, ['WristSlot'] = 4, ['HandsSlot'] = 1,
}
Armory.Constants.SpecPrimaryStats = {
[250] = 1, --DK Blood
[251] = 1, --DK Frost
[252] = 1, --DK Unholy
[577] = 2, --DH Havoc
[581] = 2, --DH Vengeance
[102] = 4, --Druid Balance
[103] = 2, --Druid Feral
[104] = 2, --Druid Guardian
[105] = 4, --Druid Restoration
[253] = 2, --Hunter Beast Mastery
[254] = 2, --Hunter Marksmanship
[255] = 2, --Hunter Survival
[62] = 4, --Mage Arcane
[63] = 4, --Mage Fire
[64] = 4, --Mage Frost
[268] = 2, --Monk Brewmaster
[270] = 4, --Monk Mistweaver
[269] = 2, --Monk Windwalker
[65] = 4, --Paladin Holy
[66] = 1, --Paladin Protection
[70] = 1, --Paladin Retribution
[256] = 4, --Priest Discipline
[257] = 4, --Priest Holy
[258] = 4, --Priest Shadow
[259] = 2, --Rogue Assassination
[260] = 2, --Rogue Outlaw
[261] = 2, --Rogue Subtlety
[262] = 4, --Shaman Elemental
[263] = 2, --Shaman Enhancement
[264] = 4, --Shaman Restoration
[265] = 4, --Warlock Affliction
[266] = 4, --Warlock Demonology
[267] = 4, --Warlock Destruction
[71] = 1, --Warrior Arms
[72] = 1, --Warrior Fury
[73] = 1, --Warrior Protection
}
Armory.Constants.AzeriteTraitAvailableColor = {0.95, 0.95, 0.32, 1}
Armory.Constants.Character_Defaults_Cached = false
Armory.Constants.Inspect_Defaults_Cached = false
Armory.Constants.Character_Defaults = {}
Armory.Constants.Inspect_Defaults = {}
-- Armory.Constants.WarningTexture = [[Interface\AddOns\ElvUI_SLE\media\textures\armory\Warning-Small]]
Armory.Constants.WarningTexture = [[Interface\AddOns\ElvUI\Media\Textures\Minimalist]]
Armory.Constants.GradientTexture = [[Interface\AddOns\ElvUI_SLE\media\textures\armory\Gradation]]
Armory.Constants.TransmogTexture = [[Interface\AddOns\ElvUI_SLE\media\textures\armory\anchor]]
Armory.Constants.MaxGemSlots = 5
Armory.Constants.EssenceMilestones = {}
Armory.Constants.Stats = {
ScrollStepMultiplier = 5,
}
--Remembering default positions of stuff
function Armory:BuildFrameDefaultsCache(which)
for i, SlotName in pairs(Armory.Constants.GearList) do
Armory.Constants[which..'_Defaults'][SlotName] = {}
local Slot = _G[which..SlotName]
if not Slot then E:Delay(1, function() Armory:BuildFrameDefaultsCache(which) end); return end
Slot.Direction = i%2 == 1 and 'LEFT' or 'RIGHT'
if Slot.iLvlText then
Armory.Constants[which..'_Defaults'][SlotName]['iLvlText'] = { Slot.iLvlText:GetPoint() }
Armory.Constants[which..'_Defaults'][SlotName]['textureSlot1'] = { Slot.textureSlot1:GetPoint() }
for i = 2, 10 do
if Slot['textureSlot'..i] then Slot['textureSlot'..i]:ClearAllPoints(); Slot['textureSlot'..i]:Point(Slot.Direction, Slot['textureSlot'..(i-1)], Slot.Direction == 'LEFT' and 'RIGHT' or 'LEFT', E.twoPixelsPlease and 3 or 1, 0) end
end
Armory.Constants[which..'_Defaults'][SlotName]['enchantText'] = { Slot.enchantText:GetPoint() }
end
if SlotName == 'NeckSlot' and Slot.RankFrame then
Armory.Constants[which..'_Defaults'][SlotName]['RankFrame'] = { Slot.RankFrame:GetPoint() }
end
end
Armory.Constants[which..'_Defaults_Cached'] = true
end
function Armory:ClearTooltip(Tooltip)
local TooltipName = Tooltip:GetName()
Tooltip:ClearLines()
for i = 1, 10 do
_G[TooltipName..'Texture'..i]:SetTexture(nil)
_G[TooltipName..'Texture'..i]:ClearAllPoints()
_G[TooltipName..'Texture'..i]:Point('TOPLEFT', Tooltip)
end
end
function Armory:GetTransmogInfo(Slot, which, unit)
if not which or not unit then return nil end
local transmogLink, TooltipText
Armory:ClearTooltip(Armory.ScanTT)
Armory.ScanTT:SetInventoryItem(unit, Slot.ID)
for i = 1, Armory.ScanTT:NumLines() do
TooltipText = _G['SLE_Armory_ScanTTTextLeft'..i]:GetText()
if TooltipText and TooltipText:match(TRANSMOGRIFIED_HEADER) then
transmogLink = _G['SLE_Armory_ScanTTTextLeft'..(i + 1)]:GetText()
Armory:ClearTooltip(Armory.ScanTT)
end
end
if not transmogLink then return nil end
local appearenceIDs = {}
local mogLink
local data = C_TransmogCollection_GetInspectItemTransmogInfoList()
for _, v in ipairs(data) do
if v.appearanceID and v.appearanceID > 0 then
tinsert(appearenceIDs, v.appearanceID)
end
end
if appearenceIDs then
for i = 1, #appearenceIDs do
if (appearenceIDs[i] and appearenceIDs[i] ~= NO_TRANSMOG_SOURCE_ID) then
if i == Slot.ID then
mogLink = select(6, C_TransmogCollection.GetAppearanceSourceInfo(appearenceIDs[i]))
return mogLink
end
end
end
end
end
--Updates the frame
function Armory:UpdatePageInfo(frame, which, guid, event)
if not (frame and which) then return end
if not Armory:CheckOptions(which) then return end
local window = strlower(which)
local unit = (which == 'Character' and 'player') or frame.unit
if which == 'Character' then
CA:Update_Durability()
Armory.CharacterPrimaryStat = select(6, GetSpecializationInfo(GetSpecialization(), nil, nil, nil, UnitSex('player')))
else
Armory.InspectPrimaryStat = Armory.Constants.SpecPrimaryStats[GetInspectSpecialization(unit)]
end
for i, SlotName in pairs(Armory.Constants.GearList) do
local Slot = _G[which..SlotName]
if Slot then
if Slot.TransmogInfo then
if which == 'Character' then
local transmogLocation = TransmogUtil.GetTransmogLocation(Slot.ID, Enum.TransmogType.Appearance, Enum.TransmogModification.Main)
if not transmogLocation then return end
local itemBaseSourceID = select(3, C_Transmog_GetSlotVisualInfo(transmogLocation))
if not itemBaseSourceID then return end
Slot.TransmogInfo.Link = select(6, C_TransmogCollection_GetAppearanceSourceInfo(itemBaseSourceID))
elseif which == 'Inspect' then
Slot.TransmogInfo.Link = Armory:GetTransmogInfo(Slot, which, unit)
else
return
end
if E.db.sle.armory[window].enable and Slot.TransmogInfo.Link then
if E.db.sle.armory[window].transmog.enableArrow then Slot.TransmogInfo:Show() else Slot.TransmogInfo:Hide() end
if E.db.sle.armory[window].transmog.enableGlow then
LCG.AutoCastGlow_Start(Slot,{1, .5, 1, 1},E.db.sle.armory[window].transmog.glowNumber,0.25,1,E.db.sle.armory[window].transmog.glowOffset,E.db.sle.armory[window].transmog.glowOffset,'_TransmogGlow')
else
LCG.AutoCastGlow_Stop(Slot,'_TransmogGlow')
end
else
Slot.TransmogInfo.Link = nil
Slot.TransmogInfo:Hide()
LCG.AutoCastGlow_Stop(Slot,'_TransmogGlow')
end
end
end
end
end
--Updates ilvl and everything tied to the item somehow
function Armory:UpdatePageStrings(i, iLevelDB, Slot, slotInfo, which)
if not Armory:CheckOptions(which) then return end
Slot.itemLink = GetInventoryItemLink((which == 'Character' and 'player') or _G['InspectFrame'].unit, Slot.ID)
if slotInfo.itemLevelColors then
local window = strlower(which) --to know which settings table to use
if E.db.sle.armory[window] and E.db.sle.armory[window].enable then --If settings table actually exists and armory for it is enabled
if Slot.enchantText and not (slotInfo.enchantTextShort == nil or slotInfo.enchantText == nil) then Armory:ProcessEnchant(window, Slot, slotInfo.enchantTextShort, slotInfo.enchantText) end
if E.db.sle.armory[window].ilvl.colorType == 'QUALITY' then
Slot.iLvlText:SetTextColor(unpack(slotInfo.itemLevelColors)) --Busyness as usual
elseif E.db.sle.armory[window].ilvl.colorType == 'GRADIENT' then
local equippedIlvl = window == 'character' and select(2, GetAverageItemLevel()) or E:CalculateAverageItemLevel(iLevelDB, _G['InspectFrame'].unit)
local diff
if slotInfo.iLvl and (equippedIlvl and type(equippedIlvl) ~= 'boolean') then
diff = slotInfo.iLvl - equippedIlvl
else
diff = 0
end
local aR, aG, aB
if diff >= 0 then
aR, aG, aB = 0,1,0
else
aR, aG, aB = E:ColorGradient(-(3/diff), 1, 0, 0, 1, 1, 0, 0, 1, 0)
end
Slot.iLvlText:SetTextColor(aR, aG, aB)
else
Slot.iLvlText:SetTextColor(1, 1, 1)
end
else
Slot.iLvlText:SetTextColor(unpack(slotInfo.itemLevelColors))
end
--This block is separate cause disabling armory will not hide dem gradients otherwise
if Slot.SLE_Gradient then --First call for this function for inspect is before gradient is created. To avoid errors
if E.db.sle.armory[window].enable and E.db.sle.armory[window].gradient.enable and slotInfo.iLvl then
Slot.SLE_Gradient:Show()
if E.db.sle.armory[window].gradient.quality then Slot.SLE_Gradient:SetVertexColor(unpack(slotInfo.itemLevelColors)) else Slot.SLE_Gradient:SetVertexColor(unpack(E.db.sle.armory[window].gradient.color)) end
else
Slot.SLE_Gradient:Hide()
end
end
else
if Slot.SLE_Gradient then Slot.SLE_Gradient:Hide() end
end
--If put inside "if slotInfo.itemLevelColors" condition will not actually hide gem links/warnings on empty slots
Armory:UpdateGemInfo(Slot, which)
Armory:CheckForMissing(which, Slot, slotInfo.iLvl, slotInfo.gems, slotInfo.essences, slotInfo.enchantTextShort, Armory[which.."PrimaryStat"])
if CA.DurabilityFontSet then CA:Calculate_Durability(which, Slot) end
end
---Store gem info in our hidden frame
function Armory:UpdateGemInfo(Slot, which)
local unit = which == 'Character' and 'player' or (_G['InspectFrame'] and _G['InspectFrame'].unit)
if not unit then return end
for i = 1, Armory.Constants.MaxGemSlots do
local GemLink
if not Slot['SLE_Gem'..i] then return end
if Slot.itemLink then
if Slot.ID == 2 then
if not CA.HearthMilestonesCached then CA:FixFuckingBlizzardLogic() end
local window = strlower(which)
if E.db.sle.armory[window] and E.db.sle.armory[window].enable then
if which == 'Character' and Slot['textureSlotEssenceType'..i] then
Slot['textureSlotEssenceType'..i]:Hide()
elseif which == 'Inspect' and Slot['textureSlotBackdrop'..i] then
Slot['textureSlotBackdrop'..i]:Hide()
end
end
if which == 'Character' and Armory.Constants.EssenceMilestones[i] then
local GemID = C_AzeriteEssence.GetMilestoneEssence(Armory.Constants.EssenceMilestones[i]) --Blizz messed up milestones IDs so using a god damned cache table
if GemID then
local rank = C_AzeriteEssence.GetEssenceInfo(GemID).rank
GemLink = C_AzeriteEssence.GetEssenceHyperlink(GemID, rank)
end
end
else
GemLink = select(2, GetItemGem(Slot.itemLink, i))
end
end
Slot['SLE_Gem'..i].Link = GemLink
end
end
function Armory:CreateSlotStrings(_, which)
Armory:UpdateSharedStringsFonts(which)
end
function Armory:UpdateSharedStringsFonts(which)
local window = strlower(which)
for i, SlotName in pairs(Armory.Constants.GearList) do
local Slot = _G[which..SlotName]
if not Slot then return end
if Slot.iLvlText then
local fontIlvl, sizeIlvl, outlineIlvl, fontEnch, sizeEnch, outlineEnch
if E.db.sle.armory[window].enable then
fontIlvl, sizeIlvl, outlineIlvl = E.db.sle.armory[window].ilvl.font, E.db.sle.armory[window].ilvl.fontSize, E.db.sle.armory[window].ilvl.fontStyle
fontEnch, sizeEnch, outlineEnch = E.db.sle.armory[window].enchant.font, E.db.sle.armory[window].enchant.fontSize, E.db.sle.armory[window].enchant.fontStyle
else
fontIlvl, sizeIlvl, outlineIlvl = E.db.general.itemLevel.itemLevelFont, E.db.general.itemLevel.itemLevelFontSize or 12, E.db.general.itemLevel.itemLevelFontOutline or 'OUTLINE'
fontEnch, sizeEnch, outlineEnch = E.db.general.itemLevel.itemLevelFont, E.db.general.itemLevel.itemLevelFontSize or 12, E.db.general.itemLevel.itemLevelFontOutline or 'OUTLINE'
end
Slot.iLvlText:FontTemplate(E.LSM:Fetch('font', fontIlvl), sizeIlvl, outlineIlvl)
Slot.enchantText:FontTemplate(E.LSM:Fetch('font', fontEnch), sizeEnch, outlineEnch)
end
end
end
--Deals with dem enchants
function Armory:ProcessEnchant(which, Slot, enchantTextShort, enchantText)
if not E.db.sle.armory.enchantString.enable then return end
local strict = E.db.sle.armory.enchantString.strict
if E.db.sle.armory.enchantString.replacement then
for _, enchData in pairs(SLE_ArmoryDB.EnchantString) do
if strict and enchantText == enchData.original then
enchantText = enchData.new
elseif not strict and enchData.original and enchData.new then
enchantText = gsub(enchantText, E:EscapeString(enchData.original), enchData.new)
end
end
end
Slot.enchantText:SetText(enchantText)
end
---<<<Global Hide tooltip func for armory>>>---
function Armory:Tooltip_OnLeave()
_G['GameTooltip']:Hide()
end
---<<<Show Gem on mouse over>>>---
function Armory:Gem_OnEnter()
if E.db.sle.armory[self.frame].enable and self.Link then --Only do stuff if armory is enabled or the gem is present
_G['GameTooltip']:SetOwner(self, 'ANCHOR_RIGHT')
_G['GameTooltip']:SetHyperlink(self.Link)
_G['GameTooltip']:Show()
end
end
---<<<Show what the fuck is wrong with this item>>>---
function Armory:Warning_OnEnter()
if E.db.sle.armory[self.frame].enable and self.Reason then --Only do stuff if armory is enabled and something is actually missing
_G['GameTooltip']:SetOwner(self, 'ANCHOR_RIGHT')
_G['GameTooltip']:AddLine(self.Reason, 1, 1, 1)
_G['GameTooltip']:Show()
end
end
--<<<<<Transmog functions>>>>>--
function Armory:Transmog_OnEnter()
if not self.Link then return end
self.Texture:SetVertexColor(1, .8, 1)
_G['GameTooltip']:SetOwner(self, 'ANCHOR_RIGHT')
if self.isInspect then
local inspectLink = select(2, GetItemInfo(self.Link)) --In case the client actually decides to give us the info
if inspectLink then
_G['GameTooltip']:SetHyperlink(inspectLink)
else
_G['GameTooltip']:SetText(self.Link)
end
else
_G['GameTooltip']:SetHyperlink(self.Link)
end
_G['GameTooltip']:Show()
end
function Armory:Transmog_OnLeave()
self.Texture:SetVertexColor(1, .5, 1)
_G['GameTooltip']:Hide()
end
function Armory:Transmog_OnClick()
local ItemName, ItemLink = GetItemInfo(self.Link)
if not IsShiftKeyDown() then
SetItemRef(ItemLink, ItemLink, 'LeftButton')
else
HandleModifiedItemClick(ItemLink)
-- if HandleModifiedItemClick(ItemLink) then
-- print('test')
-- elseif _G.BrowseName and _G.BrowseName:IsVisible() then
-- print('test2')
-- AuctionFrameBrowse_Reset(_G.BrowseResetButton)
-- _G.BrowseName:SetText(ItemName)
-- _G.BrowseName:SetFocus()
-- end
end
end
function Armory:CheckForMissing(which, Slot, iLvl, gems, essences, enchant, primaryStat)
if not Slot['SLE_Warning'] then return end --Shit happens
Slot['SLE_Warning'].Reason = nil --Clear message, cause disabling armory doesn't affect those otherwise
local window = strlower(which)
if not (E.db.sle.armory[window] and E.db.sle.armory[window].enable and E.db.sle.armory[window].showWarning) then Slot['SLE_Warning']:Hide(); return end --if something is disdbled
local SlotName = gsub(Slot:GetName(), which, '')
if not SlotName then return end --No slot?
local noChant, noGem = false, false
if iLvl and (Armory.Constants.EnchantableSlots[SlotName] == true or Armory.Constants.EnchantableSlots[SlotName] == primaryStat) and not enchant then --Item should be enchanted, but no string actually sent. This bastard is slacking
local classID, subclassID = select(12, GetItemInfo(Slot.itemLink))
if (classID == 4 and subclassID == 6) or (classID == 4 and subclassID == 0 and Slot.ID == 17) then --Shields are special
noChant = false
else
noChant = true
end
end
if gems and Slot.ID ~= 2 then --If gems found and not neck
for i = 1, Armory.Constants.MaxGemSlots do
local texture = Slot['textureSlot'..i]
if (texture and texture:GetTexture()) and (Slot['SLE_Gem'..i] and not Slot['SLE_Gem'..i].Link) then noGem = true; break end --If there is a texture (e.g. actual slot), but no link = no gem installed
end
end
if (noChant or noGem) then --If anything us missing
local message = ''
if noGem then message = message..'|cffff0000'..L["Empty Socket"]..'|r\n' end
if noChant then message = message..'|cffff0000'..L["Not Enchanted"]..'|r\n' end
Slot['SLE_Warning'].Reason = message or nil
Slot['SLE_Warning']:Show()
if Slot.SLE_Gradient then Slot.SLE_Gradient:SetVertexColor(1, 0, 0) end
else
Slot['SLE_Warning']:Hide()
end
end
function Armory:UpdateInspectInfo()
if not _G['InspectFrame'] then return end --In case update for frame is called before it is actually created
if not Armory.Constants.Inspect_Defaults_Cached then
Armory:BuildFrameDefaultsCache('Inspect')
IA:LoadAndSetup()
end
if E.db.sle.armory.inspect.enable then M:UpdatePageInfo(_G['InspectFrame'], 'Inspect') end
if not E.db.general.itemLevel.displayInspectInfo then M:ClearPageInfo(_G['InspectFrame'], 'Inspect') end
end
function Armory:UpdateCharacterInfo(event)
if event == 'CRITERIA_UPDATE' and InCombatLockdown() then return end
if E.db.sle.armory.character.enable then
M:UpdatePageInfo(_G['CharacterFrame'], 'Character')
end
if not E.db.general.itemLevel.displayCharacterInfo then
M:ClearPageInfo(_G['CharacterFrame'], 'Character')
end
end
function Armory:ToggleItemLevelInfo()
if E.db.general.itemLevel.displayCharacterInfo then
-- Armory:UnregisterEvent('AZERITE_ESSENCE_UPDATE')
Armory:UnregisterEvent('CRITERIA_UPDATE')
Armory:UnregisterEvent('PLAYER_EQUIPMENT_CHANGED')
Armory:UnregisterEvent('UPDATE_INVENTORY_DURABILITY')
-- Armory:UnregisterEvent('PLAYER_AVG_ITEM_LEVEL_UPDATE')
else
-- Armory:RegisterEvent('AZERITE_ESSENCE_UPDATE', 'UpdateCharacterInfo')
Armory:RegisterEvent('CRITERIA_UPDATE', 'UpdateCharacterInfo')
Armory:RegisterEvent('PLAYER_EQUIPMENT_CHANGED', 'UpdateCharacterInfo')
Armory:RegisterEvent('UPDATE_INVENTORY_DURABILITY', 'UpdateCharacterInfo')
-- Armory:RegisterEvent('PLAYER_AVG_ITEM_LEVEL_UPDATE', 'UpdateCharacterItemLevel')
end
if _G['InspectFrame'] and _G['InspectFrame']:IsShown() and Armory:CheckOptions('Inspect') and E.db.general.itemLevel.displayInspectInfo then
M:UpdateInspectInfo()
else
M:ClearPageInfo(_G['InspectFrame'], 'Inspect')
end
end
function Armory:CheckOptions(which)
if not E.private.skins.blizzard.enable then return false end
if (which == 'Character' and not E.private.skins.blizzard.character) or (which == 'Inspect' and not E.private.skins.blizzard.inspect) then return false end
return true
end
function Armory:Initialize()
if not Armory:CheckOptions() then return end
--May be usefull later
Armory.ScanTT = CreateFrame('GameTooltip', 'SLE_Armory_ScanTT', nil, 'GameTooltipTemplate')
Armory.ScanTT:SetOwner(UIParent, 'ANCHOR_NONE')
hooksecurefunc(M, 'UpdatePageInfo', Armory.UpdatePageInfo)
hooksecurefunc(M, 'UpdatePageStrings', Armory.UpdatePageStrings)
hooksecurefunc(M, 'ToggleItemLevelInfo', Armory.ToggleItemLevelInfo)
hooksecurefunc(M, 'UpdateInspectPageFonts', Armory.UpdateSharedStringsFonts)
hooksecurefunc(M, 'CreateSlotStrings', Armory.CreateSlotStrings)
Armory:ToggleItemLevelInfo()
if Armory:CheckOptions('Character') then
CA = SLE.Armory_Character
SA = SLE.Armory_Stats
Armory:BuildFrameDefaultsCache('Character')
hooksecurefunc(M, 'UpdateCharacterInfo', Armory.UpdateCharacterInfo)
CA:LoadAndSetup()
SA:LoadAndSetup()
Armory:UpdateCharacterInfo()
end
if Armory:CheckOptions('Inspect') then
IA = SLE.Armory_Inspect
hooksecurefunc(M, 'UpdateInspectInfo', Armory.UpdateInspectInfo)
IA:PreSetup()
end
function Armory:ForUpdateAll()
SLE.Armory_Character:ToggleArmory()
M:UpdatePageInfo(_G.CharacterFrame, 'Character')
if not E.db.general.itemLevel.displayCharacterInfo then M:ClearPageInfo(_G.CharacterFrame, 'Character') end
SLE.Armory_Inspect:ToggleArmory()
M:UpdatePageInfo(_G.InspectFrame, "Inspect") --Putting this under the elv's option check just breaks the shit out of the frame
if not E.db.general.itemLevel.displayInspectInfo then M:ClearPageInfo(_G.InspectFrame, "Inspect") end --Clear the infos if those are actually not supposed to be shown.
end
_G.CharacterFrame:HookScript('OnShow', function()
if not E.db.general.itemLevel.displayCharacterInfo then
M:ClearPageInfo(_G.CharacterFrame, 'Character')
-- SLE:Print("Charcter Page Hook Done")
end
end)
--Move Pawn buttons. Cause Pawn buttons happen to be overlapped by some shit
if SLE._Compatibility["Pawn"] then
PawnUI_InventoryPawnButton:SetFrameLevel(PawnUI_InventoryPawnButton:GetFrameLevel() + 5)
hooksecurefunc("PawnUI_InventoryPawnButton_Move", function()
if PawnCommon.ButtonPosition == PawnButtonPositionRight then
PawnUI_InventoryPawnButton:ClearAllPoints()
if PaperDollFrame.ExpandButton then --Try not to break Pawn's DCS innate compatibility
PawnUI_InventoryPawnButton:SetPoint("TOPRIGHT", "CharacterTrinket1Slot", "BOTTOMRIGHT", -31, -8)
else
PawnUI_InventoryPawnButton:SetPoint("TOPRIGHT", "CharacterTrinket1Slot", "BOTTOMRIGHT", -1, -8)
end
end
end)
end
end
SLE:RegisterModule(Armory:GetName())