Files
Andrew6810 60ef8a38af init
2022-10-21 07:09:01 -07:00

198 lines
5.7 KiB
Lua

local E, L, V, P, G = unpack(select(2, ...)) --Import: Engine, Locales, PrivateDB, ProfileDB, GlobalDB
local S = E:GetModule("Skins")
--Lua functions
local _G = _G
local unpack, select = unpack, select
--WoW API / Variables
local GetItemQualityColor = GetItemQualityColor
local GetLootRollItemInfo = GetLootRollItemInfo
local GetLootSlotInfo = GetLootSlotInfo
local IsFishingLoot = IsFishingLoot
local LootSlotIsCoin = LootSlotIsCoin
local LootSlotIsItem = LootSlotIsItem
local UnitIsDead = UnitIsDead
local UnitIsFriend = UnitIsFriend
local UnitName = UnitName
local ITEMS = ITEMS
local LOOT = LOOT
local LOOTFRAME_NUMBUTTONS = LOOTFRAME_NUMBUTTONS
S:AddCallback("Skin_Loot", function()
if E.private.general.loot then return end
if not E.private.skins.blizzard.enable or not E.private.skins.blizzard.loot then return end
local LootFrame = _G.LootFrame
LootFrame:StripTextures()
LootFrame:CreateBackdrop("Transparent")
LootFrame.backdrop:Point("TOPLEFT", 16, -54)
LootFrame.backdrop:Point("BOTTOMRIGHT", -77, 8)
S:SetBackdropHitRect(LootFrame, nil, true)
LootFramePortraitOverlay:SetParent(E.HiddenFrame)
S:HandleNextPrevButton(LootFrameUpButton)
LootFrameUpButton:Point("BOTTOMLEFT", 25, 20)
LootFrameUpButton:Size(24)
S:HandleNextPrevButton(LootFrameDownButton)
LootFrameDownButton:Point("BOTTOMLEFT", 147, 21)
LootFrameDownButton:Size(24)
LootFrame:EnableMouseWheel(true)
LootFrame:SetScript("OnMouseWheel", function(_, value)
if value > 0 then
if LootFrameUpButton:IsShown() and LootFrameUpButton:IsEnabled() == 1 then
LootFrame_PageUp()
end
else
if LootFrameDownButton:IsShown() and LootFrameDownButton:IsEnabled() == 1 then
LootFrame_PageDown()
end
end
end)
S:HandleCloseButton(LootCloseButton)
LootCloseButton:Point("CENTER", LootFrame, "TOPRIGHT", -88, -65)
for i = 1, LootFrame:GetNumRegions() do
local region = select(i, LootFrame:GetRegions())
if region:GetObjectType() == "FontString" then
if region:GetText() == ITEMS then
LootFrame.Title = region
end
end
end
LootFrame.Title:ClearAllPoints()
LootFrame.Title:Point("TOPLEFT", LootFrame.backdrop, "TOPLEFT", 4, -4)
LootFrame.Title:SetJustifyH("LEFT")
LootFrame.Title:SetWordWrap(false)
LootFrame.Title:SetWidth(142)
LootFrame:HookScript("OnShow", function(self)
if IsFishingLoot() then
self.Title:SetText(L["Fishy Loot"])
elseif not UnitIsFriend("player", "target") and UnitIsDead("target") then
self.Title:SetText(UnitName("target"))
else
self.Title:SetText(LOOT)
end
end)
for i = 1, LOOTFRAME_NUMBUTTONS do
local button = _G["LootButton"..i]
local nameFrame = _G["LootButton"..i.."NameFrame"]
S:HandleItemButton(button, true)
button.bg = CreateFrame("Frame", nil, button)
button.bg:SetTemplate("Default")
button.bg:Point("TOPLEFT", 40, 0)
button.bg:Point("BOTTOMRIGHT", 110, 0)
button.bg:SetFrameLevel(button.bg:GetFrameLevel() - 1)
local questTexture = button:CreateTexture(nil, "OVERLAY")
questTexture:SetInside()
questTexture:SetTexture(E.Media.Textures.BagQuestIcon)
button.questTexture = questTexture
nameFrame:Hide()
end
hooksecurefunc("LootFrame_UpdateButton", function(index)
local numLootItems = LootFrame.numLootItems
local numLootToShow = LOOTFRAME_NUMBUTTONS
if numLootItems > LOOTFRAME_NUMBUTTONS then
numLootToShow = numLootToShow - 1
end
local slot = (numLootToShow * (LootFrame.page - 1)) + index
if slot <= numLootItems then
if index <= numLootToShow and (LootSlotIsItem(slot) or LootSlotIsCoin(slot)) then
local texture, _, _, quality, _, isQuestItem, questId, isActive = GetLootSlotInfo(slot)
if texture then
local button = _G["LootButton"..index]
if questId and not isActive then
button.backdrop:SetBackdropBorderColor(1.0, 1.0, 0.0)
button.questTexture:Show()
return
elseif questId or isQuestItem then
button.backdrop:SetBackdropBorderColor(1.0, 0.3, 0.3)
elseif quality then
button.backdrop:SetBackdropBorderColor(GetItemQualityColor(quality))
else
button.backdrop:SetBackdropBorderColor(unpack(E.media.bordercolor))
end
button.questTexture:Hide()
end
end
end
end)
end)
S:AddCallback("Skin_LootRoll", function()
if E.private.general.lootRoll then return end
if not E.private.skins.blizzard.enable or not E.private.skins.blizzard.lootRoll then return end
local function OnShow(self)
local frameName = self:GetName()
local iconFrame = _G[frameName.."IconFrame"]
local statusBar = _G[frameName.."Timer"]
local _, _, _, quality = GetLootRollItemInfo(self.rollID)
local r, g, b = GetItemQualityColor(quality)
self:SetTemplate("Transparent")
iconFrame:SetBackdropBorderColor(r, g, b)
statusBar:SetStatusBarColor(r, g, b)
end
for i = 1, NUM_GROUP_LOOT_FRAMES do
local frameName = "GroupLootFrame"..i
local frame = _G[frameName]
local iconFrame = _G[frameName.."IconFrame"]
local icon = _G[frameName.."IconFrameIcon"]
local statusBar = _G[frameName.."Timer"]
local decoration = _G[frameName.."Decoration"]
frame:EnableMouse(true)
frame:StripTextures()
frame:ClearAllPoints()
if i == 1 then
frame:Point("TOP", AlertFrameHolder, "BOTTOM", 0, -4)
else
frame:Point("TOP", _G["GroupLootFrame"..i - 1], "BOTTOM", 0, -4)
end
iconFrame:SetTemplate("Default")
iconFrame:StyleButton()
icon:SetInside()
icon:SetTexCoord(unpack(E.TexCoords))
statusBar:StripTextures()
statusBar:CreateBackdrop("Default")
statusBar:SetStatusBarTexture(E.media.normTex)
E:RegisterStatusBar(statusBar)
decoration:SetTexture("Interface\\DialogFrame\\UI-DialogBox-Gold-Dragon")
decoration:Size(130)
decoration:Point("TOPLEFT", -37, 20)
S:HandleCloseButton(_G[frameName.."PassButton"], frame)
_G[frameName.."Corner"]:Hide()
frame:HookScript("OnShow", OnShow)
end
end)