From baf7b1426d249979a62ce1cc880b815ac734de30 Mon Sep 17 00:00:00 2001 From: Arstraea Date: Wed, 11 Mar 2015 19:16:22 +0900 Subject: [PATCH] BOMB : Time remain 10 ----------------------------------- Adapting SLE's changes and some modifying, cleaning. --- .../Armory/CharacterArmory/CharacterArmory.lua | 255 +++++++++++--------- ElvUI_SLE/modules/Armory/Constants.lua | 2 +- .../modules/Armory/Media/Textures/Gradation.tga | Bin 0 -> 65580 bytes .../Armory/Media/Textures/Warning-Small.blp | Bin 0 -> 1540 bytes 4 files changed, 138 insertions(+), 119 deletions(-) create mode 100644 ElvUI_SLE/modules/Armory/Media/Textures/Gradation.tga create mode 100644 ElvUI_SLE/modules/Armory/Media/Textures/Warning-Small.blp diff --git a/ElvUI_SLE/modules/Armory/CharacterArmory/CharacterArmory.lua b/ElvUI_SLE/modules/Armory/CharacterArmory/CharacterArmory.lua index b451d9e..4c6cd15 100644 --- a/ElvUI_SLE/modules/Armory/CharacterArmory/CharacterArmory.lua +++ b/ElvUI_SLE/modules/Armory/CharacterArmory/CharacterArmory.lua @@ -207,8 +207,9 @@ function CA:Setup_CharacterArmory() --<< Background >>-- self.BG = self:CreateTexture(nil, 'OVERLAY') - self.BG:SetInside() - self.BG:SetTexture(KF.db.Modules.Armory.Character.BackgroundImage) + self.BG:SetPoint('TOPLEFT', self, -7, -20) + self.BG:SetPoint('BOTTOMRIGHT', self, 7, 2) + self:UpdateCharacterBG() --<< Change Model Frame's frameLevel >>-- CharacterModelFrame:SetFrameLevel(self:GetFrameLevel() + 2) @@ -237,24 +238,53 @@ function CA:Setup_CharacterArmory() -- Gradation Slot.Gradation = Slot:CreateTexture(nil, 'OVERLAY') Slot.Gradation:SetInside() - Slot.Gradation:SetTexture('Interface\\AddOns\\ElvUI_KnightFrame\\Media\\Graphics\\Gradation') + Slot.Gradation:SetTexture('Interface\\AddOns\\ElvUI_SLE\\modules\\Armory\\Media\\Textures\\Gradation') if Slot.Direction == 'LEFT' then Slot.Gradation:SetTexCoord(0, 1, 0, 1) else Slot.Gradation:SetTexCoord(1, 0, 0, 1) end + if not KF.db.Modules.Armory.Character.Gradation.DisplayGradation then + Slot.Gradation:Hide() + end + if SlotName ~= 'ShirtSlot' and SlotName ~= 'TabardSlot' then -- Item Level - KF:TextSetting(Slot, nil, { Tag = 'ItemLevel', FontSize = 10, directionH = Slot.Direction }, 'TOP'..Slot.Direction, _G['Character'..SlotName], 'TOP'..(Slot.Direction == 'LEFT' and 'RIGHT' or 'LEFT'), Slot.Direction == 'LEFT' and 2 or -2, -1) + KF:TextSetting(Slot, nil, { Tag = 'ItemLevel', + Font = E.db.sle.Armory.Character.Level.Font, + FontSize = E.db.sle.Armory.Character.Level.FontSize, + FontStyle = E.db.sle.Armory.Character.Level.FontStyle, + directionH = Slot.Direction + }, 'TOP'..Slot.Direction, _G['Character'..SlotName], 'TOP'..(Slot.Direction == 'LEFT' and 'RIGHT' or 'LEFT'), Slot.Direction == 'LEFT' and 2 or -2, -1) + + if not E.db.sle.Armory.Character.Level.DisplayLevel then + Slot.ItemLevel:Hide() + end -- Enchantment Name - KF:TextSetting(Slot, nil, { Tag = 'ItemEnchant', FontSize = 8, directionH = Slot.Direction }, Slot.Direction, _G['Character'..SlotName], Slot.Direction == 'LEFT' and 'RIGHT' or 'LEFT', Slot.Direction == 'LEFT' and 2 or -2, 1) + KF:TextSetting(Slot, nil, { Tag = 'ItemEnchant', + Font = E.db.sle.Armory.Character.Enchant.Font, + FontSize = E.db.sle.Armory.Character.Enchant.FontSize, + FontStyle = E.db.sle.Armory.Character.Enchant.FontStyle, + directionH = Slot.Direction + }, Slot.Direction, _G['Character'..SlotName], Slot.Direction == 'LEFT' and 'RIGHT' or 'LEFT', Slot.Direction == 'LEFT' and 2 or -2, 1) + + if E.db.sle.Armory.Character.DisplayWhenMouseoverOnly then + Slot.ItemEnchant:SetDrawLayer('HIGHLIGHT') + else + Slot.ItemEnchant:SetDrawLayer('OVERLAY') + end + + if not E.db.sle.Armory.Character.Enchant.DisplayEnchant then + Slot.ItemEnchant:Hide() + end + Slot.EnchantWarning = CreateFrame('Button', nil, Slot) - Slot.EnchantWarning:Size(12) + Slot.EnchantWarning:Size(E.db.sle.Armory.Character.ItemEnchant.WarningSize) Slot.EnchantWarning.Texture = Slot.EnchantWarning:CreateTexture(nil, 'OVERLAY') Slot.EnchantWarning.Texture:SetInside() - Slot.EnchantWarning.Texture:SetTexture('Interface\\AddOns\\ElvUI_KnightFrame\\Media\\Graphics\\Warning-Small') + Slot.EnchantWarning.Texture:SetTexture('Interface\\AddOns\\ElvUI_SLE\\modules\\Armory\\Media\\Textures\\Warning-Small') Slot.EnchantWarning:Point(Slot.Direction, Slot.ItemEnchant, Slot.Direction == 'LEFT' and 'RIGHT' or 'LEFT', Slot.Direction == 'LEFT' and 3 or -3, 0) Slot.EnchantWarning:SetScript('OnEnter', self.OnEnter) Slot.EnchantWarning:SetScript('OnLeave', self.OnLeave) @@ -265,7 +295,7 @@ function CA:Setup_CharacterArmory() -- Gem Socket for i = 1, MAX_NUM_SOCKETS do Slot['Socket'..i] = CreateFrame('Frame', nil, Slot) - Slot['Socket'..i]:Size(12) + Slot['Socket'..i]:Size(E.db.sle.Armory.Character.ItemGem.SocketSize) Slot['Socket'..i]:SetBackdrop({ bgFile = E.media.blankTex, edgeFile = E.media.blankTex, @@ -302,11 +332,11 @@ function CA:Setup_CharacterArmory() Slot.Socket3:Point(Slot.Direction, Slot.Socket2, Slot.Direction == 'LEFT' and 'RIGHT' or 'LEFT', Slot.Direction == 'LEFT' and 1 or -1, 0) Slot.SocketWarning = CreateFrame('Button', nil, Slot) - Slot.SocketWarning:Size(12) + Slot.SocketWarning:Size(E.db.sle.Armory.Character.ItemEnchant.WarningSize) Slot.SocketWarning:RegisterForClicks('AnyUp') Slot.SocketWarning.Texture = Slot.SocketWarning:CreateTexture(nil, 'OVERLAY') Slot.SocketWarning.Texture:SetInside() - Slot.SocketWarning.Texture:SetTexture('Interface\\AddOns\\ElvUI_KnightFrame\\Media\\Graphics\\Warning-Small') + Slot.SocketWarning.Texture:SetTexture('Interface\\AddOns\\ElvUI_SLE\\modules\\Armory\\Media\\Textures\\Warning-Small') Slot.SocketWarning:SetScript('OnEnter', self.OnEnter) Slot.SocketWarning:SetScript('OnLeave', self.OnLeave) @@ -322,7 +352,7 @@ function CA:Setup_CharacterArmory() Slot.TransmogrifyAnchor.Texture = Slot.TransmogrifyAnchor:CreateTexture(nil, 'OVERLAY') Slot.TransmogrifyAnchor.Texture:SetInside() - Slot.TransmogrifyAnchor.Texture:SetTexture('Interface\\AddOns\\ElvUI_KnightFrame\\Media\\Graphics\\Anchor') + Slot.TransmogrifyAnchor.Texture:SetTexture('Interface\\AddOns\\ElvUI_SLE\\modules\\Armory\\Media\\Textures\\Anchor') Slot.TransmogrifyAnchor.Texture:SetVertexColor(1, .5, 1) if Slot.Direction == 'LEFT' then @@ -412,7 +442,7 @@ function CA:Update_Gear() if Prof2 and Info.Armory_Constants.ProfessionList[Prof2] then self.PlayerProfession[(Info.Armory_Constants.ProfessionList[Prof2].Key)] = Prof2_Level end ]] local ErrorDetected, NeedUpdate, NeedUpdateList, R, G, B - local Slot, ItemLink, ItemData, ItemRarity, BasicItemLevel, TrueItemLevel, ItemUpgradeID, ItemTexture, IsEnchanted, UsableEffect, CurrentLineText, GemID, GemCount_Default, GemCount_Enable, GemCount_Now, GemCount, IsTransmogrified, TransmogrifyItemID + local Slot, ItemLink, ItemData, ItemRarity, BasicItemLevel, TrueItemLevel, ItemUpgradeID, ItemType, ItemTexture, IsEnchanted, UsableEffect, CurrentLineText, GemID, GemCount_Default, GemCount_Enable, GemCount_Now, GemCount, IsTransmogrified, TransmogrifyItemID for _, SlotName in pairs(self.GearUpdated or Info.Armory_Constants.GearList) do if not (SlotName == 'ShirtSlot' or SlotName == 'TabardSlot') then @@ -420,7 +450,7 @@ function CA:Update_Gear() ItemLink = GetInventoryItemLink('player', Slot.ID) do --<< Clear Setting >>-- - NeedUpdate, ErrorDetected, TrueItemLevel, IsEnchanted, UsableEffect, ItemUpgradeID, ItemTexture = nil, nil, nil, nil, nil, nil, nil + NeedUpdate, ErrorDetected, TrueItemLevel, IsEnchanted, UsableEffect, ItemUpgradeID, ItemType, ItemTexture = nil, nil, nil, nil, nil, nil, nil, nil Slot.ItemLevel:SetText(nil) Slot.ItemEnchant:SetText(nil) @@ -498,9 +528,12 @@ function CA:Update_Gear() end if ItemTexture or GemID then - Slot['Socket'..i]:Show() + if E.db.sle.Armory.Character.Gem.DisplaySocket then + Slot['Socket'..i]:Show() + Slot.SocketWarning:Point(Slot.Direction, Slot['Socket'..i], (Slot.Direction == 'LEFT' and 'RIGHT' or 'LEFT'), Slot.Direction == 'LEFT' and 3 or -3, 0) + end + GemCount_Now = GemCount_Now + 1 - Slot.SocketWarning:Point(Slot.Direction, Slot['Socket'..i], (Slot.Direction == 'LEFT' and 'RIGHT' or 'LEFT'), Slot.Direction == 'LEFT' and 3 or -3, 0) if GemID then GemCount = GemCount + 1 @@ -523,7 +556,7 @@ function CA:Update_Gear() end end - _, _, ItemRarity, BasicItemLevel, _, _, _, _, _, ItemTexture = GetItemInfo(ItemLink) + _, _, ItemRarity, BasicItemLevel, _, _, _, _, ItemType, ItemTexture = GetItemInfo(ItemLink) R, G, B = GetItemQualityColor(ItemRarity) ItemUpgradeID = ItemLink:match(':(%d+)\124h%[') @@ -537,16 +570,24 @@ function CA:Update_Gear() elseif CurrentLineText:find(Info.Armory_Constants.ItemLevelKey) then TrueItemLevel = tonumber(CurrentLineText:match(Info.Armory_Constants.ItemLevelKey)) elseif CurrentLineText:find(Info.Armory_Constants.EnchantKey) then - CurrentLineText = CurrentLineText:match(Info.Armory_Constants.EnchantKey) -- Get enchant string - CurrentLineText = gsub(CurrentLineText, ITEM_MOD_AGILITY_SHORT, AGI) - CurrentLineText = gsub(CurrentLineText, ITEM_MOD_SPIRIT_SHORT, SPI) - CurrentLineText = gsub(CurrentLineText, ITEM_MOD_STAMINA_SHORT, STA) - CurrentLineText = gsub(CurrentLineText, ITEM_MOD_STRENGTH_SHORT, STR) - CurrentLineText = gsub(CurrentLineText, ITEM_MOD_INTELLECT_SHORT, INT) - CurrentLineText = gsub(CurrentLineText, ITEM_MOD_CRIT_RATING_SHORT, CRIT_ABBR) -- Critical is too long - CurrentLineText = gsub(CurrentLineText, ' + ', '+') -- Remove space - - Slot.ItemEnchant:SetText('|cffceff00'..CurrentLineText) + if E.db.sle.Armory.Character.Enchant.DisplayEnchant then + CurrentLineText = CurrentLineText:match(Info.Armory_Constants.EnchantKey) -- Get enchant string + CurrentLineText = gsub(CurrentLineText, ITEM_MOD_AGILITY_SHORT, AGI) + CurrentLineText = gsub(CurrentLineText, ITEM_MOD_SPIRIT_SHORT, SPI) + CurrentLineText = gsub(CurrentLineText, ITEM_MOD_STAMINA_SHORT, STA) + CurrentLineText = gsub(CurrentLineText, ITEM_MOD_STRENGTH_SHORT, STR) + CurrentLineText = gsub(CurrentLineText, ITEM_MOD_INTELLECT_SHORT, INT) + CurrentLineText = gsub(CurrentLineText, ITEM_MOD_CRIT_RATING_SHORT, CRIT_ABBR) -- Critical is too long + CurrentLineText = gsub(CurrentLineText, ' + ', '+') -- Remove space + + if L.Armory_ReplaceEnchantString and type(L.Armory_ReplaceEnchantString) == 'table' then + for Old, New in pairs(L.Armory_ReplaceEnchantString) do + CurrentLineText = gsub(CurrentLineText, Old, New) + end + end + + Slot.ItemEnchant:SetText('|cffceff00'..CurrentLineText) + end IsEnchanted = true elseif CurrentLineText:find(ITEM_SPELL_TRIGGER_ONUSE) then @@ -567,8 +608,8 @@ function CA:Update_Gear() Slot.ItemLevel:SetText((not TrueItemLevel or BasicItemLevel == TrueItemLevel) and BasicItemLevel or (Slot.Direction == 'LEFT' and TrueItemLevel or '')..(ItemUpgradeID and (Slot.Direction == 'LEFT' and ' ' or '')..(Info.Armory_Constants.UpgradeColor[ItemUpgradeID] or '|cffaaaaaa')..'(+'..ItemUpgradeID..')|r'..(Slot.Direction == 'RIGHT' and ' ' or '') or '')..(Slot.Direction == 'RIGHT' and TrueItemLevel or '')) end - if KF.db.Modules.Armory.Character.NoticeMissing ~= false then - if not IsEnchanted and Info.Armory_Constants.EnchantableSlots[SlotName] then + if E.db.sle.Armory.Character.NoticeMissing ~= false then + if not IsEnchanted and Info.Armory_Constants.EnchantableSlots[SlotName] and not (SlotName ~= 'SecondaryHandSlot' and ItemType ~= 'INVTYPE_WEAPON' and ItemType ~= 'INVTYPE_WEAPONOFFHAND' and ItemType ~= 'INVTYPE_RANGEDRIGHT') then ErrorDetected = true Slot.EnchantWarning:Show() Slot.ItemEnchant:SetText('|cffff0000'..L['Not Enchanted']) @@ -593,7 +634,7 @@ function CA:Update_Gear() end --[[ Check Error - if KF.db.Modules.Armory.Character.NoticeMissing ~= false then + if E.db.sle.Armory.Character.NoticeMissing ~= false then if (not IsEnchanted and Info.Armory_Constants.EnchantableSlots[SlotName]) or ((SlotName == 'Finger0Slot' or SlotName == 'Finger1Slot') and self.PlayerProfession.Enchanting and self.PlayerProfession.Enchanting >= 550 and not IsEnchanted) then ErrorDetected = true Slot.EnchantWarning:Show() @@ -684,10 +725,10 @@ function CA:Update_Gear() end -- Change Gradation - if ErrorDetected and KF.db.Modules.Armory.Character.NoticeMissing ~= false then + if ErrorDetected and E.db.sle.Armory.Character.NoticeMissing ~= false then Slot.Gradation:SetVertexColor(1, 0, 0) else - Slot.Gradation:SetVertexColor(unpack(KF.db.Modules.Armory.Character.GradationColor)) + Slot.Gradation:SetVertexColor(unpack(E.db.sle.Armory.Character.Gradation.Color)) end if NeedUpdate then @@ -708,92 +749,70 @@ function CA:Update_Gear() end -KF.Modules[#KF.Modules + 1] = 'CharacterArmory' -KF.Modules.CharacterArmory = function(RemoveOrder) - if not RemoveOrder and KF.db.Enable ~= false and KF.db.Modules.Armory and KF.db.Modules.Armory.Character and KF.db.Modules.Armory.Character.Enable ~= false then - Info.CharacterArmory_Activate = true - - -- Setting frame - CharacterFrame:SetHeight(444) - - -- Move right equipment slots - CharacterHandsSlot:SetPoint('TOPRIGHT', CharacterFrameInsetRight, 'TOPLEFT', -4, -2) - - -- Move bottom equipment slots - CharacterMainHandSlot:SetPoint('BOTTOMLEFT', PaperDollItemsFrame, 'BOTTOMLEFT', 185, 14) - - if CA.Setup_CharacterArmory then - CA:Setup_CharacterArmory() - else - CA:Show() - end - CA:CharacterArmory_DataSetting() - - -- Model Frame - CharacterModelFrame:ClearAllPoints() - CharacterModelFrame:SetPoint('TOPLEFT', CharacterHeadSlot) - CharacterModelFrame:SetPoint('RIGHT', CharacterHandsSlot) - CharacterModelFrame:SetPoint('BOTTOM', CharacterMainHandSlot) - CharacterModelFrame.BackgroundTopLeft:Hide() - CharacterModelFrame.BackgroundTopRight:Hide() - CharacterModelFrame.BackgroundBotLeft:Hide() - CharacterModelFrame.BackgroundBotRight:Hide() - - if PaperDollFrame:IsShown() then - CharacterFrame:SetWidth(CharacterFrame.Expanded and 650 or 448) - CharacterFrameInsetRight:SetPoint('TOPLEFT', CharacterFrameInset, 'TOPRIGHT', 110, 0) - CharacterFrameExpandButton:SetPoint('BOTTOMRIGHT', CharacterFrameInsetRight, 'BOTTOMLEFT', 0, 1) - end - - -- Run KnightArmory - CA:RegisterEvent('SOCKET_INFO_SUCCESS') - CA:RegisterEvent('PLAYER_EQUIPMENT_CHANGED') - CA:RegisterEvent('UNIT_INVENTORY_CHANGED') - CA:RegisterEvent('ITEM_UPGRADE_MASTER_UPDATE') - CA:RegisterEvent('TRANSMOGRIFY_UPDATE') - CA:RegisterEvent('COMBAT_LOG_EVENT_UNFILTERED') - CA:RegisterEvent('UPDATE_INVENTORY_DURABILITY') - CA:RegisterEvent('PLAYER_ENTERING_WORLD') - - --[[ - KF_KnightArmory.CheckButton:Show() - KF_KnightArmory_NoticeMissing:EnableMouse(true) - KF_KnightArmory_NoticeMissing.text:SetTextColor(1, 1, 1) - KF_KnightArmory_NoticeMissing.CheckButton:SetTexture('Interface\\Buttons\\UI-CheckBox-Check') - ]] - elseif Info.CharacterArmory_Activate then - Info.CharacterArmory_Activate = nil - - -- Setting frame to default - CharacterFrame:SetHeight(424) - CharacterFrame:SetWidth(PaperDollFrame:IsShown() and CharacterFrame.Expanded and CHARACTERFRAME_EXPANDED_WIDTH or PANEL_DEFAULT_WIDTH) - CharacterFrameInsetRight:SetPoint(unpack(InsetDefaultPoint)) - CharacterFrameExpandButton:SetPoint(unpack(ExpandButtonDefaultPoint)) - - -- Move rightside equipment slots to default position - CharacterHandsSlot:SetPoint('TOPRIGHT', CharacterFrameInset, 'TOPRIGHT', -4, -2) - - -- Move bottom equipment slots to default position - CharacterMainHandSlot:SetPoint('BOTTOMLEFT', PaperDollItemsFrame, 'BOTTOMLEFT', 130, 16) - - -- Model Frame - CharacterModelFrame:ClearAllPoints() - CharacterModelFrame:Size(231, 320) - CharacterModelFrame:SetPoint('TOPLEFT', PaperDollFrame, 'TOPLEFT', 52, -66) - CharacterModelFrame.BackgroundTopLeft:Show() - CharacterModelFrame.BackgroundTopRight:Show() - CharacterModelFrame.BackgroundBotLeft:Show() - CharacterModelFrame.BackgroundBotRight:Show() - - -- Turn off ArmoryFrame - CA:Hide() - CA:UnregisterAllEvents() - - --[[ - KF_KnightArmory.CheckButton:Hide() - KF_KnightArmory_NoticeMissing:EnableMouse(false) - KF_KnightArmory_NoticeMissing.text:SetTextColor(0.31, 0.31, 0.31) - KF_KnightArmory_NoticeMissing.CheckButton:SetTexture('Interface\\Buttons\\UI-CheckBox-Check-Disabled') - ]] +function CA:UpdateCharacterBG() + if E.db.sle.Armory.Character.Background.SelectedBG == 'HIDE' then + self.BG:SetTexture(nil) + elseif E.db.sle.Armory.Character.Background.SelectedBG == 'CUSTOM' then + self.BG:SetTexture(E.db.sle.Armory.Character.Background.CustomAddress) + else + self.BG:SetTexture('Interface\\AddOns\\ElvUI_SLE\\modules\\Armory\\Media\\Textures'..E.db.sle.Armory.Character.Background.SelectedBG) end +end + + +function CA:StartArmoryFrame() + -- Setting frame + CharacterFrame:SetWidth(CharacterFrame.Expanded and 650 or 444) + CharacterFrameInsetRight:SetPoint('TOPLEFT', CharacterFrameInset, 'TOPRIGHT', 110, 0) + CharacterFrameExpandButton:SetPoint('BOTTOMRIGHT', CharacterFrameInsetRight, 'BOTTOMLEFT', -3, 7) + + -- Move right equipment slots + CharacterHandsSlot:SetPoint('TOPRIGHT', CharacterFrameInsetRight, 'TOPLEFT', -4, -2) + + -- Move bottom equipment slots + CharacterMainHandSlot:SetPoint('BOTTOMLEFT', PaperDollItemsFrame, 'BOTTOMLEFT', 181, 14) + + -- Model Frame + CharacterModelFrame:ClearAllPoints() + CharacterModelFrame:SetPoint('TOPLEFT', CharacterHeadSlot) + CharacterModelFrame:SetPoint('RIGHT', CharacterHandsSlot) + CharacterModelFrame:SetPoint('BOTTOM', CharacterMainHandSlot) + CharacterModelFrame.BackgroundTopLeft:Hide() + CharacterModelFrame.BackgroundTopRight:Hide() + CharacterModelFrame.BackgroundBotLeft:Hide() + CharacterModelFrame.BackgroundBotRight:Hide() + + -- Character Control Frame + CharacterModelFrameControlFrame:ClearAllPoints() + CharacterModelFrameControlFrame:SetPoint('BOTTOM', CharacterModelFrame, 'BOTTOM', -1.5, 1) + + if CA.Setup_CharacterArmory then + CA:Setup_CharacterArmory() + else + CA:Show() + end + CA:CharacterArmory_DataSetting() + + -- Run SLE CharacterArmoryMode + CA:RegisterEvent('SOCKET_INFO_SUCCESS') + CA:RegisterEvent('PLAYER_EQUIPMENT_CHANGED') + CA:RegisterEvent('UNIT_INVENTORY_CHANGED') + CA:RegisterEvent('ITEM_UPGRADE_MASTER_UPDATE') + CA:RegisterEvent('TRANSMOGRIFY_UPDATE') + CA:RegisterEvent('COMBAT_LOG_EVENT_UNFILTERED') + CA:RegisterEvent('UPDATE_INVENTORY_DURABILITY') + CA:RegisterEvent('PLAYER_ENTERING_WORLD') + + -- For frame resizing + --[[CA.ChangeCharacterFrameWidth:SetParent(PaperDollFrame) + if PaperDollFrame:IsVisible() then + CA.ChangeCharacterFrameWidth:Show() + CharacterFrame:SetWidth(CharacterFrameInsetRight:IsShown() and 650 or 448) + end]] +end + +function CFO:Initialize() + if not E.db.sle.Armory.Character.Enable then return end + + CA:StartArmoryFrame() end \ No newline at end of file diff --git a/ElvUI_SLE/modules/Armory/Constants.lua b/ElvUI_SLE/modules/Armory/Constants.lua index 04ea495..c56f982 100644 --- a/ElvUI_SLE/modules/Armory/Constants.lua +++ b/ElvUI_SLE/modules/Armory/Constants.lua @@ -14,7 +14,7 @@ Info.Armory_Constants = { }, EnchantableSlots = { - NeckSlot = true, BackSlot = true, Finger0Slot = true, Finger1Slot = true, MainHandSlot = true + NeckSlot = true, BackSlot = true, Finger0Slot = true, Finger1Slot = true, MainHandSlot = true, SecondaryHandSlot = true }, UpgradeColor = { diff --git a/ElvUI_SLE/modules/Armory/Media/Textures/Gradation.tga b/ElvUI_SLE/modules/Armory/Media/Textures/Gradation.tga new file mode 100644 index 0000000000000000000000000000000000000000..422ce5a7f1e65d6a2b003dfa48c486841a501e7d GIT binary patch literal 65580 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 BI6VLW literal 0 HcmV?d00001 diff --git a/ElvUI_SLE/modules/Armory/Media/Textures/Warning-Small.blp b/ElvUI_SLE/modules/Armory/Media/Textures/Warning-Small.blp new file mode 100644 index 0000000000000000000000000000000000000000..e0817d3bed888d1291027886c2ccbf427bba42e1 GIT binary patch literal 1540 zcmeH^-z!657{}i;ltTFx7hG(yKVb6W(wRtdA@%M|omPGo<4%fLgs5E`5sD<8C0ERa zxb%D8FHbF=ehVk*5;N94k2X7