Name | Type | is_array | initial_value |
--[[
FrameFlow V0.9b by Tasyen
FrameFlow is a system that automatic fills a Frame from TopLeft with frames. Further frame try to be placed next to the previous one, if that fails FrameFlow starts a new row.
This new added Frame is the previous for the next frame regardless if it started a new Row or not.
The Frame using FrameFlow and the frames added need a size for this system to work.
function FrameFlow.create(frame[, addSlider, marginX, marginY])
creates a new FrameFlow for frame returns frameFlowTable.
Having marginX space between 2 frames in 1 row and marginY space between 2 rows
addSlider(true) creats a slider so the user can alter the frame shown at topLeft with that moves all Content.
The slider will take over the size of the frame on creation, when the size changes you or was not right on that moment use FrameFlow.updateSlider.
function FrameFlow.add(frameFlowTable, frame[, noUpdate])
adds frame to the frameFlowTable. noUpdate (true) does not fit the new Frame into the Frame managed by FrameFlow.
frame becomes a children of the Frame managed by frameFlowTable
function FrameFlow.remove(frameFlowTable, [frame, noUpdate])
removes frame (can be a number) from the frameFlowTable.
calling this will also call FrameFlow.fit(frameFlowTable, 1).
noUpdate (true) prevents calling FrameFlow.fit. Recommented when used multiple times in a row.
returns true if the frameFlowTable still contains frames
function FrameFlow.fit(frameFlowTable[, startingIndex])
update the position and visibility of all content of frameFlowTable.
starting with Content[startingIndex] at TopLeft.
Frames with a lower index are hidden.
no startingIndex is the same as 1.
Use this function to scroll or after the size of the parentFrame or one of the content changed.
This is also used after an FrameFlow
function FrameFlow.updateSlider(frameFlowTable)
updates the Size of the slider to the current Size of the Frame managed by this frameFlowTable
--]]
FrameFlow = {}
-- creates a new FrameFlow filling frame
function FrameFlow.create(frame, addSlider, marginX, marginY)
local frameFlowTable = {}
frameFlowTable.Frame = frame --the frame filled
frameFlowTable.Content = {} -- array of frames
if addSlider then
frameFlowTable.Slider = BlzCreateFrameByType("SLIDER", "FrameFlowSlider", frame, "QuestMainListScrollBar", 0)
-- frameFlowTable.Slider = BlzCreateFrame("QuestMainListScrollBar", frame, "", 0)
FrameFlow[frameFlowTable.Slider] = frameFlowTable
BlzFrameClearAllPoints(frameFlowTable.Slider)
BlzFrameSetStepSize(frameFlowTable.Slider, 1)
BlzFrameSetSize(frameFlowTable.Slider, 0.012, BlzFrameGetHeight(frame))
BlzFrameSetPoint(frameFlowTable.Slider, FRAMEPOINT_RIGHT, frame, FRAMEPOINT_RIGHT, 0, 0)
BlzFrameSetVisible(frameFlowTable.Slider, true)
BlzFrameSetMinMaxValue(frameFlowTable.Slider, 1, 1)
frameFlowTable.SliderTrigger = CreateTrigger()
frameFlowTable.SliderTriggerAction = TriggerAddAction(frameFlowTable.SliderTrigger, FrameFlow.SliderAction)
BlzTriggerRegisterFrameEvent(frameFlowTable.SliderTrigger, frameFlowTable.Slider , FRAMEEVENT_SLIDER_VALUE_CHANGED)
BlzTriggerRegisterFrameEvent(frameFlowTable.SliderTrigger, frameFlowTable.Slider , FRAMEEVENT_MOUSE_WHEEL)
end
if not marginX then marginX = 0 end
frameFlowTable.MarginX = marginX --space between 2 frames in one row
if not marginY then marginY = 0 end
frameFlowTable.MarginY = marginY --additional space between 2 rows
return frameFlowTable
end
function FrameFlow.calc(frameFlowTable, frame, prevFrame)
local rowSizeX = frameFlowTable.CurrentRowRemainX
local rowSizeY = frameFlowTable.CurrentRowSizeY
local offsetY = frameFlowTable.CurrentOffsetY
local parentframeSizeX = BlzFrameGetWidth(frameFlowTable.Frame)
if frameFlowTable.Slider then --if there is an Slider reduce the used Space
parentframeSizeX = parentframeSizeX - BlzFrameGetWidth(frameFlowTable.Slider)
end
local parentframeSizeY = BlzFrameGetHeight(frameFlowTable.Frame)
rowSizeX = rowSizeX - BlzFrameGetWidth(frame) - frameFlowTable.MarginX
BlzFrameClearAllPoints(frame)
if rowSizeX >= 0 then
BlzFrameSetPoint(frame, FRAMEPOINT_TOPLEFT, prevFrame, FRAMEPOINT_TOPRIGHT, frameFlowTable.MarginX, 0)
rowSizeY = math.max( rowSizeY, BlzFrameGetHeight(frame))
elseif rowSizeX < 0 then
offsetY = offsetY + rowSizeY + frameFlowTable.MarginY
rowSizeX = parentframeSizeX - BlzFrameGetWidth(frame)
BlzFrameSetPoint(frame, FRAMEPOINT_TOPLEFT, frameFlowTable.Frame, FRAMEPOINT_TOPLEFT, 0, -offsetY)
rowSizeY = BlzFrameGetHeight(frame)
end
BlzFrameSetVisible(frame, offsetY + BlzFrameGetHeight(frame) <= parentframeSizeY)
prevFrame = frame
--save this values to simple down adding 1 frame
frameFlowTable.CurrentRowRemainX = rowSizeX
frameFlowTable.CurrentRowSizeY = rowSizeY
frameFlowTable.CurrentOffsetY = offsetY
end
--refits all frames, startingIndex is the index of frameFlowTable.Content being placed at TopLeft of the parent Frame
function FrameFlow.fit(frameFlowTable, startingIndex)
if not frameFlowTable.Content or #frameFlowTable.Content == 0 then return end
if not startingIndex then startingIndex = 1 end
--hide frames before the starting Index
for index = 1, startingIndex - 1, 1
do
BlzFrameSetVisible(frameFlowTable.Content[index], false)
end
local frame = frameFlowTable.Content[startingIndex]
BlzFrameClearAllPoints(frame)
BlzFrameSetVisible(frame, true)
BlzFrameSetPoint(frame, FRAMEPOINT_TOPLEFT, frameFlowTable.Frame, FRAMEPOINT_TOPLEFT, 0, 0)
local prevFrame = frame
--reset values
frameFlowTable.CurrentRowRemainX = BlzFrameGetWidth(frameFlowTable.Frame) - BlzFrameGetWidth(frame)
if frameFlowTable.Slider then --if there is an Slider reduce the used Space
frameFlowTable.CurrentRowRemainX = frameFlowTable.CurrentRowRemainX - BlzFrameGetWidth(frameFlowTable.Slider)
end
frameFlowTable.CurrentRowSizeY = BlzFrameGetHeight(frame)
frameFlowTable.CurrentOffsetY = 0
for index = startingIndex + 1, #frameFlowTable.Content, 1
do
local frame = frameFlowTable.Content[index]
FrameFlow.calc(frameFlowTable, frame, prevFrame)
prevFrame = frame
end
end
--fit in a new frame at the end of the table
function FrameFlow.fitNewFrame(frameFlowTable, frame)
FrameFlow.calc(frameFlowTable, frame, frameFlowTable.Content[#frameFlowTable.Content - 1])
end
function FrameFlow.remove(frameFlowTable, frame, noUpdate)
local removed = nil
if not frameFlowTable or #frameFlowTable.Content == 0 then return false end
if not frame then
removed = table.remove(frameFlowTable.Content)
elseif type(frame) == "number" then
removed = table.remove( frameFlowTable.Content, frame)
else
for index, value in ipairs(frameFlowTable.Content)
do
if frame == value then
removed = table.remove(frameFlowTable.Content, index)
break
end
end
end
if removed then
BlzFrameClearAllPoints(removed)
BlzFrameSetVisible(removed, false)
BlzFrameSetMinMaxValue(frameFlowTable.Slider, 1, #frameFlowTable.Content)
if not noUpdate then
FrameFlow.fit(frameFlowTable, 1)
end
end
return #frameFlowTable.Content
end
function FrameFlow.destroy(frameFlowTable)
if frameFlowTable.Slider then
FrameFlow[frameFlowTable.Slider] = nil
TriggerRemoveAction(frameFlowTable.SliderTrigger, frameFlowTable.SliderTriggerAction)
DestroyTrigger(frameFlowTable.SliderTrigger)
BlzDestroyFrame(frameFlowTable.Slider)
frameFlowTable.Slider = nil
frameFlowTable.SliderTrigger = nil
frameFlowTable.SliderTriggerAction = nil
end
frameFlowTable.Frame = nil
frameFlowTable.Content = nil
frameFlowTable.CurrentRowRemainX = nil
frameFlowTable.CurrentRowSizeY = nil
frameFlowTable.CurrentOffsetY = nil
end
function FrameFlow.add(frameFlowTable, frame, noUpdate)
table.insert(frameFlowTable.Content, frame)
BlzFrameSetParent(frame, frameFlowTable.Frame)
BlzFrameSetMinMaxValue(frameFlowTable.Slider, 1, #frameFlowTable.Content)
if not noUpdate then
if #frameFlowTable.Content == 1 then
FrameFlow.fit(frameFlowTable, 1)
else
FrameFlow.fitNewFrame(frameFlowTable, frame)
end
end
end
function FrameFlow.updateSlider(frameFlowTable)
if frameFlowTable.Slider then
BlzFrameSetSize(frameFlowTable.Slider, 0.012, BlzFrameGetHeight(frameFlowTable.Frame))
end
end
function FrameFlow.SliderAction()
local frame = BlzGetTriggerFrame()
if GetLocalPlayer() == GetTriggerPlayer() then
if BlzGetTriggerFrameEvent() == FRAMEEVENT_MOUSE_WHEEL then
if BlzGetTriggerFrameValue() > 0 then
BlzFrameSetValue(frame, BlzFrameGetValue(frame) + 1)
else
BlzFrameSetValue(frame, BlzFrameGetValue(frame) - 1)
end
end
FrameFlow.fit(FrameFlow[frame], BlzFrameGetValue(frame))
end
end
PuzzlePathOptionsCommand = {
"ReplaceableTextures\\CommandButtons\\btn3m1",
"ReplaceableTextures\\CommandButtons\\btn3m2",
"ReplaceableTextures\\CommandButtons\\btn3m3",
"ReplaceableTextures\\CommandButtons\\btnabomination",
"ReplaceableTextures\\CommandButtons\\btnabsorbmagic",
"ReplaceableTextures\\CommandButtons\\btnacidbomb",
"ReplaceableTextures\\CommandButtons\\btnacolyte",
"ReplaceableTextures\\CommandButtons\\btnacorn",
"ReplaceableTextures\\CommandButtons\\btnadvancedcreatureattack",
"ReplaceableTextures\\CommandButtons\\btnadvancedcreaturecarapace",
"ReplaceableTextures\\CommandButtons\\btnadvanceddeathtower",
"ReplaceableTextures\\CommandButtons\\btnadvancedenergytower",
"ReplaceableTextures\\CommandButtons\\btnadvancedflametower",
"ReplaceableTextures\\CommandButtons\\btnadvancedfrosttower",
"ReplaceableTextures\\CommandButtons\\btnadvancedmoonarmor",
"ReplaceableTextures\\CommandButtons\\btnadvancedmoonarmor.dds",
"ReplaceableTextures\\CommandButtons\\btnadvancedreinforcedhides",
"ReplaceableTextures\\CommandButtons\\btnadvancedrocktower",
"ReplaceableTextures\\CommandButtons\\btnadvancedspikedbarricades",
"ReplaceableTextures\\CommandButtons\\btnadvancedstrengthofthemoon",
"ReplaceableTextures\\CommandButtons\\btnadvancedstrengthofthewild",
"ReplaceableTextures\\CommandButtons\\btnadvancedunholyarmor",
"ReplaceableTextures\\CommandButtons\\btnadvancedunholystrength",
"ReplaceableTextures\\CommandButtons\\btnadvstruct",
"ReplaceableTextures\\CommandButtons\\btnakama",
"ReplaceableTextures\\CommandButtons\\btnalbatross",
"ReplaceableTextures\\CommandButtons\\btnalleriaflute",
"ReplaceableTextures\\CommandButtons\\btnaltarofdarkness",
"ReplaceableTextures\\CommandButtons\\btnaltarofdepths",
"ReplaceableTextures\\CommandButtons\\btnaltarofelders",
"ReplaceableTextures\\CommandButtons\\btnaltarofkings",
"ReplaceableTextures\\CommandButtons\\btnaltarofstorms",
"ReplaceableTextures\\CommandButtons\\btnambush",
"ReplaceableTextures\\CommandButtons\\btnambushday",
"ReplaceableTextures\\CommandButtons\\btnammodump",
"ReplaceableTextures\\CommandButtons\\btnamulet",
"ReplaceableTextures\\CommandButtons\\btnamuletofthewild",
"ReplaceableTextures\\CommandButtons\\btnancestralspirit",
"ReplaceableTextures\\CommandButtons\\btnancientoflore",
"ReplaceableTextures\\CommandButtons\\btnancientoftheearth",
"ReplaceableTextures\\CommandButtons\\btnancientofthemoon",
"ReplaceableTextures\\CommandButtons\\btnancientofwonders",
"ReplaceableTextures\\CommandButtons\\btnanimalwartraining",
"ReplaceableTextures\\CommandButtons\\btnanimatedead",
"ReplaceableTextures\\CommandButtons\\btnankh",
"ReplaceableTextures\\CommandButtons\\btnantimagicshell",
"ReplaceableTextures\\CommandButtons\\btnarachnathid",
"ReplaceableTextures\\CommandButtons\\btnarachnathidgreen",
"ReplaceableTextures\\CommandButtons\\btnarachnathidpurple",
"ReplaceableTextures\\CommandButtons\\btnarcaneobservatory",
"ReplaceableTextures\\CommandButtons\\btnarcanesanctum",
"ReplaceableTextures\\CommandButtons\\btnarcanetower",
"ReplaceableTextures\\CommandButtons\\btnarcanevault",
"ReplaceableTextures\\CommandButtons\\btnarcanitearchitecture",
"ReplaceableTextures\\CommandButtons\\btnarcanitearmor",
"ReplaceableTextures\\CommandButtons\\btnarcanitemelee",
"ReplaceableTextures\\CommandButtons\\btnarcaniteranged",
"ReplaceableTextures\\CommandButtons\\btnarcher",
"ReplaceableTextures\\CommandButtons\\btnarchimonde",
"ReplaceableTextures\\CommandButtons\\btnarmoredoge",
"ReplaceableTextures\\CommandButtons\\btnarmorgolem",
"ReplaceableTextures\\CommandButtons\\btnarthas",
"ReplaceableTextures\\CommandButtons\\btnassassin",
"ReplaceableTextures\\CommandButtons\\btnattack",
"ReplaceableTextures\\CommandButtons\\btnattackground",
"ReplaceableTextures\\CommandButtons\\btnauraofdarkness",
"ReplaceableTextures\\CommandButtons\\btnavatar",
"ReplaceableTextures\\CommandButtons\\btnavataroff",
"ReplaceableTextures\\CommandButtons\\btnavataron",
"ReplaceableTextures\\CommandButtons\\btnavengingassassin",
"ReplaceableTextures\\CommandButtons\\btnavengingwatcher",
"ReplaceableTextures\\CommandButtons\\btnavengingwatcheroff",
"ReplaceableTextures\\CommandButtons\\btnavengingwatcheron",
"ReplaceableTextures\\CommandButtons\\btnazuredragon",
"ReplaceableTextures\\CommandButtons\\btnbacktowork",
"ReplaceableTextures\\CommandButtons\\btnballista",
"ReplaceableTextures\\CommandButtons\\btnbandit",
"ReplaceableTextures\\CommandButtons\\btnbanditlord",
"ReplaceableTextures\\CommandButtons\\btnbanditmage",
"ReplaceableTextures\\CommandButtons\\btnbanditspearthrower",
"ReplaceableTextures\\CommandButtons\\btnbanish",
"ReplaceableTextures\\CommandButtons\\btnbanshee",
"ReplaceableTextures\\CommandButtons\\btnbansheeadept",
"ReplaceableTextures\\CommandButtons\\btnbansheemaster",
"ReplaceableTextures\\CommandButtons\\btnbansheeranger",
"ReplaceableTextures\\CommandButtons\\btnbarkskin",
"ReplaceableTextures\\CommandButtons\\btnbarkskinoff",
"ReplaceableTextures\\CommandButtons\\btnbarkskinon",
"ReplaceableTextures\\CommandButtons\\btnbarracks",
"ReplaceableTextures\\CommandButtons\\btnbarrel",
"ReplaceableTextures\\CommandButtons\\btnbash",
"ReplaceableTextures\\CommandButtons\\btnbasicstruct",
"ReplaceableTextures\\CommandButtons\\btnbattleroar",
"ReplaceableTextures\\CommandButtons\\btnbattleship",
"ReplaceableTextures\\CommandButtons\\btnbattlestations",
"ReplaceableTextures\\CommandButtons\\btnbearblink",
"ReplaceableTextures\\CommandButtons\\btnbearden",
"ReplaceableTextures\\CommandButtons\\btnbearform",
"ReplaceableTextures\\CommandButtons\\btnbeastiary",
"ReplaceableTextures\\CommandButtons\\btnbeastmaster",
"ReplaceableTextures\\CommandButtons\\btnbelt",
"ReplaceableTextures\\CommandButtons\\btnberserk",
"ReplaceableTextures\\CommandButtons\\btnberserkfortrolls",
"ReplaceableTextures\\CommandButtons\\btnbigbadvoodoospell",
"ReplaceableTextures\\CommandButtons\\btnblackcitadel",
"ReplaceableTextures\\CommandButtons\\btnblackdragon",
"ReplaceableTextures\\CommandButtons\\btnblackdragonroost",
"ReplaceableTextures\\CommandButtons\\btnblackmammoth",
"ReplaceableTextures\\CommandButtons\\btnblackmarket",
"ReplaceableTextures\\CommandButtons\\btnblacksmith",
"ReplaceableTextures\\CommandButtons\\btnblink",
"ReplaceableTextures\\CommandButtons\\btnblizzard",
"ReplaceableTextures\\CommandButtons\\btnblood&ghostkey",
"ReplaceableTextures\\CommandButtons\\btnbloodelfpeasant",
"ReplaceableTextures\\CommandButtons\\btnbloodelfsupplywagon",
"ReplaceableTextures\\CommandButtons\\btnbloodkey",
"ReplaceableTextures\\CommandButtons\\btnbloodlust",
"ReplaceableTextures\\CommandButtons\\btnbloodlustoff",
"ReplaceableTextures\\CommandButtons\\btnbloodluston",
"ReplaceableTextures\\CommandButtons\\btnbloodmage2",
"ReplaceableTextures\\CommandButtons\\btnbluedemoness",
"ReplaceableTextures\\CommandButtons\\btnbluedragonroost",
"ReplaceableTextures\\CommandButtons\\btnbluedragonspawn",
"ReplaceableTextures\\CommandButtons\\btnbluemagnataur",
"ReplaceableTextures\\CommandButtons\\btnbonechimes",
"ReplaceableTextures\\CommandButtons\\btnboneyard",
"ReplaceableTextures\\CommandButtons\\btnbookofsummoning",
"ReplaceableTextures\\CommandButtons\\btnbookofthedead",
"ReplaceableTextures\\CommandButtons\\btnboots",
"ReplaceableTextures\\CommandButtons\\btnbootsofspeed",
"ReplaceableTextures\\CommandButtons\\btnbox",
"ReplaceableTextures\\CommandButtons\\btnbreathoffire",
"ReplaceableTextures\\CommandButtons\\btnbreathoffrost",
"ReplaceableTextures\\CommandButtons\\btnbrilliance",
"ReplaceableTextures\\CommandButtons\\btnbronzebowl",
"ReplaceableTextures\\CommandButtons\\btnbronzebowlfull",
"ReplaceableTextures\\CommandButtons\\btnbronzedragon",
"ReplaceableTextures\\CommandButtons\\btnbundleoflumber",
"ReplaceableTextures\\CommandButtons\\btncage",
"ReplaceableTextures\\CommandButtons\\btncagedillidan",
"ReplaceableTextures\\CommandButtons\\btncalltoarms",
"ReplaceableTextures\\CommandButtons\\btncancel",
"ReplaceableTextures\\CommandButtons\\btncannibalize",
"ReplaceableTextures\\CommandButtons\\btncannontower",
"ReplaceableTextures\\CommandButtons\\btncarrionscarabs",
"ReplaceableTextures\\CommandButtons\\btncarrionscarabsoff",
"ReplaceableTextures\\CommandButtons\\btncarrionscarabson",
"ReplaceableTextures\\CommandButtons\\btncarrionswarm",
"ReplaceableTextures\\CommandButtons\\btncastle",
"ReplaceableTextures\\CommandButtons\\btncatapult",
"ReplaceableTextures\\CommandButtons\\btncentaur",
"ReplaceableTextures\\CommandButtons\\btncentaurarcher",
"ReplaceableTextures\\CommandButtons\\btncentaurkhan",
"ReplaceableTextures\\CommandButtons\\btnchainlightning",
"ReplaceableTextures\\CommandButtons\\btnchaosblademaster",
"ReplaceableTextures\\CommandButtons\\btnchaosgrom",
"ReplaceableTextures\\CommandButtons\\btnchaosgrunt",
"ReplaceableTextures\\CommandButtons\\btnchaoskotobeast",
"ReplaceableTextures\\CommandButtons\\btnchaospeon",
"ReplaceableTextures\\CommandButtons\\btnchaosspaceorc",
"ReplaceableTextures\\CommandButtons\\btnchaoswarlock",
"ReplaceableTextures\\CommandButtons\\btnchaoswarlockgreen",
"ReplaceableTextures\\CommandButtons\\btnchaoswarlord",
"ReplaceableTextures\\CommandButtons\\btnchaoswolfrider",
"ReplaceableTextures\\CommandButtons\\btncharm",
"ReplaceableTextures\\CommandButtons\\btncheese",
"ReplaceableTextures\\CommandButtons\\btnchemicalrage",
"ReplaceableTextures\\CommandButtons\\btnchestofgold",
"ReplaceableTextures\\CommandButtons\\btnchimaera",
"ReplaceableTextures\\CommandButtons\\btnchimaeraroost",
"ReplaceableTextures\\CommandButtons\\btnchime",
"ReplaceableTextures\\CommandButtons\\btncirclet",
"ReplaceableTextures\\CommandButtons\\btnclawsofattack",
"ReplaceableTextures\\CommandButtons\\btnclayfigurine",
"ReplaceableTextures\\CommandButtons\\btncleavingattack",
"ReplaceableTextures\\CommandButtons\\btncloak",
"ReplaceableTextures\\CommandButtons\\btncloakofflames",
"ReplaceableTextures\\CommandButtons\\btnclockwerkgoblin",
"ReplaceableTextures\\CommandButtons\\btncloudoffog",
"ReplaceableTextures\\CommandButtons\\btnclusterrockets",
"ReplaceableTextures\\CommandButtons\\btncoldarrows",
"ReplaceableTextures\\CommandButtons\\btncoldarrowsoff",
"ReplaceableTextures\\CommandButtons\\btncoldarrowson",
"ReplaceableTextures\\CommandButtons\\btncoldtower",
"ReplaceableTextures\\CommandButtons\\btncommand",
"ReplaceableTextures\\CommandButtons\\btncontrolmagic",
"ReplaceableTextures\\CommandButtons\\btncop",
"ReplaceableTextures\\CommandButtons\\btncoralbed",
"ReplaceableTextures\\CommandButtons\\btncorpseexplode",
"ReplaceableTextures\\CommandButtons\\btncorrosivebreath",
"ReplaceableTextures\\CommandButtons\\btncorruptedancientofwar",
"ReplaceableTextures\\CommandButtons\\btncorruptedancientprotector",
"ReplaceableTextures\\CommandButtons\\btncorruptedent",
"ReplaceableTextures\\CommandButtons\\btncorruptedmoonwell",
"ReplaceableTextures\\CommandButtons\\btncorruptedtreeoflife",
"ReplaceableTextures\\CommandButtons\\btncrate",
"ReplaceableTextures\\CommandButtons\\btncreatureattack",
"ReplaceableTextures\\CommandButtons\\btncreaturecarapace",
"ReplaceableTextures\\CommandButtons\\btncripple",
"ReplaceableTextures\\CommandButtons\\btncriticalstrike",
"ReplaceableTextures\\CommandButtons\\btncritterchicken",
"ReplaceableTextures\\CommandButtons\\btncritterrabbit",
"ReplaceableTextures\\CommandButtons\\btncrushingwave",
"ReplaceableTextures\\CommandButtons\\btncrypt",
"ReplaceableTextures\\CommandButtons\\btncryptfiend",
"ReplaceableTextures\\CommandButtons\\btncryptfiendburrow",
"ReplaceableTextures\\CommandButtons\\btncryptfiendunburrow",
"ReplaceableTextures\\CommandButtons\\btncrystalball",
"ReplaceableTextures\\CommandButtons\\btncurse",
"ReplaceableTextures\\CommandButtons\\btncurseoff",
"ReplaceableTextures\\CommandButtons\\btncurseon",
"ReplaceableTextures\\CommandButtons\\btncyclone",
"ReplaceableTextures\\CommandButtons\\btndaggerofescape",
"ReplaceableTextures\\CommandButtons\\btndalaranguardtower",
"ReplaceableTextures\\CommandButtons\\btndalaranmutant",
"ReplaceableTextures\\CommandButtons\\btndalaranreject",
"ReplaceableTextures\\CommandButtons\\btndarkportal",
"ReplaceableTextures\\CommandButtons\\btndarkritual",
"ReplaceableTextures\\CommandButtons\\btndarksummoning",
"ReplaceableTextures\\CommandButtons\\btndarktroll",
"ReplaceableTextures\\CommandButtons\\btndarktrollshadowpriest",
"ReplaceableTextures\\CommandButtons\\btndarktrolltrapper",
"ReplaceableTextures\\CommandButtons\\btndeathanddecay",
"ReplaceableTextures\\CommandButtons\\btndeathcoil",
"ReplaceableTextures\\CommandButtons\\btndeathpact",
"ReplaceableTextures\\CommandButtons\\btndeathtower",
"ReplaceableTextures\\CommandButtons\\btndeeplordrevenant",
"ReplaceableTextures\\CommandButtons\\btndefend",
"ReplaceableTextures\\CommandButtons\\btndefendstop",
"ReplaceableTextures\\CommandButtons\\btndemolish",
"ReplaceableTextures\\CommandButtons\\btndemolisher",
"ReplaceableTextures\\CommandButtons\\btndemoness",
"ReplaceableTextures\\CommandButtons\\btndemongate",
"ReplaceableTextures\\CommandButtons\\btndenofwonders",
"ReplaceableTextures\\CommandButtons\\btndestroyer",
"ReplaceableTextures\\CommandButtons\\btndevotion",
"ReplaceableTextures\\CommandButtons\\btndevour",
"ReplaceableTextures\\CommandButtons\\btndevourmagic",
"ReplaceableTextures\\CommandButtons\\btndiablocar",
"ReplaceableTextures\\CommandButtons\\btndirewolf",
"ReplaceableTextures\\CommandButtons\\btndisenchant",
"ReplaceableTextures\\CommandButtons\\btndispelmagic",
"ReplaceableTextures\\CommandButtons\\btndivineintervention",
"ReplaceableTextures\\CommandButtons\\btndivineshieldoff",
"ReplaceableTextures\\CommandButtons\\btndizzy",
"ReplaceableTextures\\CommandButtons\\btndocadepttraining",
"ReplaceableTextures\\CommandButtons\\btndocmastertraining",
"ReplaceableTextures\\CommandButtons\\btndoom",
"ReplaceableTextures\\CommandButtons\\btndoomguard",
"ReplaceableTextures\\CommandButtons\\btndotadepttraining",
"ReplaceableTextures\\CommandButtons\\btndotmastertraining",
"ReplaceableTextures\\CommandButtons\\btndragonhawk",
"ReplaceableTextures\\CommandButtons\\btndragonroost",
"ReplaceableTextures\\CommandButtons\\btndrain",
"ReplaceableTextures\\CommandButtons\\btndranai",
"ReplaceableTextures\\CommandButtons\\btndranaiakama",
"ReplaceableTextures\\CommandButtons\\btndranaichiefhut",
"ReplaceableTextures\\CommandButtons\\btndranaihut",
"ReplaceableTextures\\CommandButtons\\btndranaimage",
"ReplaceableTextures\\CommandButtons\\btndruidoftheclaw",
"ReplaceableTextures\\CommandButtons\\btndruidofthetalon",
"ReplaceableTextures\\CommandButtons\\btndrum",
"ReplaceableTextures\\CommandButtons\\btndrunkendodge",
"ReplaceableTextures\\CommandButtons\\btndryad",
"ReplaceableTextures\\CommandButtons\\btndryaddispelmagic",
"ReplaceableTextures\\CommandButtons\\btndryaddispelmagicoff",
"ReplaceableTextures\\CommandButtons\\btndryaddispelmagicon",
"ReplaceableTextures\\CommandButtons\\btnduneworm",
"ReplaceableTextures\\CommandButtons\\btndust",
"ReplaceableTextures\\CommandButtons\\btndustofappearance",
"ReplaceableTextures\\CommandButtons\\btndwarfcar",
"ReplaceableTextures\\CommandButtons\\btndwarvenlongrifle",
"ReplaceableTextures\\CommandButtons\\btnearthbrewmaster",
"ReplaceableTextures\\CommandButtons\\btnearthquake",
"ReplaceableTextures\\CommandButtons\\btneattree",
"ReplaceableTextures\\CommandButtons\\btnelfvillager",
"ReplaceableTextures\\CommandButtons\\btnelunesblessing",
"ReplaceableTextures\\CommandButtons\\btnelvenfarm",
"ReplaceableTextures\\CommandButtons\\btnelvenguardtower",
"ReplaceableTextures\\CommandButtons\\btnenchantedbears",
"ReplaceableTextures\\CommandButtons\\btnenchantedcrows",
"ReplaceableTextures\\CommandButtons\\btnenchantedgemstone",
"ReplaceableTextures\\CommandButtons\\btnenergytower",
"ReplaceableTextures\\CommandButtons\\btnengineeringupgrade",
"ReplaceableTextures\\CommandButtons\\btnensnare",
"ReplaceableTextures\\CommandButtons\\btnent",
"ReplaceableTextures\\CommandButtons\\btnentanglemine",
"ReplaceableTextures\\CommandButtons\\btnentanglingroots",
"ReplaceableTextures\\CommandButtons\\btnentrapmentward",
"ReplaceableTextures\\CommandButtons\\btnenvenomedspear",
"ReplaceableTextures\\CommandButtons\\btneredarred",
"ReplaceableTextures\\CommandButtons\\btneredarwarlockpurple",
"ReplaceableTextures\\CommandButtons\\btnetherealformon",
"ReplaceableTextures\\CommandButtons\\btnevasion",
"ReplaceableTextures\\CommandButtons\\btnevilillidan",
"ReplaceableTextures\\CommandButtons\\btnexhumecorpses",
"ReplaceableTextures\\CommandButtons\\btnexpandedview",
"ReplaceableTextures\\CommandButtons\\btnfacelessone",
"ReplaceableTextures\\CommandButtons\\btnfaeriedragon",
"ReplaceableTextures\\CommandButtons\\btnfaeriefire",
"ReplaceableTextures\\CommandButtons\\btnfaeriefireoff",
"ReplaceableTextures\\CommandButtons\\btnfaeriefireon",
"ReplaceableTextures\\CommandButtons\\btnfanofknives",
"ReplaceableTextures\\CommandButtons\\btnfarm",
"ReplaceableTextures\\CommandButtons\\btnfarsight",
"ReplaceableTextures\\CommandButtons\\btnfeedback",
"ReplaceableTextures\\CommandButtons\\btnfelboar",
"ReplaceableTextures\\CommandButtons\\btnfelguard",
"ReplaceableTextures\\CommandButtons\\btnfelguardblue",
"ReplaceableTextures\\CommandButtons\\btnfelhound",
"ReplaceableTextures\\CommandButtons\\btnfemaleelfvillager",
"ReplaceableTextures\\CommandButtons\\btnfire",
"ReplaceableTextures\\CommandButtons\\btnfirebolt",
"ReplaceableTextures\\CommandButtons\\btnfirebrewmaster",
"ReplaceableTextures\\CommandButtons\\btnfireforthecannon",
"ReplaceableTextures\\CommandButtons\\btnfirerocks",
"ReplaceableTextures\\CommandButtons\\btnflakcannons",
"ReplaceableTextures\\CommandButtons\\btnflametower",
"ReplaceableTextures\\CommandButtons\\btnflamingarrows",
"ReplaceableTextures\\CommandButtons\\btnflare",
"ReplaceableTextures\\CommandButtons\\btnfleshgolem",
"ReplaceableTextures\\CommandButtons\\btnflute",
"ReplaceableTextures\\CommandButtons\\btnflyingmachine",
"ReplaceableTextures\\CommandButtons\\btnfootman",
"ReplaceableTextures\\CommandButtons\\btnforceofnature",
"ReplaceableTextures\\CommandButtons\\btnforesttroll",
"ReplaceableTextures\\CommandButtons\\btnforesttrollshadowpriest",
"ReplaceableTextures\\CommandButtons\\btnforesttrolltrapper",
"ReplaceableTextures\\CommandButtons\\btnforge",
"ReplaceableTextures\\CommandButtons\\btnforgottenone",
"ReplaceableTextures\\CommandButtons\\btnfortress",
"ReplaceableTextures\\CommandButtons\\btnfountainoflife",
"ReplaceableTextures\\CommandButtons\\btnfountainoflifeblood",
"ReplaceableTextures\\CommandButtons\\btnfountainoflifedefiled",
"ReplaceableTextures\\CommandButtons\\btnfragmentationbombs",
"ReplaceableTextures\\CommandButtons\\btnfreezingbreath",
"ReplaceableTextures\\CommandButtons\\btnfrost",
"ReplaceableTextures\\CommandButtons\\btnfrostarmor",
"ReplaceableTextures\\CommandButtons\\btnfrostarmoroff",
"ReplaceableTextures\\CommandButtons\\btnfrostarmoron",
"ReplaceableTextures\\CommandButtons\\btnfrostbear",
"ReplaceableTextures\\CommandButtons\\btnfrostbolt",
"ReplaceableTextures\\CommandButtons\\btnfrostmourne",
"ReplaceableTextures\\CommandButtons\\btnfrosttower",
"ReplaceableTextures\\CommandButtons\\btnfrostwyrm",
"ReplaceableTextures\\CommandButtons\\btnfurbolg",
"ReplaceableTextures\\CommandButtons\\btnfurbolgelder",
"ReplaceableTextures\\CommandButtons\\btnfurbolgpanda",
"ReplaceableTextures\\CommandButtons\\btnfurbolgshaman",
"ReplaceableTextures\\CommandButtons\\btnfurbolgtracker",
"ReplaceableTextures\\CommandButtons\\btnfurion",
"ReplaceableTextures\\CommandButtons\\btngargoyle",
"ReplaceableTextures\\CommandButtons\\btngarithos",
"ReplaceableTextures\\CommandButtons\\btngathergold",
"ReplaceableTextures\\CommandButtons\\btngauntletsofogrepower",
"ReplaceableTextures\\CommandButtons\\btngem",
"ReplaceableTextures\\CommandButtons\\btngenericcreepbuilding",
"ReplaceableTextures\\CommandButtons\\btngenerichumanbuilding",
"ReplaceableTextures\\CommandButtons\\btngenericspellimmunity",
"ReplaceableTextures\\CommandButtons\\btnghost",
"ReplaceableTextures\\CommandButtons\\btnghostkey",
"ReplaceableTextures\\CommandButtons\\btnghostmage",
"ReplaceableTextures\\CommandButtons\\btnghostofkelthuzad",
"ReplaceableTextures\\CommandButtons\\btnghoul",
"ReplaceableTextures\\CommandButtons\\btnghoulfrenzy",
"ReplaceableTextures\\CommandButtons\\btnglacier",
"ReplaceableTextures\\CommandButtons\\btnglaivethrower",
"ReplaceableTextures\\CommandButtons\\btnglexchange",
"ReplaceableTextures\\CommandButtons\\btnglove",
"ReplaceableTextures\\CommandButtons\\btnglyph",
"ReplaceableTextures\\CommandButtons\\btngmexchange",
"ReplaceableTextures\\CommandButtons\\btngnoll",
"ReplaceableTextures\\CommandButtons\\btngnollarcher",
"ReplaceableTextures\\CommandButtons\\btngnollcommandaura",
"ReplaceableTextures\\CommandButtons\\btngnollking",
"ReplaceableTextures\\CommandButtons\\btngnollwarden",
"ReplaceableTextures\\CommandButtons\\btngoblinlandmine",
"ReplaceableTextures\\CommandButtons\\btngoblinsapper",
"ReplaceableTextures\\CommandButtons\\btngoblinshipyard",
"ReplaceableTextures\\CommandButtons\\btngoblinzeppelin",
"ReplaceableTextures\\CommandButtons\\btngoldmine",
"ReplaceableTextures\\CommandButtons\\btngoldring",
"ReplaceableTextures\\CommandButtons\\btngolemstormbolt",
"ReplaceableTextures\\CommandButtons\\btngolemthunderclap",
"ReplaceableTextures\\CommandButtons\\btngrabtree",
"ReplaceableTextures\\CommandButtons\\btngraveyard",
"ReplaceableTextures\\CommandButtons\\btngreaterinvisibility",
"ReplaceableTextures\\CommandButtons\\btngreaterinvulneralbility",
"ReplaceableTextures\\CommandButtons\\btngreaterrejuvpotion",
"ReplaceableTextures\\CommandButtons\\btngreaterrejuvscroll",
"ReplaceableTextures\\CommandButtons\\btngreathall",
"ReplaceableTextures\\CommandButtons\\btngreendragon",
"ReplaceableTextures\\CommandButtons\\btngreendragonroost",
"ReplaceableTextures\\CommandButtons\\btngreendragonspawn",
"ReplaceableTextures\\CommandButtons\\btngreenhydra",
"ReplaceableTextures\\CommandButtons\\btngrimward",
"ReplaceableTextures\\CommandButtons\\btngrizzlybear",
"ReplaceableTextures\\CommandButtons\\btngrunt",
"ReplaceableTextures\\CommandButtons\\btngryphonaviary",
"ReplaceableTextures\\CommandButtons\\btngryphonrider",
"ReplaceableTextures\\CommandButtons\\btnguardianward",
"ReplaceableTextures\\CommandButtons\\btnguardtower",
"ReplaceableTextures\\CommandButtons\\btnguldan",
"ReplaceableTextures\\CommandButtons\\btnguldanskull",
"ReplaceableTextures\\CommandButtons\\btngyrocopter",
"ReplaceableTextures\\CommandButtons\\btnhallofthedead",
"ReplaceableTextures\\CommandButtons\\btnhammer",
"ReplaceableTextures\\CommandButtons\\btnhardenedskin",
"ReplaceableTextures\\CommandButtons\\btnharpy",
"ReplaceableTextures\\CommandButtons\\btnharpyqueen",
"ReplaceableTextures\\CommandButtons\\btnharpywitch",
"ReplaceableTextures\\CommandButtons\\btnhauntedmine",
"ReplaceableTextures\\CommandButtons\\btnheadhunter",
"ReplaceableTextures\\CommandButtons\\btnheadhunterberserker",
"ReplaceableTextures\\CommandButtons\\btnheal",
"ReplaceableTextures\\CommandButtons\\btnhealingsalve",
"ReplaceableTextures\\CommandButtons\\btnhealingspray",
"ReplaceableTextures\\CommandButtons\\btnhealingward",
"ReplaceableTextures\\CommandButtons\\btnhealingwave",
"ReplaceableTextures\\CommandButtons\\btnhealoff",
"ReplaceableTextures\\CommandButtons\\btnhealon",
"ReplaceableTextures\\CommandButtons\\btnhealthstone",
"ReplaceableTextures\\CommandButtons\\btnheartofaszune",
"ReplaceableTextures\\CommandButtons\\btnheartofsearinox",
"ReplaceableTextures\\CommandButtons\\btnhellscream",
"ReplaceableTextures\\CommandButtons\\btnhelmofvalor",
"ReplaceableTextures\\CommandButtons\\btnhelmutpurple",
"ReplaceableTextures\\CommandButtons\\btnhermitcrab",
"ReplaceableTextures\\CommandButtons\\btnheroalchemist",
"ReplaceableTextures\\CommandButtons\\btnheroarchmage",
"ReplaceableTextures\\CommandButtons\\btnheroavatarofflame",
"ReplaceableTextures\\CommandButtons\\btnheroblademaster",
"ReplaceableTextures\\CommandButtons\\btnherobloodelfprince",
"ReplaceableTextures\\CommandButtons\\btnherocryptlord",
"ReplaceableTextures\\CommandButtons\\btnherodeathknight",
"ReplaceableTextures\\CommandButtons\\btnherodemonhunter",
"ReplaceableTextures\\CommandButtons\\btnherodreadlord",
"ReplaceableTextures\\CommandButtons\\btnherofarseer",
"ReplaceableTextures\\CommandButtons\\btnherolich",
"ReplaceableTextures\\CommandButtons\\btnheromoonpriestess",
"ReplaceableTextures\\CommandButtons\\btnheromountainking",
"ReplaceableTextures\\CommandButtons\\btnheropaladin",
"ReplaceableTextures\\CommandButtons\\btnherotaurenchieftain",
"ReplaceableTextures\\CommandButtons\\btnherotinker",
"ReplaceableTextures\\CommandButtons\\btnherowarden",
"ReplaceableTextures\\CommandButtons\\btnhex",
"ReplaceableTextures\\CommandButtons\\btnhighelvenarcher",
"ReplaceableTextures\\CommandButtons\\btnhippogriff",
"ReplaceableTextures\\CommandButtons\\btnhippogriffrider",
"ReplaceableTextures\\CommandButtons\\btnhire",
"ReplaceableTextures\\CommandButtons\\btnholdposition",
"ReplaceableTextures\\CommandButtons\\btnholybolt",
"ReplaceableTextures\\CommandButtons\\btnholywater",
"ReplaceableTextures\\CommandButtons\\btnhoodofcunning",
"ReplaceableTextures\\CommandButtons\\btnhornofcenarius",
"ReplaceableTextures\\CommandButtons\\btnhornofdoom",
"ReplaceableTextures\\CommandButtons\\btnhornoffog",
"ReplaceableTextures\\CommandButtons\\btnhowlofterror",
"ReplaceableTextures\\CommandButtons\\btnhumanarcanetower",
"ReplaceableTextures\\CommandButtons\\btnhumanarmorupone",
"ReplaceableTextures\\CommandButtons\\btnhumanarmorupthree",
"ReplaceableTextures\\CommandButtons\\btnhumanarmoruptwo",
"ReplaceableTextures\\CommandButtons\\btnhumanartilleryupone",
"ReplaceableTextures\\CommandButtons\\btnhumanbarracks",
"ReplaceableTextures\\CommandButtons\\btnhumanbattleship",
"ReplaceableTextures\\CommandButtons\\btnhumanbuild",
"ReplaceableTextures\\CommandButtons\\btnhumancaptureflag",
"ReplaceableTextures\\CommandButtons\\btnhumandestroyer",
"ReplaceableTextures\\CommandButtons\\btnhumanlumbermill",
"ReplaceableTextures\\CommandButtons\\btnhumanlumberupgrade1",
"ReplaceableTextures\\CommandButtons\\btnhumanlumberupgrade2",
"ReplaceableTextures\\CommandButtons\\btnhumanmissileupone",
"ReplaceableTextures\\CommandButtons\\btnhumanmissileupthree",
"ReplaceableTextures\\CommandButtons\\btnhumanmissileuptwo",
"ReplaceableTextures\\CommandButtons\\btnhumanshipyard",
"ReplaceableTextures\\CommandButtons\\btnhumantransport",
"ReplaceableTextures\\CommandButtons\\btnhumanwatchtower",
"ReplaceableTextures\\CommandButtons\\btnhuntershall",
"ReplaceableTextures\\CommandButtons\\btnhuntress",
"ReplaceableTextures\\CommandButtons\\btnhydra",
"ReplaceableTextures\\CommandButtons\\btnhydralisk",
"ReplaceableTextures\\CommandButtons\\btnhydrawarstomp",
"ReplaceableTextures\\CommandButtons\\btnicecrownobelisk",
"ReplaceableTextures\\CommandButtons\\btniceshard",
"ReplaceableTextures\\CommandButtons\\btnicetroll",
"ReplaceableTextures\\CommandButtons\\btnicetrollbeserker",
"ReplaceableTextures\\CommandButtons\\btnicetrollshadowpriest",
"ReplaceableTextures\\CommandButtons\\btnicetrollshaman",
"ReplaceableTextures\\CommandButtons\\btnicytreasurebox",
"ReplaceableTextures\\CommandButtons\\btnillidanprisonwagon",
"ReplaceableTextures\\CommandButtons\\btnimbuedmasonry",
"ReplaceableTextures\\CommandButtons\\btnimmolationoff",
"ReplaceableTextures\\CommandButtons\\btnimmolationon",
"ReplaceableTextures\\CommandButtons\\btnimpale",
"ReplaceableTextures\\CommandButtons\\btnimpalingbolt",
"ReplaceableTextures\\CommandButtons\\btnimprovedbows",
"ReplaceableTextures\\CommandButtons\\btnimprovedcreatureattack",
"ReplaceableTextures\\CommandButtons\\btnimprovedcreaturecarapace",
"ReplaceableTextures\\CommandButtons\\btnimprovedmining",
"ReplaceableTextures\\CommandButtons\\btnimprovedmoonarmor",
"ReplaceableTextures\\CommandButtons\\btnimprovedreinforcedhides",
"ReplaceableTextures\\CommandButtons\\btnimprovedspikedbarricades",
"ReplaceableTextures\\CommandButtons\\btnimprovedstrengthofthemoon",
"ReplaceableTextures\\CommandButtons\\btnimprovedstrengthofthewild",
"ReplaceableTextures\\CommandButtons\\btnimprovedunholyarmor",
"ReplaceableTextures\\CommandButtons\\btnimprovedunholystrength",
"ReplaceableTextures\\CommandButtons\\btnincinerate",
"ReplaceableTextures\\CommandButtons\\btnincinerateoff",
"ReplaceableTextures\\CommandButtons\\btnincinerateon",
"ReplaceableTextures\\CommandButtons\\btninfernal",
"ReplaceableTextures\\CommandButtons\\btninfernalcannon",
"ReplaceableTextures\\CommandButtons\\btninfernalflamecannon",
"ReplaceableTextures\\CommandButtons\\btninfernalstone",
"ReplaceableTextures\\CommandButtons\\btninn",
"ReplaceableTextures\\CommandButtons\\btninnerfire",
"ReplaceableTextures\\CommandButtons\\btninnerfireoff",
"ReplaceableTextures\\CommandButtons\\btninnerfireon",
"ReplaceableTextures\\CommandButtons\\btninvisibility",
"ReplaceableTextures\\CommandButtons\\btninvulnerable",
"ReplaceableTextures\\CommandButtons\\btnjaina",
"ReplaceableTextures\\CommandButtons\\btnjanggo",
"ReplaceableTextures\\CommandButtons\\btnjuggernaut",
"ReplaceableTextures\\CommandButtons\\btnjunglebeast",
"ReplaceableTextures\\CommandButtons\\btnjunkgolem",
"ReplaceableTextures\\CommandButtons\\btnkeep",
"ReplaceableTextures\\CommandButtons\\btnkeeperghostblue",
"ReplaceableTextures\\CommandButtons\\btnkeeperofthegrove",
"ReplaceableTextures\\CommandButtons\\btnkelthuzad",
"ReplaceableTextures\\CommandButtons\\btnkiljaedin",
"ReplaceableTextures\\CommandButtons\\btnknight",
"ReplaceableTextures\\CommandButtons\\btnkobold",
"ReplaceableTextures\\CommandButtons\\btnkoboldgeomancer",
"ReplaceableTextures\\CommandButtons\\btnkotobeast",
"ReplaceableTextures\\CommandButtons\\btnlament",
"ReplaceableTextures\\CommandButtons\\btnlamp",
"ReplaceableTextures\\CommandButtons\\btnlavaspawn",
"ReplaceableTextures\\CommandButtons\\btnleatherupgradeone",
"ReplaceableTextures\\CommandButtons\\btnleatherupgradethree",
"ReplaceableTextures\\CommandButtons\\btnleatherupgradetwo",
"ReplaceableTextures\\CommandButtons\\btnlesserclaritypotion",
"ReplaceableTextures\\CommandButtons\\btnlesserinvisibility",
"ReplaceableTextures\\CommandButtons\\btnlesserinvulneralbility",
"ReplaceableTextures\\CommandButtons\\btnlesserrejuvpotion",
"ReplaceableTextures\\CommandButtons\\btnlesserrejuvscroll",
"ReplaceableTextures\\CommandButtons\\btnlgexchange",
"ReplaceableTextures\\CommandButtons\\btnlichversion2",
"ReplaceableTextures\\CommandButtons\\btnlifedrain",
"ReplaceableTextures\\CommandButtons\\btnlightningshield",
"ReplaceableTextures\\CommandButtons\\btnlionhorn",
"ReplaceableTextures\\CommandButtons\\btnliquidfire",
"ReplaceableTextures\\CommandButtons\\btnload",
"ReplaceableTextures\\CommandButtons\\btnloaddwarf",
"ReplaceableTextures\\CommandButtons\\btnloadpeon",
"ReplaceableTextures\\CommandButtons\\btnlobstrokkblue",
"ReplaceableTextures\\CommandButtons\\btnlobstrokkgreen",
"ReplaceableTextures\\CommandButtons\\btnlobstrokkred",
"ReplaceableTextures\\CommandButtons\\btnlocustswarm",
"ReplaceableTextures\\CommandButtons\\btnmagetower",
"ReplaceableTextures\\CommandButtons\\btnmagicalsentry",
"ReplaceableTextures\\CommandButtons\\btnmagicimmunity",
"ReplaceableTextures\\CommandButtons\\btnmagiclariet",
"ReplaceableTextures\\CommandButtons\\btnmagicvault",
"ReplaceableTextures\\CommandButtons\\btnmagnataur",
"ReplaceableTextures\\CommandButtons\\btnmagnataurbrown",
"ReplaceableTextures\\CommandButtons\\btnmammoth",
"ReplaceableTextures\\CommandButtons\\btnmanaburn",
"ReplaceableTextures\\CommandButtons\\btnmanadrain",
"ReplaceableTextures\\CommandButtons\\btnmanaflare",
"ReplaceableTextures\\CommandButtons\\btnmanaflareoff",
"ReplaceableTextures\\CommandButtons\\btnmanarecharge",
"ReplaceableTextures\\CommandButtons\\btnmanarechargeoff",
"ReplaceableTextures\\CommandButtons\\btnmanarechargeon",
"ReplaceableTextures\\CommandButtons\\btnmanashield",
"ReplaceableTextures\\CommandButtons\\btnmanastone",
"ReplaceableTextures\\CommandButtons\\btnmannoroth",
"ReplaceableTextures\\CommandButtons\\btnmantle",
"ReplaceableTextures\\CommandButtons\\btnmantleofintelligence",
"ReplaceableTextures\\CommandButtons\\btnmanual",
"ReplaceableTextures\\CommandButtons\\btnmanual2",
"ReplaceableTextures\\CommandButtons\\btnmanual3",
"ReplaceableTextures\\CommandButtons\\btnmarine",
"ReplaceableTextures\\CommandButtons\\btnmarketplace",
"ReplaceableTextures\\CommandButtons\\btnmarkoffire",
"ReplaceableTextures\\CommandButtons\\btnmarksmanship",
"ReplaceableTextures\\CommandButtons\\btnmaskofdeath",
"ReplaceableTextures\\CommandButtons\\btnmassteleport",
"ReplaceableTextures\\CommandButtons\\btnmeatapult",
"ReplaceableTextures\\CommandButtons\\btnmeatwagon",
"ReplaceableTextures\\CommandButtons\\btnmechanicalcritter",
"ReplaceableTextures\\CommandButtons\\btnmedalionofcourage",
"ReplaceableTextures\\CommandButtons\\btnmedivh",
"ReplaceableTextures\\CommandButtons\\btnmercenarycamp",
"ReplaceableTextures\\CommandButtons\\btnmerchant",
"ReplaceableTextures\\CommandButtons\\btnmetamorphosis",
"ReplaceableTextures\\CommandButtons\\btnmgexchange",
"ReplaceableTextures\\CommandButtons\\btnmilitia",
"ReplaceableTextures\\CommandButtons\\btnminorrejuvpotion",
"ReplaceableTextures\\CommandButtons\\btnmirrorimage",
"ReplaceableTextures\\CommandButtons\\btnmonsoon",
"ReplaceableTextures\\CommandButtons\\btnmonsterlure",
"ReplaceableTextures\\CommandButtons\\btnmoonarmor",
"ReplaceableTextures\\CommandButtons\\btnmoonkey",
"ReplaceableTextures\\CommandButtons\\btnmoonstone",
"ReplaceableTextures\\CommandButtons\\btnmoonwell",
"ReplaceableTextures\\CommandButtons\\btnmortarteam",
"ReplaceableTextures\\CommandButtons\\btnmountaingiant",
"ReplaceableTextures\\CommandButtons\\btnmove",
"ReplaceableTextures\\CommandButtons\\btnmurgalslave",
"ReplaceableTextures\\CommandButtons\\btnmurgulbloodgill",
"ReplaceableTextures\\CommandButtons\\btnmurgulshadowcaster",
"ReplaceableTextures\\CommandButtons\\btnmurgultidewarrior",
"ReplaceableTextures\\CommandButtons\\btnmurloc",
"ReplaceableTextures\\CommandButtons\\btnmurlocflesheater",
"ReplaceableTextures\\CommandButtons\\btnmurlocmutant",
"ReplaceableTextures\\CommandButtons\\btnmurlocnightcrawler",
"ReplaceableTextures\\CommandButtons\\btnnagaarmorup1",
"ReplaceableTextures\\CommandButtons\\btnnagaarmorup2",
"ReplaceableTextures\\CommandButtons\\btnnagaarmorup3",
"ReplaceableTextures\\CommandButtons\\btnnagaburrow",
"ReplaceableTextures\\CommandButtons\\btnnagamyrmidon",
"ReplaceableTextures\\CommandButtons\\btnnagamyrmidonroyalguard",
"ReplaceableTextures\\CommandButtons\\btnnagaseawitch",
"ReplaceableTextures\\CommandButtons\\btnnagasummoner",
"ReplaceableTextures\\CommandButtons\\btnnagaunburrow",
"ReplaceableTextures\\CommandButtons\\btnnagaweaponup1",
"ReplaceableTextures\\CommandButtons\\btnnagaweaponup2",
"ReplaceableTextures\\CommandButtons\\btnnagaweaponup3",
"ReplaceableTextures\\CommandButtons\\btnnaturesblessing",
"ReplaceableTextures\\CommandButtons\\btnnaturetouchgrow",
"ReplaceableTextures\\CommandButtons\\btnnecklace",
"ReplaceableTextures\\CommandButtons\\btnnecromancer",
"ReplaceableTextures\\CommandButtons\\btnnecromanceradept",
"ReplaceableTextures\\CommandButtons\\btnnecromancermaster",
"ReplaceableTextures\\CommandButtons\\btnnecropolis",
"ReplaceableTextures\\CommandButtons\\btnnerubian",
"ReplaceableTextures\\CommandButtons\\btnnerubianqueen",
"ReplaceableTextures\\CommandButtons\\btnnerubianspiderlord",
"ReplaceableTextures\\CommandButtons\\btnnerubianziggurat",
"ReplaceableTextures\\CommandButtons\\btnnetherdragon",
"ReplaceableTextures\\CommandButtons\\btnneutralmanashield",
"ReplaceableTextures\\CommandButtons\\btnneutralmanashieldoff",
"ReplaceableTextures\\CommandButtons\\btnnightelfbattlecruiser",
"ReplaceableTextures\\CommandButtons\\btnnightelfbuild",
"ReplaceableTextures\\CommandButtons\\btnnightelfcaptureflag",
"ReplaceableTextures\\CommandButtons\\btnnightelfdestroyer",
"ReplaceableTextures\\CommandButtons\\btnnightelffishingboat",
"ReplaceableTextures\\CommandButtons\\btnnightelffishingvillage",
"ReplaceableTextures\\CommandButtons\\btnnightelfrunner",
"ReplaceableTextures\\CommandButtons\\btnnightelfshipyard",
"ReplaceableTextures\\CommandButtons\\btnnightelftransport",
"ReplaceableTextures\\CommandButtons\\btnobsidianstatue",
"ReplaceableTextures\\CommandButtons\\btnogre",
"ReplaceableTextures\\CommandButtons\\btnogrelord",
"ReplaceableTextures\\CommandButtons\\btnogremagi",
"ReplaceableTextures\\CommandButtons\\btnoneheadedogre",
"ReplaceableTextures\\CommandButtons\\btnorb",
"ReplaceableTextures\\CommandButtons\\btnorbofcorruption",
"ReplaceableTextures\\CommandButtons\\btnorbofdarkness",
"ReplaceableTextures\\CommandButtons\\btnorbofdeath",
"ReplaceableTextures\\CommandButtons\\btnorbofdeathoff",
"ReplaceableTextures\\CommandButtons\\btnorbofdeathon",
"ReplaceableTextures\\CommandButtons\\btnorboffire",
"ReplaceableTextures\\CommandButtons\\btnorboffrost",
"ReplaceableTextures\\CommandButtons\\btnorboflightning",
"ReplaceableTextures\\CommandButtons\\btnorbofslowness",
"ReplaceableTextures\\CommandButtons\\btnorbofvenom",
"ReplaceableTextures\\CommandButtons\\btnorcbattlestandard",
"ReplaceableTextures\\CommandButtons\\btnorccaptureflag",
"ReplaceableTextures\\CommandButtons\\btnorccar",
"ReplaceableTextures\\CommandButtons\\btnorcdestroyer",
"ReplaceableTextures\\CommandButtons\\btnorcishtransport",
"ReplaceableTextures\\CommandButtons\\btnorclumberupgradetwo",
"ReplaceableTextures\\CommandButtons\\btnorcmeleeupone",
"ReplaceableTextures\\CommandButtons\\btnorcmeleeupthree",
"ReplaceableTextures\\CommandButtons\\btnorcmeleeuptwo",
"ReplaceableTextures\\CommandButtons\\btnorcrallypoint",
"ReplaceableTextures\\CommandButtons\\btnorctower",
"ReplaceableTextures\\CommandButtons\\btnorcwarlock",
"ReplaceableTextures\\CommandButtons\\btnorcwarlockred",
"ReplaceableTextures\\CommandButtons\\btnotherbarrel",
"ReplaceableTextures\\CommandButtons\\btnowlbear",
"ReplaceableTextures\\CommandButtons\\btnpackbeast",
"ReplaceableTextures\\CommandButtons\\btnpandarenbrewmaster",
"ReplaceableTextures\\CommandButtons\\btnpandataunt",
"ReplaceableTextures\\CommandButtons\\btnparasite",
"ReplaceableTextures\\CommandButtons\\btnparasiteoff",
"ReplaceableTextures\\CommandButtons\\btnparasiteon",
"ReplaceableTextures\\CommandButtons\\btnpatrol",
"ReplaceableTextures\\CommandButtons\\btnpeasant",
"ReplaceableTextures\\CommandButtons\\btnpebble",
"ReplaceableTextures\\CommandButtons\\btnpendantofenergy",
"ReplaceableTextures\\CommandButtons\\btnpendantofmana",
"ReplaceableTextures\\CommandButtons\\btnpenguin",
"ReplaceableTextures\\CommandButtons\\btnpeon",
"ReplaceableTextures\\CommandButtons\\btnperiapt",
"ReplaceableTextures\\CommandButtons\\btnperiapt1",
"ReplaceableTextures\\CommandButtons\\btnphaseshift",
"ReplaceableTextures\\CommandButtons\\btnphaseshiftoff",
"ReplaceableTextures\\CommandButtons\\btnphaseshifton",
"ReplaceableTextures\\CommandButtons\\btnphilosophersstone",
"ReplaceableTextures\\CommandButtons\\btnphoenixegg",
"ReplaceableTextures\\CommandButtons\\btnpickupitem",
"ReplaceableTextures\\CommandButtons\\btnpig",
"ReplaceableTextures\\CommandButtons\\btnpigfarm",
"ReplaceableTextures\\CommandButtons\\btnpillage",
"ReplaceableTextures\\CommandButtons\\btnpipeofinsight",
"ReplaceableTextures\\CommandButtons\\btnpitlord",
"ReplaceableTextures\\CommandButtons\\btnplaguecloud",
"ReplaceableTextures\\CommandButtons\\btnpocketfactory",
"ReplaceableTextures\\CommandButtons\\btnpoisonarrow",
"ReplaceableTextures\\CommandButtons\\btnpoisonsting",
"ReplaceableTextures\\CommandButtons\\btnpolarfurbolg",
"ReplaceableTextures\\CommandButtons\\btnpolarfurbolgelder",
"ReplaceableTextures\\CommandButtons\\btnpolarfurbolgshaman",
"ReplaceableTextures\\CommandButtons\\btnpolarfurbolgtracker",
"ReplaceableTextures\\CommandButtons\\btnpolymorph",
"ReplaceableTextures\\CommandButtons\\btnportal",
"ReplaceableTextures\\CommandButtons\\btnpossession",
"ReplaceableTextures\\CommandButtons\\btnpotionblue",
"ReplaceableTextures\\CommandButtons\\btnpotionbluebig",
"ReplaceableTextures\\CommandButtons\\btnpotionbluesmall",
"ReplaceableTextures\\CommandButtons\\btnpotiongreen",
"ReplaceableTextures\\CommandButtons\\btnpotiongreensmall",
"ReplaceableTextures\\CommandButtons\\btnpotionofclarity",
"ReplaceableTextures\\CommandButtons\\btnpotionofdivinity",
"ReplaceableTextures\\CommandButtons\\btnpotionofomniscience",
"ReplaceableTextures\\CommandButtons\\btnpotionofrestoration",
"ReplaceableTextures\\CommandButtons\\btnpotionofvampirism",
"ReplaceableTextures\\CommandButtons\\btnpotionpurple",
"ReplaceableTextures\\CommandButtons\\btnpotionred",
"ReplaceableTextures\\CommandButtons\\btnpowergenerator",
"ReplaceableTextures\\CommandButtons\\btnpriest",
"ReplaceableTextures\\CommandButtons\\btnpriestadept",
"ReplaceableTextures\\CommandButtons\\btnpriestessofthemoon",
"ReplaceableTextures\\CommandButtons\\btnpriestmaster",
"ReplaceableTextures\\CommandButtons\\btnproudmoore",
"ReplaceableTextures\\CommandButtons\\btnpurge",
"ReplaceableTextures\\CommandButtons\\btnpurpledragonspawn",
"ReplaceableTextures\\CommandButtons\\btnpurplefelhound",
"ReplaceableTextures\\CommandButtons\\btnquillbeast",
"ReplaceableTextures\\CommandButtons\\btnquillbeastgod",
"ReplaceableTextures\\CommandButtons\\btnquillspray",
"ReplaceableTextures\\CommandButtons\\btnquillsprayoff",
"ReplaceableTextures\\CommandButtons\\btnracoon",
"ReplaceableTextures\\CommandButtons\\btnraider",
"ReplaceableTextures\\CommandButtons\\btnraisedead",
"ReplaceableTextures\\CommandButtons\\btnraisedeadoff",
"ReplaceableTextures\\CommandButtons\\btnraisedeadon",
"ReplaceableTextures\\CommandButtons\\btnrallypoint",
"ReplaceableTextures\\CommandButtons\\btnrallypointnightelf",
"ReplaceableTextures\\CommandButtons\\btnrallypointundead",
"ReplaceableTextures\\CommandButtons\\btnravenform",
"ReplaceableTextures\\CommandButtons\\btnrazorback",
"ReplaceableTextures\\CommandButtons\\btnrazormanechief",
"ReplaceableTextures\\CommandButtons\\btnreddragon",
"ReplaceableTextures\\CommandButtons\\btnreddragondevour",
"ReplaceableTextures\\CommandButtons\\btnregenerate",
"ReplaceableTextures\\CommandButtons\\btnregeneration",
"ReplaceableTextures\\CommandButtons\\btnregenerationaura",
"ReplaceableTextures\\CommandButtons\\btnreincarnation",
"ReplaceableTextures\\CommandButtons\\btnreinforcedburrows",
"ReplaceableTextures\\CommandButtons\\btnreinforcedhides",
"ReplaceableTextures\\CommandButtons\\btnrejuvenation",
"ReplaceableTextures\\CommandButtons\\btnrejuvenationpotion",
"ReplaceableTextures\\CommandButtons\\btnrejuvpotion",
"ReplaceableTextures\\CommandButtons\\btnrepair",
"ReplaceableTextures\\CommandButtons\\btnrepairoff",
"ReplaceableTextures\\CommandButtons\\btnrepairon",
"ReplaceableTextures\\CommandButtons\\btnreplay-loop",
"ReplaceableTextures\\CommandButtons\\btnreplay-pause",
"ReplaceableTextures\\CommandButtons\\btnreplay-play",
"ReplaceableTextures\\CommandButtons\\btnreplay-speeddown",
"ReplaceableTextures\\CommandButtons\\btnreplay-speedup",
"ReplaceableTextures\\CommandButtons\\btnreplenishhealth",
"ReplaceableTextures\\CommandButtons\\btnreplenishhealthoff",
"ReplaceableTextures\\CommandButtons\\btnreplenishhealthon",
"ReplaceableTextures\\CommandButtons\\btnreplenishmana",
"ReplaceableTextures\\CommandButtons\\btnreplenishmanaoff",
"ReplaceableTextures\\CommandButtons\\btnreplenishmanaon",
"ReplaceableTextures\\CommandButtons\\btnresistantskin",
"ReplaceableTextures\\CommandButtons\\btnresistmagic",
"ReplaceableTextures\\CommandButtons\\btnresstone",
"ReplaceableTextures\\CommandButtons\\btnresurrection",
"ReplaceableTextures\\CommandButtons\\btnreturngoods",
"ReplaceableTextures\\CommandButtons\\btnreveal",
"ReplaceableTextures\\CommandButtons\\btnrevenant",
"ReplaceableTextures\\CommandButtons\\btnriderlesshorse",
"ReplaceableTextures\\CommandButtons\\btnriderlesskodo",
"ReplaceableTextures\\CommandButtons\\btnrifleman",
"ReplaceableTextures\\CommandButtons\\btnringgreen",
"ReplaceableTextures\\CommandButtons\\btnringjadefalcon",
"ReplaceableTextures\\CommandButtons\\btnringlionhead",
"ReplaceableTextures\\CommandButtons\\btnringpurple",
"ReplaceableTextures\\CommandButtons\\btnringskull",
"ReplaceableTextures\\CommandButtons\\btnringvioletspider",
"ReplaceableTextures\\CommandButtons\\btnrobeofthemagi",
"ReplaceableTextures\\CommandButtons\\btnrobogoblin",
"ReplaceableTextures\\CommandButtons\\btnrobogoblinoff",
"ReplaceableTextures\\CommandButtons\\btnrobogoblinon",
"ReplaceableTextures\\CommandButtons\\btnrockgolem",
"ReplaceableTextures\\CommandButtons\\btnrocktower",
"ReplaceableTextures\\CommandButtons\\btnrodofnecromancy",
"ReplaceableTextures\\CommandButtons\\btnroot",
"ReplaceableTextures\\CommandButtons\\btnrune",
"ReplaceableTextures\\CommandButtons\\btnrunedbracers",
"ReplaceableTextures\\CommandButtons\\btnsacrifice",
"ReplaceableTextures\\CommandButtons\\btnsacrificialdagger",
"ReplaceableTextures\\CommandButtons\\btnsacrificialpit",
"ReplaceableTextures\\CommandButtons\\btnsacrificialskull",
"ReplaceableTextures\\CommandButtons\\btnsasquatch",
"ReplaceableTextures\\CommandButtons\\btnsasquatchshaman",
"ReplaceableTextures\\CommandButtons\\btnsatyr",
"ReplaceableTextures\\CommandButtons\\btnsatyrtrickster",
"ReplaceableTextures\\CommandButtons\\btnscatterrockets",
"ReplaceableTextures\\CommandButtons\\btnscepterofmastery",
"ReplaceableTextures\\CommandButtons\\btnscourgebuild",
"ReplaceableTextures\\CommandButtons\\btnscout",
"ReplaceableTextures\\CommandButtons\\btnscroll",
"ReplaceableTextures\\CommandButtons\\btnscrollofhaste",
"ReplaceableTextures\\CommandButtons\\btnscrollofhealing",
"ReplaceableTextures\\CommandButtons\\btnscrollofprotection",
"ReplaceableTextures\\CommandButtons\\btnscrollofregeneration",
"ReplaceableTextures\\CommandButtons\\btnscrollofregenerationgreen",
"ReplaceableTextures\\CommandButtons\\btnscrolloftownportal",
"ReplaceableTextures\\CommandButtons\\btnscrolluber",
"ReplaceableTextures\\CommandButtons\\btnseaelemental",
"ReplaceableTextures\\CommandButtons\\btnseagiant",
"ReplaceableTextures\\CommandButtons\\btnseagiantgreen",
"ReplaceableTextures\\CommandButtons\\btnseagiantpulverize",
"ReplaceableTextures\\CommandButtons\\btnseagiantwarstomp",
"ReplaceableTextures\\CommandButtons\\btnseal",
"ReplaceableTextures\\CommandButtons\\btnsearingarrows",
"ReplaceableTextures\\CommandButtons\\btnsearingarrowsoff",
"ReplaceableTextures\\CommandButtons\\btnsearingarrowson",
"ReplaceableTextures\\CommandButtons\\btnseaturtlegreen",
"ReplaceableTextures\\CommandButtons\\btnseaturtlered",
"ReplaceableTextures\\CommandButtons\\btnseawitch",
"ReplaceableTextures\\CommandButtons\\btnseigeengine",
"ReplaceableTextures\\CommandButtons\\btnseigeenginewithmissles",
"ReplaceableTextures\\CommandButtons\\btnselectherooff",
"ReplaceableTextures\\CommandButtons\\btnselectheroon",
"ReplaceableTextures\\CommandButtons\\btnselectunit",
"ReplaceableTextures\\CommandButtons\\btnselfdestruct",
"ReplaceableTextures\\CommandButtons\\btnselfdestructoff",
"ReplaceableTextures\\CommandButtons\\btnselfdestructon",
"ReplaceableTextures\\CommandButtons\\btnsell",
"ReplaceableTextures\\CommandButtons\\btnsentinel",
"ReplaceableTextures\\CommandButtons\\btnsentryward",
"ReplaceableTextures\\CommandButtons\\btnserpentward",
"ReplaceableTextures\\CommandButtons\\btnshade",
"ReplaceableTextures\\CommandButtons\\btnshadowhunter",
"ReplaceableTextures\\CommandButtons\\btnshadowmeld",
"ReplaceableTextures\\CommandButtons\\btnshadowpact",
"ReplaceableTextures\\CommandButtons\\btnshadowstrike",
"ReplaceableTextures\\CommandButtons\\btnshaman",
"ReplaceableTextures\\CommandButtons\\btnshamanadept",
"ReplaceableTextures\\CommandButtons\\btnshamanmaster",
"ReplaceableTextures\\CommandButtons\\btnshandris",
"ReplaceableTextures\\CommandButtons\\btnsheep",
"ReplaceableTextures\\CommandButtons\\btnshimmerweed",
"ReplaceableTextures\\CommandButtons\\btnship",
"ReplaceableTextures\\CommandButtons\\btnshockwave",
"ReplaceableTextures\\CommandButtons\\btnshoveler",
"ReplaceableTextures\\CommandButtons\\btnshrineofaszhara",
"ReplaceableTextures\\CommandButtons\\btnsilence",
"ReplaceableTextures\\CommandButtons\\btnsirenadept",
"ReplaceableTextures\\CommandButtons\\btnsirenmaster",
"ReplaceableTextures\\CommandButtons\\btnskeletallongevity",
"ReplaceableTextures\\CommandButtons\\btnskeletalorc",
"ReplaceableTextures\\CommandButtons\\btnskeletalorcchampion",
"ReplaceableTextures\\CommandButtons\\btnskeletalorcgrunt",
"ReplaceableTextures\\CommandButtons\\btnskeletonarcher",
"ReplaceableTextures\\CommandButtons\\btnskeletonmage",
"ReplaceableTextures\\CommandButtons\\btnskeletonwarrior",
"ReplaceableTextures\\CommandButtons\\btnskillz",
"ReplaceableTextures\\CommandButtons\\btnskink",
"ReplaceableTextures\\CommandButtons\\btnslaughterhouse",
"ReplaceableTextures\\CommandButtons\\btnsleep",
"ReplaceableTextures\\CommandButtons\\btnslippersofagility",
"ReplaceableTextures\\CommandButtons\\btnslow",
"ReplaceableTextures\\CommandButtons\\btnslowoff",
"ReplaceableTextures\\CommandButtons\\btnslowon",
"ReplaceableTextures\\CommandButtons\\btnslowpoison",
"ReplaceableTextures\\CommandButtons\\btnsludgecreature",
"ReplaceableTextures\\CommandButtons\\btnsmash",
"ReplaceableTextures\\CommandButtons\\btnsnapdragon",
"ReplaceableTextures\\CommandButtons\\btnsnazzypotion",
"ReplaceableTextures\\CommandButtons\\btnsnazzyscroll",
"ReplaceableTextures\\CommandButtons\\btnsnazzyscrollgreen",
"ReplaceableTextures\\CommandButtons\\btnsnazzyscrollpurple",
"ReplaceableTextures\\CommandButtons\\btnsnowowl",
"ReplaceableTextures\\CommandButtons\\btnsobimask",
"ReplaceableTextures\\CommandButtons\\btnsorceress",
"ReplaceableTextures\\CommandButtons\\btnsorceressadept",
"ReplaceableTextures\\CommandButtons\\btnsorceressmaster",
"ReplaceableTextures\\CommandButtons\\btnsoulburn",
"ReplaceableTextures\\CommandButtons\\btnsoulgem",
"ReplaceableTextures\\CommandButtons\\btnspawninggrounds",
"ReplaceableTextures\\CommandButtons\\btnspellbookbls",
"ReplaceableTextures\\CommandButtons\\btnspellbreaker",
"ReplaceableTextures\\CommandButtons\\btnspellbreakermagicdefend",
"ReplaceableTextures\\CommandButtons\\btnspellbreakermagicundefend",
"ReplaceableTextures\\CommandButtons\\btnspellshieldamulet",
"ReplaceableTextures\\CommandButtons\\btnspellsteal",
"ReplaceableTextures\\CommandButtons\\btnspellstealoff",
"ReplaceableTextures\\CommandButtons\\btnspellstealon",
"ReplaceableTextures\\CommandButtons\\btnspider",
"ReplaceableTextures\\CommandButtons\\btnspiderblack",
"ReplaceableTextures\\CommandButtons\\btnspiderblue",
"ReplaceableTextures\\CommandButtons\\btnspidercrab",
"ReplaceableTextures\\CommandButtons\\btnspidergreen",
"ReplaceableTextures\\CommandButtons\\btnspiderling",
"ReplaceableTextures\\CommandButtons\\btnspidersilkbroach",
"ReplaceableTextures\\CommandButtons\\btnspikedbarricades",
"ReplaceableTextures\\CommandButtons\\btnspinycrab",
"ReplaceableTextures\\CommandButtons\\btnspiritlink",
"ReplaceableTextures\\CommandButtons\\btnspiritlodge",
"ReplaceableTextures\\CommandButtons\\btnspiritofvengeance",
"ReplaceableTextures\\CommandButtons\\btnspiritwalker",
"ReplaceableTextures\\CommandButtons\\btnspiritwalkeradepttraining",
"ReplaceableTextures\\CommandButtons\\btnspiritwalkermastertraining",
"ReplaceableTextures\\CommandButtons\\btnspiritwolf",
"ReplaceableTextures\\CommandButtons\\btnspiritwyvern",
"ReplaceableTextures\\CommandButtons\\btnspy",
"ReplaceableTextures\\CommandButtons\\btnstaffofnegation",
"ReplaceableTextures\\CommandButtons\\btnstaffofpreservation",
"ReplaceableTextures\\CommandButtons\\btnstaffofpurification",
"ReplaceableTextures\\CommandButtons\\btnstaffofsanctuary",
"ReplaceableTextures\\CommandButtons\\btnstaffofsilence",
"ReplaceableTextures\\CommandButtons\\btnstaffofteleportation",
"ReplaceableTextures\\CommandButtons\\btnstag",
"ReplaceableTextures\\CommandButtons\\btnstampede",
"ReplaceableTextures\\CommandButtons\\btnstarfall",
"ReplaceableTextures\\CommandButtons\\btnstarwand",
"ReplaceableTextures\\CommandButtons\\btnstasistrap",
"ReplaceableTextures\\CommandButtons\\btnstatup",
"ReplaceableTextures\\CommandButtons\\btnsteamtank",
"ReplaceableTextures\\CommandButtons\\btnsteelarmor",
"ReplaceableTextures\\CommandButtons\\btnsteelmelee",
"ReplaceableTextures\\CommandButtons\\btnsteelranged",
"ReplaceableTextures\\CommandButtons\\btnstone",
"ReplaceableTextures\\CommandButtons\\btnstonearchitecture",
"ReplaceableTextures\\CommandButtons\\btnstoneform",
"ReplaceableTextures\\CommandButtons\\btnstop",
"ReplaceableTextures\\CommandButtons\\btnstormbolt",
"ReplaceableTextures\\CommandButtons\\btnstormbrewmaster",
"ReplaceableTextures\\CommandButtons\\btnstormearth&fire",
"ReplaceableTextures\\CommandButtons\\btnstormhammer",
"ReplaceableTextures\\CommandButtons\\btnstrengthofthemoon",
"ReplaceableTextures\\CommandButtons\\btnstrengthofthewild",
"ReplaceableTextures\\CommandButtons\\btnstrongdrink",
"ReplaceableTextures\\CommandButtons\\btnstronghold",
"ReplaceableTextures\\CommandButtons\\btnstun",
"ReplaceableTextures\\CommandButtons\\btnsummonwaterelemental",
"ReplaceableTextures\\CommandButtons\\btnsunderingblades",
"ReplaceableTextures\\CommandButtons\\btnsunkey",
"ReplaceableTextures\\CommandButtons\\btnsupportbeam",
"ReplaceableTextures\\CommandButtons\\btnsylvanuswindrunner",
"ReplaceableTextures\\CommandButtons\\btntalisman",
"ReplaceableTextures\\CommandButtons\\btntamehippogriff",
"ReplaceableTextures\\CommandButtons\\btntaunt",
"ReplaceableTextures\\CommandButtons\\btntauren",
"ReplaceableTextures\\CommandButtons\\btntaurenhut",
"ReplaceableTextures\\CommandButtons\\btntaurentotem",
"ReplaceableTextures\\CommandButtons\\btntavern",
"ReplaceableTextures\\CommandButtons\\btntelescope",
"ReplaceableTextures\\CommandButtons\\btntemp",
"ReplaceableTextures\\CommandButtons\\btntemp.dds",
"ReplaceableTextures\\CommandButtons\\btntempleofthedamned",
"ReplaceableTextures\\CommandButtons\\btntempleoftides",
"ReplaceableTextures\\CommandButtons\\btntentacle",
"ReplaceableTextures\\CommandButtons\\btntheblackarrow",
"ReplaceableTextures\\CommandButtons\\btntheblackarrowonoff",
"ReplaceableTextures\\CommandButtons\\btnthecaptain",
"ReplaceableTextures\\CommandButtons\\btnthickfur",
"ReplaceableTextures\\CommandButtons\\btnthievesguild",
"ReplaceableTextures\\CommandButtons\\btnthoriumarmor",
"ReplaceableTextures\\CommandButtons\\btnthoriummelee",
"ReplaceableTextures\\CommandButtons\\btnthoriumranged",
"ReplaceableTextures\\CommandButtons\\btnthorns",
"ReplaceableTextures\\CommandButtons\\btnthornshield",
"ReplaceableTextures\\CommandButtons\\btnthornyshieldoff",
"ReplaceableTextures\\CommandButtons\\btnthrall",
"ReplaceableTextures\\CommandButtons\\btnthunderclap",
"ReplaceableTextures\\CommandButtons\\btnthunderlizard",
"ReplaceableTextures\\CommandButtons\\btnthunderlizardegg",
"ReplaceableTextures\\CommandButtons\\btnthunderlizardsalamander",
"ReplaceableTextures\\CommandButtons\\btnthunderlizardvizier",
"ReplaceableTextures\\CommandButtons\\btntichondrius",
"ReplaceableTextures\\CommandButtons\\btntidalguardian",
"ReplaceableTextures\\CommandButtons\\btntimberwolf",
"ReplaceableTextures\\CommandButtons\\btntinycastle",
"ReplaceableTextures\\CommandButtons\\btntombofrelics",
"ReplaceableTextures\\CommandButtons\\btntome",
"ReplaceableTextures\\CommandButtons\\btntomebrown",
"ReplaceableTextures\\CommandButtons\\btntomeofretraining",
"ReplaceableTextures\\CommandButtons\\btntomered",
"ReplaceableTextures\\CommandButtons\\btntornado",
"ReplaceableTextures\\CommandButtons\\btntower",
"ReplaceableTextures\\CommandButtons\\btntownhall",
"ReplaceableTextures\\CommandButtons\\btntranquility",
"ReplaceableTextures\\CommandButtons\\btntransmute",
"ReplaceableTextures\\CommandButtons\\btntransport",
"ReplaceableTextures\\CommandButtons\\btntreant",
"ReplaceableTextures\\CommandButtons\\btntreeofages",
"ReplaceableTextures\\CommandButtons\\btntreeofeternity",
"ReplaceableTextures\\CommandButtons\\btntreeoflife",
"ReplaceableTextures\\CommandButtons\\btntrollbatrider",
"ReplaceableTextures\\CommandButtons\\btntrollburrow",
"ReplaceableTextures\\CommandButtons\\btntrueshot",
"ReplaceableTextures\\CommandButtons\\btntuskaarblack",
"ReplaceableTextures\\CommandButtons\\btntuskaarbrown",
"ReplaceableTextures\\CommandButtons\\btntuskaargold",
"ReplaceableTextures\\CommandButtons\\btntuskaarnomad",
"ReplaceableTextures\\CommandButtons\\btnultravision",
"ReplaceableTextures\\CommandButtons\\btnunbroken",
"ReplaceableTextures\\CommandButtons\\btnundeadairbarge",
"ReplaceableTextures\\CommandButtons\\btnundeadbattleship",
"ReplaceableTextures\\CommandButtons\\btnundeadcaptureflag",
"ReplaceableTextures\\CommandButtons\\btnundeadcar",
"ReplaceableTextures\\CommandButtons\\btnundeaddestroyer",
"ReplaceableTextures\\CommandButtons\\btnundeadload",
"ReplaceableTextures\\CommandButtons\\btnundeadloadoff",
"ReplaceableTextures\\CommandButtons\\btnundeadloadon",
"ReplaceableTextures\\CommandButtons\\btnundeadshipyard",
"ReplaceableTextures\\CommandButtons\\btnundeadshrine",
"ReplaceableTextures\\CommandButtons\\btnundeadtransport",
"ReplaceableTextures\\CommandButtons\\btnundeadunload",
"ReplaceableTextures\\CommandButtons\\btnunholyarmor",
"ReplaceableTextures\\CommandButtons\\btnunholyaura",
"ReplaceableTextures\\CommandButtons\\btnunholyfrenzy",
"ReplaceableTextures\\CommandButtons\\btnunholystrength",
"ReplaceableTextures\\CommandButtons\\btnunload",
"ReplaceableTextures\\CommandButtons\\btnunloaddwarf",
"ReplaceableTextures\\CommandButtons\\btnunloadpeon",
"ReplaceableTextures\\CommandButtons\\btnunstableconcoction",
"ReplaceableTextures\\CommandButtons\\btnunsummonbuilding",
"ReplaceableTextures\\CommandButtons\\btnupgrademoonglaive",
"ReplaceableTextures\\CommandButtons\\btnupgraderegenerationaura",
"ReplaceableTextures\\CommandButtons\\btnuproot",
"ReplaceableTextures\\CommandButtons\\btnurnofkelthuzad",
"ReplaceableTextures\\CommandButtons\\btnusedsoulgem",
"ReplaceableTextures\\CommandButtons\\btnvampiricaura",
"ReplaceableTextures\\CommandButtons\\btnvengeanceincarnate",
"ReplaceableTextures\\CommandButtons\\btnvialempty",
"ReplaceableTextures\\CommandButtons\\btnvialfull",
"ReplaceableTextures\\CommandButtons\\btnvillagerkid",
"ReplaceableTextures\\CommandButtons\\btnvillagerkid2",
"ReplaceableTextures\\CommandButtons\\btnvillagerman",
"ReplaceableTextures\\CommandButtons\\btnvillagerman1",
"ReplaceableTextures\\CommandButtons\\btnvillagerwoman",
"ReplaceableTextures\\CommandButtons\\btnvoidwalker",
"ReplaceableTextures\\CommandButtons\\btnvolcano",
"ReplaceableTextures\\CommandButtons\\btnvoodoolounge",
"ReplaceableTextures\\CommandButtons\\btnvorpalblades",
"ReplaceableTextures\\CommandButtons\\btnvulture",
"ReplaceableTextures\\CommandButtons\\btnwalloffire",
"ReplaceableTextures\\CommandButtons\\btnwand",
"ReplaceableTextures\\CommandButtons\\btnwandofcyclone",
"ReplaceableTextures\\CommandButtons\\btnwandofmanasteal",
"ReplaceableTextures\\CommandButtons\\btnwandofneutralization",
"ReplaceableTextures\\CommandButtons\\btnwandofshadowsight",
"ReplaceableTextures\\CommandButtons\\btnwandskull",
"ReplaceableTextures\\CommandButtons\\btnwarden2",
"ReplaceableTextures\\CommandButtons\\btnwareagle",
"ReplaceableTextures\\CommandButtons\\btnwarstomp",
"ReplaceableTextures\\CommandButtons\\btnwaygate",
"ReplaceableTextures\\CommandButtons\\btnweb",
"ReplaceableTextures\\CommandButtons\\btnweboff",
"ReplaceableTextures\\CommandButtons\\btnwebon",
"ReplaceableTextures\\CommandButtons\\btnwellspring",
"ReplaceableTextures\\CommandButtons\\btnwendigo",
"ReplaceableTextures\\CommandButtons\\btnwhirlwind",
"ReplaceableTextures\\CommandButtons\\btnwindserpent",
"ReplaceableTextures\\CommandButtons\\btnwindwalkoff",
"ReplaceableTextures\\CommandButtons\\btnwindwalkon",
"ReplaceableTextures\\CommandButtons\\btnwirtsleg",
"ReplaceableTextures\\CommandButtons\\btnwirtsotherleg",
"ReplaceableTextures\\CommandButtons\\btnwisp",
"ReplaceableTextures\\CommandButtons\\btnwisphealoff",
"ReplaceableTextures\\CommandButtons\\btnwisphealon",
"ReplaceableTextures\\CommandButtons\\btnwispsplode",
"ReplaceableTextures\\CommandButtons\\btnwitchdoctor",
"ReplaceableTextures\\CommandButtons\\btnwitchdoctoradept",
"ReplaceableTextures\\CommandButtons\\btnwitchdoctormaster",
"ReplaceableTextures\\CommandButtons\\btnwolf",
"ReplaceableTextures\\CommandButtons\\btnwolf.dds",
"ReplaceableTextures\\CommandButtons\\btnworkshop",
"ReplaceableTextures\\CommandButtons\\btnwyvern",
"ReplaceableTextures\\CommandButtons\\btnwyvernrider",
"ReplaceableTextures\\CommandButtons\\btnyoudirtyrat!",
"ReplaceableTextures\\CommandButtons\\btnzergling",
"ReplaceableTextures\\CommandButtons\\btnziggurat",
"ReplaceableTextures\\CommandButtons\\btnzigguratupgrade",
"ReplaceableTextures\\CommandButtons\\btnzombie",
"ReplaceableTextures\\CommandButtons\\disbtncage",
"ReplaceableTextures\\CommandButtons\\disbtnmagicvault",
"ReplaceableTextures\\CommandButtons\\pasbtnengineeringupgrade"
}
PuzzlePathOptionsBigImages = {
"replaceabletextures\\cameramasks\\panda-n-cub",
-- "replaceabletextures\\worldeditui\\warcraftiiiftlogo",
-- "replaceabletextures\\worldeditui\\blizzardlogo",
"ui\\glues\\mainmenu\\mainmenu3d_beta\\arthas_concept03",
"war3mapImported\\OrcReforged",
"war3mapImported\\ArthasReforged",
"war3mapImported\\The Culling Screen",
"war3mapImported\\WowVsDragon",
"war3mapImported\\Alexstrasza_Homescreen",
"war3mapImported\\StarcraftAnniversary_art",
"war3mapImported\\HEARTHSTONE_BATTLEGROUNDS_KEY_ART",
"war3mapImported\\HS17_400",
"war3mapImported\\HS_-_Hallows_Eve_-_Key_Art_2",
"war3mapImported\\LiMing",
"war3mapImported\\Tyrande",
"war3mapImported\\Valeera"
}
PuzzleData = {
AdminMode = true,
PreviewTime = 20,
PreShuffleTime = 10,
ShuffleIntervale = 0.05,
TotalSizeX = 0.43,
TotalSizeY = 0.43,
ButtonGap = 0.0035,
ButtonGapDefault = 0.0035,
ButtonGapMin = 0.001,
ExpiredTime = CreateTimer(),
ExpiredTimeUpdate = CreateTimer(),
ShuffleTimer = CreateTimer(),
PreviewTimer = CreateTimer(),
CompletedFragmentAlpha = 200,
BackgroundFilePath = "replaceabletextures\\teamcolor\\teamcolor02",
BackgroundAlpha = 255,
ToMove = {},
DialogTrigger = CreateTrigger()
}
PuzzlePathOptions = {}
BlzLoadTOCFile("war3mapImported\\Puzzle.toc")
BlzLoadTOCFile("war3mapImported\\Templates.toc")
-- only Puzzle_20_20, Puzzle_18_18, Puzzle_16_16, Puzzle_14_14, Puzzle_12_12, Puzzle_10_10, Puzzle_9_9, Puzzle_8_8, Puzzle_7_7, Puzzle_6_6, Puzzle_5_5, Puzzle_4_4, Puzzle_3_3
function haveWon()
local won = true
local rightCount = 0
for x = 1, PuzzleData.Cols, 1 do
for y = 1, PuzzleData.Rows, 1 do
local buttonTexture = BlzGetFrameByName("PuzzleButtonTexture_"..x.."_"..y, 0)
if PuzzleData.ButtonData[buttonTexture].Real ~= PuzzleData.ButtonData[buttonTexture].Current then
won = false
BlzFrameSetAlpha(BlzGetFrameByName("PuzzleButton_"..x.."_"..y, 0), 255)
else
BlzFrameSetEnable(BlzGetFrameByName("PuzzleButton_"..x.."_"..y, 0), false)
BlzFrameSetAlpha(BlzGetFrameByName("PuzzleButton_"..x.."_"..y, 0), PuzzleData.CompletedFragmentAlpha)
rightCount = rightCount + 1
end
end
end
return won, rightCount
end
function makeNormal()
for x = 1, PuzzleData.Cols, 1 do
for y = 1, PuzzleData.Rows, 1 do
local button = BlzGetFrameByName("PuzzleButton_"..x.."_"..y, 0)
BlzFrameClearAllPoints(button)
--BlzFrameSetSize(button, buttonSizeX, buttonSizeY)
BlzFrameSetPoint(button, FRAMEPOINT_TOPLEFT, PuzzleData.PuzzleFrame, FRAMEPOINT_TOPLEFT, (x - 1)* (PuzzleData.ButtonSizeX), -(y - 1)*(PuzzleData.ButtonSizeY))
BlzFrameSetAlpha(button, 255)
end
end
end
function swapTextures(buttonA, buttonB)
local temp = PuzzleData.ButtonData[buttonB]
BlzFrameSetAllPoints(PuzzleData.ButtonData[buttonA], buttonB)
BlzFrameSetAllPoints(PuzzleData.ButtonData[buttonB], buttonA)
PuzzleData.ButtonData[buttonB] = PuzzleData.ButtonData[buttonA]
PuzzleData.ButtonData[buttonA] = temp
PuzzleData.ButtonData[PuzzleData.ButtonData[buttonA]].Current = buttonA
PuzzleData.ButtonData[PuzzleData.ButtonData[buttonB]].Current = buttonB
end
function testWon()
local won, rightCount = haveWon()
if won then
makeNormal()
--BlzFrameSetText(PuzzleData.InfoTextFrame, "Your Have Won!!!!!".."\nSwaps: "..PuzzleData.Tries.."\nTime: ".. string.format( "%%.1f",TimerGetElapsed(ExpiredTime)))
StartSound(gg_snd_GoodJob)
BlzSendSyncData("Win", PuzzleData.Tries..",".. string.format( "%%.1f",TimerGetElapsed(PuzzleData.ExpiredTime)))
else
BlzSendSyncData("Progress", string.format( "%%.0f",100*rightCount/(PuzzleData.Rows*PuzzleData.Cols)))
end
end
function DestroyPuzzle()
if PuzzleData.PuzzleFrame then
BlzFrameSetVisible(PuzzleData.PuzzleBox, false)
if PuzzleData.PuzzleBackground then BlzFrameSetVisible(PuzzleData.PuzzleBackground, false) end
LastClickedButton = nil
-- somehow destroing the frames desync the game, so just hide them (takes 20 mb ram each call)
--for x = 1, PuzzleData.Cols, 1 do
--for y = 1, PuzzleData.Rows, 1 do
--PuzzleData.ButtonData[PuzzleData.ButtonData[BlzGetFrameByName("PuzzleButton_"..x.."_"..y, 0)]].Current = nil
--PuzzleData.ButtonData[PuzzleData.ButtonData[BlzGetFrameByName("PuzzleButton_"..x.."_"..y, 0)]].Real = nil
--PuzzleData.ButtonData[BlzGetFrameByName("PuzzleButton_"..x.."_"..y, 0)] = nil
-- BlzDestroyFrame(BlzGetFrameByName("PuzzleButton_"..x.."_"..y, 0))
-- end
--end
--BlzDestroyFrame(PuzzleData.PuzzleFrame)
DestroyTrigger(PuzzleData.ButtonClickTrigger)
BlzFrameSetVisible(PuzzleData.PuzzleFrame, false)
BlzFrameSetVisible(PuzzleData.Indicator, false)
PuzzleData.PuzzleFrame = nil
PuzzleData.ButtonClickTrigger = nil
BlzFrameSetVisible(PuzzleStartFrame, GetLocalPlayer() == Player(0))
BlzFrameSetEnable(PuzzleData.ButtonShowPreview, true)
BlzFrameSetText(PuzzleData.InfoTextFrame, "")
PauseTimer(PuzzleData.PreviewTimer)
PauseTimer(PuzzleData.ShuffleTimer)
BlzFrameSetVisible(PuzzleData.Preview, false)
repeat until not table.remove(PuzzleData.ToMove)
repeat until not table.remove(PuzzlePathOptions)
end
end
function CreatePuzzle(rows, cols, filePath)
xpcall(function()
PuzzleData.ButtonData = {}
PuzzleData.Tries = 0
if PuzzleData.PuzzleBackground then BlzFrameSetVisible(PuzzleData.PuzzleBackground, true) end
PuzzleData.PuzzleFrame = BlzCreateSimpleFrame("Puzzle_"..cols.."_"..rows, BlzGetOriginFrame(ORIGIN_FRAME_GAME_UI, 0), 0)
PuzzleData.Cols = cols
PuzzleData.Rows = rows
BlzFrameSetLevel(PuzzleData.PuzzleFrame, 3)
BlzFrameSetAbsPoint(PuzzleData.PuzzleFrame, FRAMEPOINT_TOPLEFT, 0.3, 0.535)
if not filePath then
filePath = PuzzlePathOptions[GetRandomInt(1, #PuzzlePathOptions)]
elseif type(filePath) == "number" then
filePath = PuzzlePathOptions[filePath]
end
BlzFrameSetText(PuzzleData.ImageNameFrame, filePath)
BlzFrameSetText(PuzzleData.InfoTextFrame, "")
local buttonSizeX = PuzzleData.TotalSizeX/cols
local buttonSizeY = PuzzleData.TotalSizeY/rows
PuzzleData.ButtonSizeX = buttonSizeX
PuzzleData.ButtonSizeY = buttonSizeY
BlzFrameSetScale(PuzzleData.Indicator, buttonSizeX/0.039)
PuzzleData.ButtonClickTrigger = CreateTrigger()
DisableTrigger(PuzzleData.ButtonClickTrigger)
TriggerAddAction(PuzzleData.ButtonClickTrigger, function()
xpcall(function()
if GetLocalPlayer() == GetTriggerPlayer() then
if LastClickedButton then
PuzzleData.Tries = PuzzleData.Tries + 1
BlzFrameSetVisible(PuzzleData.Indicator, false)
swapTextures(BlzGetTriggerFrame(), LastClickedButton)
testWon()
LastClickedButton = nil
else
BlzFrameSetVisible(PuzzleData.Indicator, true)
LastClickedButton = BlzGetTriggerFrame()
BlzFrameSetAllPoints(PuzzleData.Indicator, LastClickedButton)
end
end
end, print)
end)
--PuzzleData.ButtonGap = 10/rows * PuzzleData.ButtonGapDefault
if rows >= 14 then
PuzzleData.ButtonGap = PuzzleData.ButtonGapMin
else
PuzzleData.ButtonGap = PuzzleData.ButtonGapDefault
end
-- create the buttons
for x = 1, cols, 1 do
for y = 1, rows, 1 do
local button = BlzGetFrameByName("PuzzleButton_"..x.."_"..y, 0)
local buttonTexture = BlzGetFrameByName("PuzzleButtonTexture_"..x.."_"..y, 0)
PuzzleData.ButtonData[button] = buttonTexture
PuzzleData.ButtonData[buttonTexture] = {Real= button, Current = button}
BlzFrameSetTexture(buttonTexture, filePath, 0, true)
BlzFrameClearAllPoints(button)
BlzFrameSetSize(button, buttonSizeX, buttonSizeY)
BlzFrameSetPoint(button, FRAMEPOINT_TOPLEFT, PuzzleData.PuzzleFrame, FRAMEPOINT_TOPLEFT, (x - 1)* (buttonSizeX + PuzzleData.ButtonGap), -(y - 1)*(buttonSizeY + PuzzleData.ButtonGap))
BlzTriggerRegisterFrameEvent(PuzzleData.ButtonClickTrigger, button, FRAMEEVENT_CONTROL_CLICK)
table.insert(PuzzleData.ToMove, button)
end
end
BlzFrameClearAllPoints(PuzzleData.PuzzleBox)
BlzFrameSetPoint(PuzzleData.PuzzleBox, FRAMEPOINT_TOPLEFT, BlzGetFrameByName("PuzzleButton_1_1", 0), FRAMEPOINT_TOPLEFT, -0.005, 0.005)
BlzFrameSetPoint(PuzzleData.PuzzleBox, FRAMEPOINT_BOTTOMRIGHT, BlzGetFrameByName("PuzzleButton_"..cols.."_"..rows, 0), FRAMEPOINT_BOTTOMRIGHT, 0.005, -0.005)
BlzFrameSetVisible(PuzzleData.PuzzleBox, true)
if PuzzleData.PuzzleBackground then
--BlzFrameSetPoint(PuzzleData.PuzzleBackground, FRAMEPOINT_TOPLEFT, BlzGetFrameByName("PuzzleButton_1_1", 0), FRAMEPOINT_TOPLEFT, 0, 0)
BlzFrameSetPoint(PuzzleData.PuzzleBackground, FRAMEPOINT_BOTTOMRIGHT, BlzGetFrameByName("PuzzleButton_"..cols.."_"..rows, 0), FRAMEPOINT_BOTTOMRIGHT, 0, 0)
end
-- Shuffle
BlzFrameSetText(PuzzleData.InfoTextFrame, "The Puzzle will soon be shuffeled")
TimerStart(PuzzleData.ShuffleTimer, PuzzleData.PreShuffleTime, false, function()
BlzFrameSetText(PuzzleData.InfoTextFrame, "Shuffle")
TimerStart(GetExpiredTimer(), PuzzleData.ShuffleIntervale, true, function()
xpcall(function()
if #PuzzleData.ToMove > 1 then
local otherIndex = GetRandomInt(1, #PuzzleData.ToMove - 1)
swapTextures(PuzzleData.ToMove[#PuzzleData.ToMove], PuzzleData.ToMove[otherIndex])
table.remove(PuzzleData.ToMove, otherIndex)
table.remove(PuzzleData.ToMove)
else
BlzFrameSetText(PuzzleData.InfoTextFrame, "")
PauseTimer(GetExpiredTimer())
repeat until not table.remove(PuzzleData.ToMove)
testWon()
showPreview()
EnableTrigger(PuzzleData.ButtonClickTrigger)
-- BlzFrameSetEnable(RestartButton, true)
BlzFrameSetEnable(PuzzleData.ButtonShowPreview, true)
end
end, print)
end)
end)
--[[
while (#toMove > 1)
do
local otherIndex = GetRandomInt(1, #PuzzleData.ToMove - 1)
swapTextures(PuzzleData.ToMove[#PuzzleData.ToMove], PuzzleData.ToMove[otherIndex])
table.remove(PuzzleData.ToMove, otherIndex)
table.remove(PuzzleData.ToMove)
end
PuzzleData.ToMove = nil
--]]
-- create a preview
BlzFrameSetTexture(BlzGetFrameByName("PuzzlePreviewTexture", 0), filePath, 0, true)
BlzFrameSetVisible(PuzzleData.Preview, true)
end, print)
end
function showPreview()
BlzFrameSetVisible(PuzzleData.Preview, true)
if PuzzleData.PreviewTime and PuzzleData.PreviewTime > 0 then
TimerStart(PuzzleData.PreviewTimer, PuzzleData.PreviewTime, false, function()
BlzFrameSetVisible(PuzzleData.Preview , false)
end)
end
end
do
local realInitBlizzard = InitBlizzard
function InitBlizzard()
BlzFrameSetAbsPoint(BlzGetFrameByName("ConsoleUI",0), FRAMEPOINT_BOTTOM, 0.4, -0.18)
SelectPuzzleContainerFrame = BlzCreateFrameByType("FRAME", "", BlzGetOriginFrame(ORIGIN_FRAME_GAME_UI, 0), "", 0)
BlzFrameSetSize(SelectPuzzleContainerFrame, 0.4, 0.3)
BlzFrameSetAbsPoint(SelectPuzzleContainerFrame, FRAMEPOINT_TOPLEFT, 0.4, 0.5)
SelectionTable = FrameFlow.create(SelectPuzzleContainerFrame, true)
--TimerStart(CreateTimer(), 1.0, false, function()
for index, value in ipairs(PuzzlePathOptionsBigImages)
do
local buttonFrame = BlzCreateFrame("MyButton", SelectPuzzleContainerFrame, 0, 0)
BlzFrameSetTexture(BlzGetFrameByName("MyButtonBackdrop", 0), value, 0, true)
PuzzleData[buttonFrame] = value
FrameFlow.add(SelectionTable, buttonFrame, true)
BlzTriggerRegisterFrameEvent(PuzzleData.DialogTrigger, buttonFrame, FRAMEEVENT_CONTROL_CLICK)
end
for index, value in ipairs(PuzzlePathOptionsCommand)
do
local buttonFrame = BlzCreateFrame("MyButton", SelectPuzzleContainerFrame, 0, 0)
PuzzleData[buttonFrame] = value
BlzFrameSetTexture(BlzGetFrameByName("MyButtonBackdrop", 0), value, 0, true)
FrameFlow.add(SelectionTable, buttonFrame, true)
BlzTriggerRegisterFrameEvent(PuzzleData.DialogTrigger, buttonFrame, FRAMEEVENT_CONTROL_CLICK)
end
FrameFlow.fit(SelectionTable, 1)
--DestroyTimer(GetExpiredTimer())
--end)
BlzFrameSetVisible(SelectPuzzleContainerFrame, false)
realInitBlizzard()
end
end
TimerStart(CreateTimer(), 0.1, false, function()
BlzFrameClearAllPoints(BlzGetOriginFrame(ORIGIN_FRAME_CHAT_MSG, 0))
BlzFrameSetAbsPoint(BlzGetOriginFrame(ORIGIN_FRAME_CHAT_MSG, 0), FRAMEPOINT_TOPLEFT, 0.01, 0.25)
BlzFrameSetAbsPoint(BlzGetOriginFrame(ORIGIN_FRAME_CHAT_MSG, 0), FRAMEPOINT_BOTTOMRIGHT, 0.29, 0.1)
BlzFrameClearAllPoints(BlzGetOriginFrame(ORIGIN_FRAME_UBERTOOLTIP, 0))
BlzFrameSetAbsPoint(BlzGetOriginFrame(ORIGIN_FRAME_UBERTOOLTIP, 0), FRAMEPOINT_BOTTOMRIGHT, 0.8, 0.0)
--move the ResourceBarFrame outside of the top screen, but only a little bit to show apm ping fps
BlzFrameClearAllPoints(BlzGetFrameByName("ResourceBarFrame",0))
BlzFrameSetAbsPoint(BlzGetFrameByName("ResourceBarFrame",0), FRAMEPOINT_BOTTOMLEFT, 0.95, 0.608)
BlzFrameSetAbsPoint(BlzGetFrameByName("ResourceBarFrame",0), FRAMEPOINT_TOPRIGHT, 1.2, 0.62)
end)
-- from triggerhappy
player_color = {
"ff0303",
"0042ff",
"1ce6b9",
"540081",
"fffc01",
"fe8a0e",
"20c000",
"e55bb0",
"959697",
"7ebff1",
"106246",
"4e2a04",
"9B0000",
"0000C3",
"00EAFF",
"BE00FE",
"EBCD87",
"F8A48B",
"BFFF80",
"DCB9EB",
"282828",
"EBF0FF",
"00781E",
"A46F33"
}
function GetPlayerColorIndex(player)
local playerColor = GetPlayerColor(player)
for playerIndex = 0, bj_MAX_PLAYERS - 1 do
if playerColor == ConvertPlayerColor(playerIndex) then
return playerIndex
end
end
return 0
end
function table.merge(gainingTable, tableRead)
for index, value in ipairs(tableRead)
do
table.insert(gainingTable, value)
end
end
TimerStart(CreateTimer(), 0, false, function()
xpcall(function()
-- UI setup
BlzHideOriginFrames(true)
BlzFrameSetVisible(BlzGetFrameByName("UpperButtonBarFrame",0), true)
BlzFrameSetVisible(BlzGetFrameByName("ResourceBarFrame",0), true)
BlzFrameSetVisible(BlzGetFrameByName("UpperButtonBarQuestsButton",0), false)
EnableMinimapFilterButtons(false, false)
EnableDragSelect(false, false)
EnablePreSelect(false, false)
EnableSelect(false, false)
EnableOcclusion(false)
EnableWorldFogBoundary(false)
FogMaskEnable(false)
FogEnable(false)
--BlzFrameSetAllPoints(BlzGetOriginFrame(ORIGIN_FRAME_WORLD_FRAME, 0), BlzGetOriginFrame(ORIGIN_FRAME_GAME_UI, 0))
-- take away the world
local worldFrame = BlzGetOriginFrame(ORIGIN_FRAME_WORLD_FRAME, 0)
BlzFrameClearAllPoints(worldFrame)
BlzFrameSetAbsPoint(worldFrame, FRAMEPOINT_TOPLEFT, 0, 0)
BlzFrameSetAbsPoint(worldFrame, FRAMEPOINT_TOPRIGHT, 0, 0)
BlzFrameSetAbsPoint(worldFrame, FRAMEPOINT_BOTTOMLEFT, 0, 0)
BlzFrameSetAbsPoint(worldFrame, FRAMEPOINT_BOTTOMRIGHT, 0, 0)
PuzzleData.ChatBox = BlzCreateFrame("PuzzleBorderOnly", BlzGetOriginFrame(ORIGIN_FRAME_GAME_UI, 0), 0, 0)
BlzFrameSetPoint(PuzzleData.ChatBox, FRAMEPOINT_TOPLEFT, BlzGetOriginFrame(ORIGIN_FRAME_CHAT_MSG, 0), FRAMEPOINT_TOPLEFT, -0.005, 0.005)
BlzFrameSetPoint(PuzzleData.ChatBox, FRAMEPOINT_BOTTOMRIGHT, BlzGetOriginFrame(ORIGIN_FRAME_CHAT_MSG, 0), FRAMEPOINT_BOTTOMRIGHT, 0.005, -0.005)
if PuzzleData.BackgroundFilePath then
PuzzleData.PuzzleBackground = BlzCreateSimpleFrame("SimpleBackground", BlzGetOriginFrame(ORIGIN_FRAME_GAME_UI, 0), 0)
PuzzleData.PuzzleBackgroundTexture = BlzGetFrameByName("SimpleBackgroundTexture", 0)
BlzFrameSetTexture(PuzzleData.PuzzleBackgroundTexture, PuzzleData.BackgroundFilePath, 0, false)
BlzFrameSetAlpha(PuzzleData.PuzzleBackground, PuzzleData.BackgroundAlpha)
BlzFrameSetAbsPoint(PuzzleData.PuzzleBackground, FRAMEPOINT_TOPLEFT, 0.3, 0.535)
BlzFrameSetVisible(PuzzleData.PuzzleBackground, false)
end
PuzzleData.PuzzleBox = BlzCreateFrame("PuzzleBorderOnly", BlzGetOriginFrame(ORIGIN_FRAME_GAME_UI, 0), 0, 0)
BlzFrameSetVisible(PuzzleData.PuzzleBox, false)
-- Update the display of time played.
TimerStart(PuzzleData.ExpiredTimeUpdate, 0.1, true, function()
BlzFrameSetText(PuzzleData.TimeExpiredFrameValue, string.format( "%%.1f",TimerGetElapsed(PuzzleData.ExpiredTime)))
end)
-- Announce Leavers
local leaveTrigger = CreateTrigger()
TriggerAddAction(leaveTrigger, function()
local player = GetTriggerPlayer()
print("|cff"..player_color[GetPlayerColorIndex(player) + 1]..GetPlayerName(player).."|r has left the game.")
ForceRemovePlayer(bj_FORCE_ALL_PLAYERS, player)
ForceRemovePlayer(RestartButtonForce, player)
--DisplayTimedTextFromPlayer(player, 0, 0, 60, GetLocalizedString( "PLAYER_LEFT_GAME" ))
end)
PuzzleData.ProgressFrameBox = BlzCreateFrame("EscMenuControlBackdropTemplate", BlzGetOriginFrame(ORIGIN_FRAME_GAME_UI, 0), 0, 0)
BlzFrameSetAbsPoint(PuzzleData.ProgressFrameBox, FRAMEPOINT_TOPLEFT, 0.01, 0.56)
WinShareTrigger = CreateTrigger()
ProgressShareTrigger = CreateTrigger()
local prevPlayerFrame = nil
local countingPlayers = 0
for playerIndex = 0, bj_MAX_PLAYERS -1 do
local player = Player(playerIndex)
TriggerRegisterPlayerEvent(leaveTrigger, player, EVENT_PLAYER_LEAVE)
BlzTriggerRegisterPlayerSyncEvent(WinShareTrigger, Player(playerIndex), "Win", false)
BlzTriggerRegisterPlayerSyncEvent(ProgressShareTrigger, Player(playerIndex), "Progress", false)
PuzzleData[player] = {}
if GetPlayerSlotState(player) == PLAYER_SLOT_STATE_PLAYING and GetPlayerController(player) == MAP_CONTROL_USER then
countingPlayers = countingPlayers + 1
local frame = BlzCreateFrameByType("TEXT", "", PuzzleData.ProgressFrameBox, "", 0)
BlzFrameSetSize(frame, 0.12, 0.015)
BlzFrameSetScale(frame, 1.35)
BlzFrameSetEnable(frame, false)
if prevPlayerFrame then
BlzFrameSetPoint(frame, FRAMEPOINT_TOPLEFT, prevPlayerFrame, FRAMEPOINT_BOTTOMLEFT, 0, 0)
else
BlzFrameSetPoint(frame, FRAMEPOINT_TOPLEFT, PuzzleData.ProgressFrameBox, FRAMEPOINT_TOPLEFT, 0.005, -0.005)
end
PuzzleData[player].ProgressFrameName = frame
prevPlayerFrame = frame
BlzFrameSetText(frame, "|cff"..player_color[GetPlayerColorIndex(player) + 1] ..GetPlayerName(player) .."|r:")
local frame = BlzCreateFrameByType("TEXT", "", PuzzleData.ProgressFrameBox, "", 0)
-- BlzFrameSetSize(frame, 0.0, 0.015)
BlzFrameSetScale(frame, 1.35)
BlzFrameSetEnable(frame, false)
BlzFrameSetPoint(frame, FRAMEPOINT_TOPLEFT, PuzzleData[player].ProgressFrameName, FRAMEPOINT_TOPRIGHT, 0, 0)
PuzzleData[player].ProgressFrameValue = frame
end
end
BlzFrameSetSize(PuzzleData.ProgressFrameBox, 0.25, 0.02 + 0.02 * countingPlayers)
--BlzFrameSetPoint(PuzzleData.ProgressFrameBox, FRAMEPOINT_BOTTOMRIGHT, prevPlayerFrame, FRAMEPOINT_BOTTOMRIGHT, 0.005, -0.005)
TriggerAddAction(WinShareTrigger, function()
local text = BlzGetTriggerSyncData()
local seperatorIndex = string.find(text, ",")
local tries = string.sub(text, 1, seperatorIndex - 1)
local time = string.sub(text, seperatorIndex + 1)
BlzFrameSetText(PuzzleData[GetTriggerPlayer()].ProgressFrameValue, time.."s ("..tries..")")
end)
TriggerAddAction(ProgressShareTrigger, function()
BlzFrameSetText(PuzzleData[GetTriggerPlayer()].ProgressFrameValue, BlzGetTriggerSyncData().."%%")
end)
PuzzleData.ButtonShowPreview = BlzCreateFrameByType("GLUETEXTBUTTON", "", BlzGetOriginFrame(ORIGIN_FRAME_GAME_UI, 0), "ScriptDialogButton", 0)
BlzFrameSetAbsPoint(PuzzleData.ButtonShowPreview, FRAMEPOINT_TOPLEFT, 0, 0.6)
BlzFrameSetSize(PuzzleData.ButtonShowPreview, 0.085, 0.03)
BlzFrameSetText(PuzzleData.ButtonShowPreview, "Reshow Preview (1)")
BlzFrameSetEnable(PuzzleData.ButtonShowPreview, false)
local reshowTrigger = CreateTrigger()
BlzTriggerRegisterFrameEvent(reshowTrigger, PuzzleData.ButtonShowPreview, FRAMEEVENT_CONTROL_CLICK)
TriggerAddAction(reshowTrigger, function()
if GetTriggerPlayer() == GetLocalPlayer() then
BlzFrameSetEnable(BlzGetTriggerFrame(), false)
end
showPreview()
end)
PuzzleData.InfoTextFrame = BlzCreateFrameByType("TEXT", "", BlzGetOriginFrame(ORIGIN_FRAME_GAME_UI, 0), "", 0)
BlzFrameSetScale(PuzzleData.InfoTextFrame, 1.5)
BlzFrameSetAbsPoint(PuzzleData.InfoTextFrame, FRAMEPOINT_LEFT, 0, 0.05)
--BlzFrameSetText(PuzzleData.InfoTextFrame, "Write 20, 18, 16, 14, 12, 10, 9, 8, 7, 6, 5, 4 or 3 to start a puzzle")
BlzFrameSetEnable(PuzzleData.InfoTextFrame, false)
PuzzleData.TimeExpiredFrameLabel = BlzCreateFrameByType("TEXT", "", BlzGetOriginFrame(ORIGIN_FRAME_GAME_UI, 0), "", 0)
BlzFrameSetScale(PuzzleData.TimeExpiredFrameLabel, 1.5)
BlzFrameSetAbsPoint(PuzzleData.TimeExpiredFrameLabel, FRAMEPOINT_TOPLEFT, 0.46, 0.59)
BlzFrameSetText(PuzzleData.TimeExpiredFrameLabel, GetLocalizedString("COLON_GAME_TIME"))
BlzFrameSetEnable(PuzzleData.TimeExpiredFrameLabel, false)
PuzzleData.TimeExpiredFrameValue = BlzCreateFrameByType("TEXT", "", BlzGetOriginFrame(ORIGIN_FRAME_GAME_UI, 0), "", 0)
BlzFrameSetScale(PuzzleData.TimeExpiredFrameValue, 1.5)
BlzFrameSetPoint(PuzzleData.TimeExpiredFrameValue, FRAMEPOINT_LEFT, PuzzleData.TimeExpiredFrameLabel, FRAMEPOINT_RIGHT, 0.002, 0)
BlzFrameSetEnable(PuzzleData.TimeExpiredFrameValue, false)
PuzzleData.ImageNameFrame = BlzCreateFrameByType("TEXT", "", BlzGetOriginFrame(ORIGIN_FRAME_GAME_UI, 0), "", 0)
BlzFrameSetScale(PuzzleData.ImageNameFrame, 1.5)
BlzFrameSetAbsPoint(PuzzleData.ImageNameFrame, FRAMEPOINT_RIGHT, 0.79, 0.0225)
BlzFrameSetEnable(PuzzleData.ImageNameFrame, false)
BlzFrameSetVisible(PuzzleData.InfoTextFrame, false)
PuzzleData.Indicator = BlzCreateFrameByType("SPRITE", "", BlzGetOriginFrame(ORIGIN_FRAME_GAME_UI, 0), "", 0)
BlzFrameSetModel(PuzzleData.Indicator, "UI\\Feedback\\Autocast\\UI-ModalButtonOn.mdl", 0)
BlzFrameSetSize(PuzzleData.Indicator, 0.0001, 0.0001)
local dialog = BlzCreateFrame("EscMenuBackdrop", BlzGetOriginFrame(ORIGIN_FRAME_GAME_UI, 0), 0, 0)
local diaglogButtonBig = BlzCreateFrameByType("GLUETEXTBUTTON", "", dialog, "ScriptDialogButton", 0)
local diaglogButtonAll = BlzCreateFrameByType("GLUETEXTBUTTON", "", dialog, "ScriptDialogButton", 0)
local diaglogButtonCommandButton = BlzCreateFrameByType("GLUETEXTBUTTON", "", dialog, "ScriptDialogButton", 0)
local diaglogButtonSelect = BlzCreateFrameByType("GLUETEXTBUTTON", "", dialog, "ScriptDialogButton", 0)
RestartButton = BlzCreateFrameByType("GLUETEXTBUTTON", "", BlzGetOriginFrame(ORIGIN_FRAME_GAME_UI, 0), "ScriptDialogButton", 0)
RestartButtonForce = CreateForce()
BlzFrameSetText(RestartButton, "End Puzzle")
BlzFrameSetAllPoints(RestartButton, BlzGetFrameByName("UpperButtonBarAlliesButton", 0))
BlzFrameSetVisible(BlzGetFrameByName("UpperButtonBarAlliesButton", 0), false)
RestartButtonTrigger = CreateTrigger()
BlzTriggerRegisterFrameEvent(RestartButtonTrigger, RestartButton, FRAMEEVENT_CONTROL_CLICK)
TriggerAddAction(RestartButtonTrigger, function()
ForceAddPlayer(RestartButtonForce, GetTriggerPlayer())
local voteNeeded = CountPlayersInForceBJ(bj_FORCE_ALL_PLAYERS)
local voteHave = CountPlayersInForceBJ(RestartButtonForce)
BlzFrameSetText(RestartButton, "End Puzzle ("..voteHave.."/"..voteNeeded..")")
if (PuzzleData.AdminMode and GetTriggerPlayer() == Player(0)) or voteHave >= voteNeeded then
BlzFrameSetText(RestartButton, "End Puzzle")
DestroyPuzzle()
ForceClear(RestartButtonForce)
end
end)
PuzzleStartFrame = dialog
BlzFrameSetText(diaglogButtonBig, "Big Images")
BlzFrameSetText(diaglogButtonAll, "All")
BlzFrameSetText(diaglogButtonSelect, "Select")
BlzFrameSetText(diaglogButtonCommandButton, "Command Button Icons")
BlzFrameSetPoint(diaglogButtonBig, FRAMEPOINT_TOP, dialog, FRAMEPOINT_TOP, 0, -0.03)
BlzFrameSetPoint(diaglogButtonAll, FRAMEPOINT_TOP, diaglogButtonBig, FRAMEPOINT_BOTTOM, 0, 0)
BlzFrameSetPoint(diaglogButtonCommandButton, FRAMEPOINT_TOP, diaglogButtonAll, FRAMEPOINT_BOTTOM, 0, 0)
BlzFrameSetPoint(diaglogButtonSelect, FRAMEPOINT_TOP, diaglogButtonCommandButton, FRAMEPOINT_BOTTOM, 0, 0)
BlzFrameSetAbsPoint(dialog, FRAMEPOINT_TOPLEFT, 0.4, 0.5)
BlzFrameSetSize(dialog, 0.288, 0.19)
BlzFrameSetVisible(dialog, GetLocalPlayer() == Player(0))
BlzTriggerRegisterFrameEvent(PuzzleData.DialogTrigger, diaglogButtonSelect, FRAMEEVENT_CONTROL_CLICK)
BlzTriggerRegisterFrameEvent(PuzzleData.DialogTrigger, diaglogButtonBig, FRAMEEVENT_CONTROL_CLICK)
BlzTriggerRegisterFrameEvent(PuzzleData.DialogTrigger, diaglogButtonAll, FRAMEEVENT_CONTROL_CLICK)
BlzTriggerRegisterFrameEvent(PuzzleData.DialogTrigger, diaglogButtonCommandButton, FRAMEEVENT_CONTROL_CLICK)
TriggerAddAction(PuzzleData.DialogTrigger, function()
local button = BlzGetTriggerFrame()
if button == diaglogButtonBig then
table.merge(PuzzlePathOptions, PuzzlePathOptionsBigImages)
elseif button == diaglogButtonCommandButton then
table.merge(PuzzlePathOptions, PuzzlePathOptionsCommand)
elseif button == diaglogButtonAll then
table.merge(PuzzlePathOptions, PuzzlePathOptionsCommand)
table.merge(PuzzlePathOptions, PuzzlePathOptionsBigImages)
elseif button == diaglogButtonSelect then
BlzFrameSetVisible(SelectPuzzleContainerFrame, GetLocalPlayer() == GetTriggerPlayer())
BlzFrameSetVisible(dialog, false)
return
elseif BlzFrameGetName(button) == "MyButton" then
table.insert(PuzzlePathOptions, PuzzleData[button])
BlzFrameSetVisible(SelectPuzzleContainerFrame, false)
end
BlzFrameSetVisible(dialog, false)
BlzFrameSetVisible(PuzzleData.InfoTextFrame, true)
BlzFrameSetVisible(PuzzlePickSizeFrame, GetLocalPlayer() == Player(0))
end)
PuzzlePickSizeFrame = BlzCreateFrame("EscMenuBackdrop", BlzGetOriginFrame(ORIGIN_FRAME_GAME_UI, 0), 0, 0)
PuzzlePickSizeFrame3x3 = BlzCreateFrame("PuzzleSmallButton", PuzzlePickSizeFrame, 0, 0)
PuzzlePickSizeFrame4x4 = BlzCreateFrame("PuzzleSmallButton", PuzzlePickSizeFrame, 0, 0)
PuzzlePickSizeFrame5x5 = BlzCreateFrame("PuzzleSmallButton", PuzzlePickSizeFrame, 0, 0)
PuzzlePickSizeFrame6x6 = BlzCreateFrame("PuzzleSmallButton", PuzzlePickSizeFrame, 0, 0)
PuzzlePickSizeFrame7x7 = BlzCreateFrame("PuzzleSmallButton", PuzzlePickSizeFrame, 0, 0)
PuzzlePickSizeFrame8x8 = BlzCreateFrame("PuzzleSmallButton", PuzzlePickSizeFrame, 0, 0)
PuzzlePickSizeFrame9x9 = BlzCreateFrame("PuzzleSmallButton", PuzzlePickSizeFrame, 0, 0)
PuzzlePickSizeFrame10x10 = BlzCreateFrame("PuzzleSmallButton", PuzzlePickSizeFrame, 0, 0)
PuzzlePickSizeFrame12x12 = BlzCreateFrame("PuzzleSmallButton", PuzzlePickSizeFrame, 0, 0)
PuzzlePickSizeFrame14x14 = BlzCreateFrame("PuzzleSmallButton", PuzzlePickSizeFrame, 0, 0)
PuzzlePickSizeFrame16x16 = BlzCreateFrame("PuzzleSmallButton", PuzzlePickSizeFrame, 0, 0)
PuzzlePickSizeFrame18x18 = BlzCreateFrame("PuzzleSmallButton", PuzzlePickSizeFrame, 0, 0)
PuzzlePickSizeFrame20x20 = BlzCreateFrame("PuzzleSmallButton", PuzzlePickSizeFrame, 0, 0)
PuzzleData[PuzzlePickSizeFrame3x3] = {3,3}
PuzzleData[PuzzlePickSizeFrame4x4] = {4,4}
PuzzleData[PuzzlePickSizeFrame5x5] = {5,5}
PuzzleData[PuzzlePickSizeFrame6x6] = {6,6}
PuzzleData[PuzzlePickSizeFrame7x7] = {7,7}
PuzzleData[PuzzlePickSizeFrame8x8] = {8,8}
PuzzleData[PuzzlePickSizeFrame9x9] = {9,9}
PuzzleData[PuzzlePickSizeFrame10x10] = {10,10}
PuzzleData[PuzzlePickSizeFrame12x12] = {12,12}
PuzzleData[PuzzlePickSizeFrame14x14] = {14,14}
PuzzleData[PuzzlePickSizeFrame16x16] = {16,16}
PuzzleData[PuzzlePickSizeFrame18x18] = {18,18}
PuzzleData[PuzzlePickSizeFrame20x20] = {20,20}
BlzFrameSetText(PuzzlePickSizeFrame3x3, "3x3")
BlzFrameSetText(PuzzlePickSizeFrame4x4, "4x4")
BlzFrameSetText(PuzzlePickSizeFrame5x5, "5x5")
BlzFrameSetText(PuzzlePickSizeFrame6x6, "6x6")
BlzFrameSetText(PuzzlePickSizeFrame7x7, "7x7")
BlzFrameSetText(PuzzlePickSizeFrame8x8, "8x8")
BlzFrameSetText(PuzzlePickSizeFrame9x9, "9x9")
BlzFrameSetText(PuzzlePickSizeFrame10x10, "10x10")
BlzFrameSetText(PuzzlePickSizeFrame12x12, "12x12")
BlzFrameSetText(PuzzlePickSizeFrame14x14, "14x14")
BlzFrameSetText(PuzzlePickSizeFrame16x16, "16x16")
BlzFrameSetText(PuzzlePickSizeFrame18x18, "18x18")
BlzFrameSetText(PuzzlePickSizeFrame20x20, "20x20")
BlzFrameSetAbsPoint(PuzzlePickSizeFrame, FRAMEPOINT_TOPLEFT, 0.4, 0.5)
BlzFrameSetSize(PuzzlePickSizeFrame, 0.2, 0.325)
BlzFrameSetPoint(PuzzlePickSizeFrame3x3, FRAMEPOINT_TOPLEFT, PuzzlePickSizeFrame, FRAMEPOINT_TOPLEFT, 0.03, -0.03)
BlzFrameSetPoint(PuzzlePickSizeFrame4x4, FRAMEPOINT_TOPLEFT, PuzzlePickSizeFrame3x3, FRAMEPOINT_BOTTOMLEFT, 0, 0)
BlzFrameSetPoint(PuzzlePickSizeFrame5x5, FRAMEPOINT_TOPLEFT, PuzzlePickSizeFrame4x4, FRAMEPOINT_BOTTOMLEFT, 0, 0)
BlzFrameSetPoint(PuzzlePickSizeFrame6x6, FRAMEPOINT_TOPLEFT, PuzzlePickSizeFrame5x5, FRAMEPOINT_BOTTOMLEFT, 0, 0)
BlzFrameSetPoint(PuzzlePickSizeFrame7x7, FRAMEPOINT_TOPLEFT, PuzzlePickSizeFrame6x6, FRAMEPOINT_BOTTOMLEFT, 0, 0)
BlzFrameSetPoint(PuzzlePickSizeFrame8x8, FRAMEPOINT_TOPLEFT, PuzzlePickSizeFrame7x7, FRAMEPOINT_BOTTOMLEFT, 0, 0)
BlzFrameSetPoint(PuzzlePickSizeFrame9x9, FRAMEPOINT_TOPLEFT, PuzzlePickSizeFrame8x8, FRAMEPOINT_BOTTOMLEFT, 0, 0)
BlzFrameSetPoint(PuzzlePickSizeFrame10x10, FRAMEPOINT_TOPRIGHT, PuzzlePickSizeFrame, FRAMEPOINT_TOPRIGHT, -0.03, -0.03)
BlzFrameSetPoint(PuzzlePickSizeFrame12x12, FRAMEPOINT_TOPLEFT, PuzzlePickSizeFrame10x10, FRAMEPOINT_BOTTOMLEFT, 0, 0)
BlzFrameSetPoint(PuzzlePickSizeFrame14x14, FRAMEPOINT_TOPLEFT, PuzzlePickSizeFrame12x12, FRAMEPOINT_BOTTOMLEFT, 0, 0)
BlzFrameSetPoint(PuzzlePickSizeFrame16x16, FRAMEPOINT_TOPLEFT, PuzzlePickSizeFrame14x14, FRAMEPOINT_BOTTOMLEFT, 0, 0)
BlzFrameSetPoint(PuzzlePickSizeFrame18x18, FRAMEPOINT_TOPLEFT, PuzzlePickSizeFrame16x16, FRAMEPOINT_BOTTOMLEFT, 0, 0)
BlzFrameSetPoint(PuzzlePickSizeFrame20x20, FRAMEPOINT_TOPLEFT, PuzzlePickSizeFrame18x18, FRAMEPOINT_BOTTOMLEFT, 0, 0)
BlzFrameSetVisible(PuzzlePickSizeFrame, false)
local PuzzlePickSizeTrigger = CreateTrigger()
BlzTriggerRegisterFrameEvent(PuzzlePickSizeTrigger, PuzzlePickSizeFrame3x3, FRAMEEVENT_CONTROL_CLICK)
BlzTriggerRegisterFrameEvent(PuzzlePickSizeTrigger, PuzzlePickSizeFrame4x4, FRAMEEVENT_CONTROL_CLICK)
BlzTriggerRegisterFrameEvent(PuzzlePickSizeTrigger, PuzzlePickSizeFrame5x5, FRAMEEVENT_CONTROL_CLICK)
BlzTriggerRegisterFrameEvent(PuzzlePickSizeTrigger, PuzzlePickSizeFrame6x6, FRAMEEVENT_CONTROL_CLICK)
BlzTriggerRegisterFrameEvent(PuzzlePickSizeTrigger, PuzzlePickSizeFrame7x7, FRAMEEVENT_CONTROL_CLICK)
BlzTriggerRegisterFrameEvent(PuzzlePickSizeTrigger, PuzzlePickSizeFrame8x8, FRAMEEVENT_CONTROL_CLICK)
BlzTriggerRegisterFrameEvent(PuzzlePickSizeTrigger, PuzzlePickSizeFrame9x9, FRAMEEVENT_CONTROL_CLICK)
BlzTriggerRegisterFrameEvent(PuzzlePickSizeTrigger, PuzzlePickSizeFrame10x10, FRAMEEVENT_CONTROL_CLICK)
BlzTriggerRegisterFrameEvent(PuzzlePickSizeTrigger, PuzzlePickSizeFrame12x12, FRAMEEVENT_CONTROL_CLICK)
BlzTriggerRegisterFrameEvent(PuzzlePickSizeTrigger, PuzzlePickSizeFrame14x14, FRAMEEVENT_CONTROL_CLICK)
BlzTriggerRegisterFrameEvent(PuzzlePickSizeTrigger, PuzzlePickSizeFrame16x16, FRAMEEVENT_CONTROL_CLICK)
BlzTriggerRegisterFrameEvent(PuzzlePickSizeTrigger, PuzzlePickSizeFrame18x18, FRAMEEVENT_CONTROL_CLICK)
BlzTriggerRegisterFrameEvent(PuzzlePickSizeTrigger, PuzzlePickSizeFrame20x20, FRAMEEVENT_CONTROL_CLICK)
TriggerAddAction(PuzzlePickSizeTrigger, function()
CreatePuzzle(PuzzleData[BlzGetTriggerFrame()][1] , PuzzleData[BlzGetTriggerFrame()][2])
BlzFrameSetVisible(PuzzlePickSizeFrame, false)
end)
PuzzleData.Preview = BlzCreateSimpleFrame("PuzzlePreview", BlzGetOriginFrame(ORIGIN_FRAME_GAME_UI, 0), 0)
BlzFrameSetAbsPoint(PuzzleData.Preview , FRAMEPOINT_TOP, 0.4, 0.6)
BlzFrameSetVisible(PuzzleData.Preview, false)
ForceEnumPlayers(bj_FORCE_ALL_PLAYERS, Filter(function() return GetPlayerController(GetFilterPlayer()) == MAP_CONTROL_USER end))
TimerStart(PuzzleData.ExpiredTime, 86400, false, nil)
DestroyTimer(GetExpiredTimer())
end, print)
end)
Puzzle
1.5)
The host can now select an image used for the puzzle
The host can now End the Puzzle regardless of votes.
From 14x14 the gap between Fragments is smaller.
Added images from Hearthstone.
1.4)
Added Boxes to Chat, Score and Puzzle.
When the Puzzle was finished the gaps between the Fragments are removed.
The Puzzle now has a Teal Background, correct fragments are a little bit teal.
One can now always end the current puzzle and start another one.
The amount of Puzzle fragements are now seleceted with buttons.
Disabled The logo Images, Images with Transpareny are kinda bad for the new concept in 1.4.