PHP код:
--[[
Copyright (c) 2009, CMTitan
Based on Nevcairiel's RepXPBar.lua
All rights to be transferred to Nevcairiel upon inclusion into Bartender4.
All rights reserved, otherwise.
]]
local L = LibStub("AceLocale-3.0"):GetLocale("Bartender4")
-- fetch upvalues
local Bar = Bartender4.Bar.prototype
local defaults = { profile = Bartender4:Merge({
enabled = false,
leftCap = "DWARF",
rightCap = "DWARF",
artLayout = "CLASSIC",
artSkin = "DWARF",
}, Bartender4.Bar.defaults) }
-- register module
local BlizzardArtMod = Bartender4:NewModule("BlizzardArt")
-- create prototype information
local BlizzardArt = setmetatable({}, {__index = Bar})
function BlizzardArtMod:OnInitialize()
defaults.profile.visibility.possess = false -- Overwrite one of the bar defaults
self.db = Bartender4.db:RegisterNamespace("BlizzardArt", defaults)
self:SetEnabledState(self.db.profile.enabled)
end
function BlizzardArtMod:OnEnable()
if not self.bar then
self.bar = setmetatable(Bartender4.Bar:Create("BlizzardArt", self.db.profile, L["Blizzard Art"]), {__index = BlizzardArt})
self.bar.leftCap = self.bar:CreateTexture("BlizzardArtLeftCap", "ARTWORK")
self.bar.leftCap:ClearAllPoints()
self.bar.leftCap:SetHeight(128)
self.bar.leftCap:SetWidth(128)
self.bar.leftCap:SetPoint("BOTTOM", self.bar, "TOPLEFT", -32, -48)
self.bar.rightCap = self.bar:CreateTexture("BlizzardArtRightCap", "ARTWORK")
self.bar.rightCap:ClearAllPoints()
self.bar.rightCap:SetHeight(128)
self.bar.rightCap:SetWidth(128)
self.bar.rightCap:SetTexCoord(1.0,0.0,0.0,1.0) -- Horizontal mirror
self.bar.barTex0 = self.bar:CreateTexture("BlizzardArtTex0", "ARTWORK")
self.bar.barTex0:ClearAllPoints()
self.bar.barTex0:SetHeight(43)
self.bar.barTex0:SetWidth(256)
self.bar.barTex0:SetPoint("BOTTOMLEFT", self.bar, "TOPLEFT", 0, -48)
self.bar.barTex0:SetTexCoord(0.0,1.0,0.83203125,1.0) -- Left quarter of the classic bar
self.bar.barTex1 = self.bar:CreateTexture("BlizzardArtTex1", "ARTWORK")
self.bar.barTex1:ClearAllPoints()
self.bar.barTex1:SetHeight(43)
self.bar.barTex1:SetPoint("BOTTOMLEFT", self.bar, "TOPLEFT", 256, -48)
-- Tex1b complements Tex0 and Tex1 into a complete action bar, without the small buttons next to it
-- It's actually a small repeat of the rightmost 9 pixels of the classic bar
self.bar.barTex1b = self.bar:CreateTexture("BlizzardArtTex1b", "ARTWORK")
self.bar.barTex1b:ClearAllPoints()
self.bar.barTex1b:SetHeight(43)
self.bar.barTex1b:SetWidth(9)
self.bar.barTex1b:SetPoint("BOTTOMLEFT", self.bar, "TOPLEFT", 503, -48)
self.bar.barTex1b:SetTexture("Interface\\MainMenuBar\\UI-MainMenuBar-Dwarf")
self.bar.barTex1b:SetTexCoord(0.9609375,0.99609375,0.08203125,0.25) -- 9 pixels wide, pixels 246 to 254 of 256, inclusive, to be exact
self.bar.barTex2 = self.bar:CreateTexture("BlizzardArtTex2", "ARTWORK")
self.bar.barTex2:ClearAllPoints()
self.bar.barTex2:SetHeight(43)
self.bar.barTex2:SetWidth(256)
self.bar.barTex2:SetPoint("BOTTOMLEFT", self.bar, "TOPLEFT", 512, -48)
self.bar.barTex3 = self.bar:CreateTexture("BlizzardArtTex3", "ARTWORK")
self.bar.barTex3:ClearAllPoints()
self.bar.barTex3:SetHeight(43)
self.bar.barTex3:SetPoint("BOTTOMLEFT", self.bar, "TOPLEFT", 768, -48)
self.bar.barTex3b = self.bar:CreateTexture("BlizzardArtTex3b", "ARTWORK")
-- Tex3b is like Tex1b, but together with Tex2 and Tex3, which would in this case (two action bars) be repeats of Tex0 and Tex1
self.bar.barTex3b:ClearAllPoints()
self.bar.barTex3b:SetHeight(43)
self.bar.barTex3b:SetWidth(9)
self.bar.barTex3b:SetPoint("BOTTOMLEFT", self.bar, "TOPLEFT", 1015, -48)
self.bar.barTex3b:SetTexture("Interface\\MainMenuBar\\UI-MainMenuBar-Dwarf")
self.bar.barTex3b:SetTexCoord(0.9609375,0.99609375,0.08203125,0.25) -- 9 pixels wide, pixels 246 to 254 of 256, inclusive, to be exact
end
self.bar:Enable()
self:ToggleOptions()
self:ApplyConfig()
end
function BlizzardArtMod:ApplyConfig()
self.bar:ApplyConfig()
end
function BlizzardArt:ApplyConfig()
local config = BlizzardArtMod.db.profile
Bar.ApplyConfig(self, config)
if not config.position.x then
self:ClearAllPoints()
self:SetPoint("BOTTOM", UIParent, "BOTTOM", -512, 48)
end
if config.artSkin == "HUMAN" then -- Lions on the background of buttons
self.barTex0:SetTexture("Interface\\MainMenuBar\\UI-MainMenuBar-Human")
self.barTex1:SetTexture("Interface\\MainMenuBar\\UI-MainMenuBar-Human")
if config.artLayout ~= "CLASSIC" then -- Human skin is actually outdated, for classic layout the second half is Dwarf anyway
self.barTex2:SetTexture("Interface\\MainMenuBar\\UI-MainMenuBar-Human")
self.barTex3:SetTexture("Interface\\MainMenuBar\\UI-MainMenuBar-Human")
else
self.barTex2:SetTexture("Interface\\MainMenuBar\\UI-MainMenuBar-Dwarf")
self.barTex3:SetTexture("Interface\\MainMenuBar\\UI-MainMenuBar-Dwarf")
end
else -- Or griffins (default)
self.barTex0:SetTexture("Interface\\MainMenuBar\\UI-MainMenuBar-Dwarf")
self.barTex1:SetTexture("Interface\\MainMenuBar\\UI-MainMenuBar-Dwarf")
self.barTex2:SetTexture("Interface\\MainMenuBar\\UI-MainMenuBar-Dwarf")
self.barTex3:SetTexture("Interface\\MainMenuBar\\UI-MainMenuBar-Dwarf")
end
if config.leftCap == "NONE" then -- No left cap
self.leftCap:Hide()
elseif config.leftCap == "HUMAN" then -- Lion
self.leftCap:SetTexture("Interface\\MainMenuBar\\UI-MainMenuBar-EndCap-Human")
self.leftCap:Show()
else -- Griffin (default)
self.leftCap:SetTexture("Interface\\MainMenuBar\\UI-MainMenuBar-EndCap-Dwarf")
self.leftCap:Show()
end
if config.rightCap == "NONE" then -- No right cap
self.rightCap:Hide()
elseif config.rightCap == "HUMAN" then -- Lion
self.rightCap:SetTexture("Interface\\MainMenuBar\\UI-MainMenuBar-EndCap-Human")
self.rightCap:Show()
else -- Griffin (default)
self.rightCap:SetTexture("Interface\\MainMenuBar\\UI-MainMenuBar-EndCap-Dwarf")
self.rightCap:Show()
end
if config.artLayout == "CLASSIC" then -- Classical layout: one bar, micro menu and bags
self.leftCap:SetPoint("BOTTOMLEFT", self, "TOPLEFT", -97, -58)
self:SetSize(1024,53)
self.barTex1:SetWidth(256)
self.barTex1:SetTexCoord(0.0,1.0,0.58203125,0.75) -- Second quarter of classic bar
self.barTex1b:Hide()
self.barTex2:Show()
self.barTex2:SetTexCoord(0.0,1.0,0.33203125,0.5) -- Third quarter of classic bar
self.barTex3:Show()
self.barTex3:SetWidth(256)
self.barTex3:SetTexCoord(0.0,1.0,0.08203125,0.25) -- Last quarter of classic bar
self.barTex3b:Hide()
self.rightCap:SetPoint("BOTTOMLEFT", self, "TOPLEFT", 992, -58)
elseif config.artLayout == "TWOBAR" then -- Two bars next to each other
self.leftCap:SetPoint("BOTTOMLEFT", self, "TOPLEFT", -97, -58)
self:SetSize(770,53)
self.barTex1:SetWidth(247) -- Tex1b will complement the other 9 pixels
self.barTex1:SetTexCoord(0.0,0.96484375,0.58203125,0.75) -- First 247 pixels of second quarter of classic bar
self.barTex1b:Show() -- Tex1b is used here
self.barTex2:Show()
self.barTex2:SetTexCoord(0.0,1.0,0.83203125,1.0) -- First quarter of classic bar, or: repeat of Tex0
self.barTex3:Hide()
self.barTex3b:Hide()
self.rightCap:SetPoint("BOTTOMLEFT", self, "TOPLEFT", 737, -58)
else -- Only one bar
self.leftCap:SetPoint("BOTTOMLEFT", self, "TOPLEFT", -97, -58)
self:SetSize(512,53) -- Half size, since it's only one bar wide
self.barTex1:SetWidth(247) -- Tex1b will complement the other 9 pixels
self.barTex1:SetTexCoord(0.0,0.96484375,0.58203125,0.75) -- First 247 pixels of second quarter of classic bar
self.barTex1b:Show() -- Tex1b is used here
self.barTex2:Hide() -- Hide second half
self.barTex3:Hide()
self.barTex3b:Hide()
self.rightCap:SetPoint("BOTTOMLEFT", self, "TOPLEFT", 480, -58)
end
end
BlizzardArt.ClickThroughSupport = false
function BlizzardArt:ControlClickThrough()
end