Name | Type | is_array | initial_value |
--SETTINGS--
colorDuration = 2
ticktimeMin = 0.070
speedupinterval = 5
speedupvalue = 0.0025
queueLimit = 10
textures = {
"ui\\glues\\scorescreen\\scorescreen-orcvictoryexpansion\\scorescreen-orcvictoryexpansion",
"ui\\glues\\scorescreen\\scorescreen-nightelfvictoryexpansion\\scorescreen-nightelfvictoryexpansion",
"ui\\glues\\scorescreen\\scorescreen-nightelfvictory\\scorescreen-nightelfvictory",
"ui\\glues\\scorescreen\\scorescreen-humanvictoryexpansion\\scorescreen-humanvictoryexpansion",
"ui\\glues\\scorescreen\\scorescreen-orcvictory\\scorescreen-orcvictory",
"ui\\glues\\scorescreen\\scorescreen-undeadvictoryexpansion\\scorescreen-undeadvictoryexpansion",
"ui\\glues\\scorescreen\\scorescreen-undeadvictory\\scorescreen-undeadvictory",
"ui\\glues\\scorescreen\\scorescreen-humanvictory\\scorescreen-humanvictory"
}
--PRESETS--
smallfield = {Rows = 15, Columns = 20, Cellsize = 0.04, Ticktime = 0.1375, FoodTexture = "food128", Goal = 75, Name = "Small Field"}
largefield = {Rows = 30, Columns = 40, Cellsize = 0.02, Ticktime = 0.1300, FoodTexture = "food64", Goal = 100, Name = "Large Field"}
preset = smallfield
--VARIABLES--
score = 0
impossiblemode = false
gamestarted = false
ispaused = false
ismoving = false
firsttry = true
ispausepossible = false
isSpeedUpDisplaying = false
endofgame = false
foodX = 1
foodY = 1
headX = 5
headY = 8
snakeSegments = {}
directionQueue = {"right"}
ispossible = true
function Cell(x, y)
return BlzGetFrameByName(x.."_"..y, 1)
end
function DynamicColor()
CinematicFilterGenericBJ( colorDuration, BLEND_MODE_BLEND, "ReplaceableTextures\\CameraMasks\\White_mask", 75.00, 35.00, 35.00, 0.00, 35.00, 75.00, 35.00, 0 )
TimerStart(CreateTimer(), colorDuration+0.05, false, function()
CinematicFilterGenericBJ( colorDuration, BLEND_MODE_BLEND, "ReplaceableTextures\\CameraMasks\\White_mask", 35.00, 75.00, 35.0, 0.00, 35.00, 35.00, 75.00, 0 )
DestroyTimer(GetExpiredTimer())
end)
TimerStart(CreateTimer(), (colorDuration+0.05)*2, false, function()
CinematicFilterGenericBJ( colorDuration, BLEND_MODE_BLEND, "ReplaceableTextures\\CameraMasks\\White_mask", 35.00, 35.00, 75.00, 0.00, 75.00, 35.00, 35.00, 0 )
DestroyTimer(GetExpiredTimer())
end)
TimerStart(CreateTimer(), (colorDuration+0.05)*3, false, function()
DynamicColor()
DestroyTimer(GetExpiredTimer())
end)
end
function LoadMiniGame()
LoadUI()
TimerStart(CreateTimer(), 0.3, false, function()
KeyTrigger = CreateTrigger()
BlzTriggerRegisterPlayerKeyEvent(KeyTrigger, GetLocalPlayer(), OSKEY_W, 0, true)
BlzTriggerRegisterPlayerKeyEvent(KeyTrigger, GetLocalPlayer(), OSKEY_A, 0, true)
BlzTriggerRegisterPlayerKeyEvent(KeyTrigger, GetLocalPlayer(), OSKEY_S, 0, true)
BlzTriggerRegisterPlayerKeyEvent(KeyTrigger, GetLocalPlayer(), OSKEY_D, 0, true)
BlzTriggerRegisterPlayerKeyEvent(KeyTrigger, GetLocalPlayer(), OSKEY_SPACE, 0, true)
TriggerAddCondition(KeyTrigger, Condition(ControlKeys))
CheckboxTrigger = CreateTrigger()
BlzTriggerRegisterFrameEvent(CheckboxTrigger, Impossible, FRAMEEVENT_CHECKBOX_CHECKED)
BlzTriggerRegisterFrameEvent(CheckboxTrigger, Impossible, FRAMEEVENT_CHECKBOX_UNCHECKED)
TriggerAddCondition(CheckboxTrigger, Condition(ControlCheckbox))
DestroyTimer(GetExpiredTimer())
end)
end
function ControlCheckbox()
if BlzGetTriggerFrameEvent() == FRAMEEVENT_CHECKBOX_CHECKED then
impossiblemode = true
else
impossiblemode = false
end
end
function ChooseField()
rows = preset.Rows
columns = preset.Columns
cellsize = preset.Cellsize
fieldname = preset.Name
foodtexture = preset.FoodTexture
goal = preset.Goal
ticktime = GetTicktime()
local Field = BlzCreateFrameByType("TEXT", "Field", InfoBackground, "", 0)
local FieldText = "|cffffffff"..fieldname.."\n"..rows.."x"..columns.."|r"
CreateTextFrame(Field, -0.13383, 0.585, 0.0, 0.485, 2, FieldText, 1.25)
Score = BlzCreateFrameByType("TEXT", "Score", InfoBackground, "", 0)
local ScoreText = "|cffffffffScore:\n"..score.."/"..goal.."|r"
CreateTextFrame(Score, -0.13383, 0.555, 0.0, 0.455, 2, ScoreText, 1.25)
speed = 1/ticktime
speed = math.ceil(speed*100)/100
Speed = BlzCreateFrameByType("TEXT", "Speed", InfoBackground, "", 0)
local SpeedText = "|cffffffffGame Speed:\n"..speed.." cell/sec|r"
CreateTextFrame(Speed, -0.13383, 0.525, 0.0, 0.425, 2, SpeedText, 1.25)
local AppearanceTimer = CreateTimer()
local AppearanceTimer1 = CreateTimer()
BlzFrameSetVisible(Eye, true)
BlzFrameSetAlpha(Eye, 0)
BlzFrameSetVisible(Eye1, true)
BlzFrameSetAlpha(Eye1, 0)
AnimateFrameAlpha(AppearanceTimer, 0.01, Eye, 0, 255, 3)
AnimateFrameAlpha(AppearanceTimer1, 0.01, Eye1, 0, 255, 3)
for r = 1, rows do
for c = 1, columns do
Frame = BlzCreateFrameByType("BACKDROP", c.."_"..r, Mask, "", 1)
BlzFrameSetAbsPoint(Frame, FRAMEPOINT_TOPLEFT, 0.0+cellsize*(c-1), cellsize+cellsize*(r-1))
BlzFrameSetAbsPoint(Frame, FRAMEPOINT_BOTTOMRIGHT, cellsize+cellsize*(c-1), 0.0+cellsize*(r-1))
BlzFrameSetTexture(Frame, "", 0, true)
BlzFrameSetVisible(Frame, false)
end
end
TimerStart(CreateTimer(), 1.5, false, function()
firsttry = false
StartGame()
DestroyTimer(GetExpiredTimer())
end)
end
function StartGame()
if #snakeSegments > 0 then
for i = 1, #snakeSegments do
BlzFrameSetAlpha(snakeSegments[i], 255)
BlzFrameSetVisible(snakeSegments[i], false)
end
end
snakeSegments = {}
local startY = math.ceil(rows/2)
snakeSegments = {
Cell(3, startY),
Cell(2, startY),
Cell(1, startY),
}
directionQueue = {"right"}
headX = 3
headY = startY
score = 0
BlzFrameSetText(Score, "|cffffffffScore:\n"..score.."/"..goal.."|r")
DisplayStatus("GAME OVER", false)
for i = 1, 3 do
BlzFrameSetVisible(snakeSegments[i], true)
BlzFrameSetTexture(snakeSegments[i], "segment", 0, true)
end
local FadeTimer = CreateTimer()
local FadeTimer1 = CreateTimer()
BlzFrameSetVisible(Eye, true)
BlzFrameSetAlpha(Eye, 255)
BlzFrameSetVisible(Eye1, true)
BlzFrameSetAlpha(Eye1, 255)
TimerStart(CreateTimer(), 1, false, function()
AnimateFrameAlpha(FadeTimer, 0.01, Eye, 255, 0, 3)
AnimateFrameAlpha(FadeTimer1, 0.01, Eye1, 255, 0, 3)
end)
TimerStart(CreateTimer(), 2, false, function()
BlzFrameSetVisible(Eye, false)
BlzFrameSetVisible(Eye1, false)
CreateFood()
SnakeMoving(GetTicktime())
DestroyTimer(GetExpiredTimer())
end)
end
function SnakeMoving(freq) --https://simplegametutorials.github.io/love/snake/
ismoving = true
ticktimer = CreateTimer()
speed = 1/freq
speed = math.ceil(speed*100)/100
BlzFrameSetText(Speed, "|cffffffffGame Speed:\n"..speed.." cell/sec|r")
TimerStart(ticktimer, freq, true, function()
ispausepossible = true
if #directionQueue > 1 then
table.remove(directionQueue, 1)
end
if directionQueue[1] == "right" then
headX = headX + 1
if headX > columns then
headX = 1
end
elseif directionQueue[1] == "left" then
headX = headX - 1
if headX < 1 then
headX = columns
end
elseif directionQueue[1] == "up" then
headY = headY + 1
if headY > rows then
headY = 1
end
elseif directionQueue[1] == "down" then
headY = headY - 1
if headY < 1 then
headY = rows
end
end
for s = 1, #snakeSegments do
if Cell(headX, headY) == snakeSegments[s] then
DestroyTimer(ticktimer)
GameOver()
end
end
if ismoving then
table.insert(snakeSegments, 1, Cell(headX, headY))
BlzFrameSetVisible(Cell(headX, headY), true)
BlzFrameSetTexture(Cell(headX, headY), "segment", 0, true)
if headX ~= foodX or headY ~= foodY then
BlzFrameSetVisible(snakeSegments[#snakeSegments], false)
table.remove(snakeSegments, #snakeSegments)
elseif headX == foodX and headY == foodY then
CreateFood()
score = score + 1
BlzFrameSetText(Score, "|cffffffffScore:\n"..score.."/"..goal.."|r")
if ticktime > ticktimeMin and score < goal then
if math.fmod(score, speedupinterval) == 0 then --speed up
SpeedUpDisplay()
ticktime = ticktime-speedupvalue
DestroyTimer(ticktimer)
SnakeMoving(ticktime)
end
elseif score >= goal then
PlayerWon()
DestroyTimer(ticktimer)
end
end
end
end)
end
function ControlKeys()
if BlzGetTriggerPlayerKey() == OSKEY_SPACE then
if not gamestarted then
DestroySelectUI()
BlzFrameSetVisible(Message, false)
BlzFrameSetVisible(Header, false)
if firsttry then
TimerStart(CreateTimer(), 0.16, false, function()
ChooseField()
DestroyTimer(GetExpiredTimer())
end)
else
StartGame()
end
gamestarted = true
elseif ispausepossible then
if not ispaused and ismoving then
PauseTimer(ticktimer)
DestroyTimer(ticktimer)
ispaused = true
ismoving = false
DisplayStatus("PAUSE", true)
else
SnakeMoving(ticktime)
ispaused = false
DisplayStatus("PAUSE", false)
end
end
if endofgame then
EndGame(false)
end
end
if gamestarted and ismoving and not ispaused then
if #directionQueue < queueLimit then
if BlzGetTriggerPlayerKey() == OSKEY_W and directionQueue[#directionQueue] ~= "down" and directionQueue[#directionQueue] ~= "up" then
table.insert(directionQueue, "up")
elseif BlzGetTriggerPlayerKey() == OSKEY_A and directionQueue[#directionQueue] ~= "right" and directionQueue[#directionQueue] ~= "left" then
table.insert(directionQueue, "left")
elseif BlzGetTriggerPlayerKey() == OSKEY_S and directionQueue[#directionQueue] ~= "up" and directionQueue[#directionQueue] ~= "down" then
table.insert(directionQueue, "down")
elseif BlzGetTriggerPlayerKey() == OSKEY_D and directionQueue[#directionQueue] ~= "left" and directionQueue[#directionQueue] ~= "right" then
table.insert(directionQueue, "right")
end
end
end
if not gamestarted then
if BlzGetTriggerPlayerKey() == OSKEY_A then
BlzFrameSetAbsPoint(Circle, FRAMEPOINT_CENTER, 0.36, 0.412)
preset = smallfield
elseif BlzGetTriggerPlayerKey() == OSKEY_D then
BlzFrameSetAbsPoint(Circle, FRAMEPOINT_CENTER, 0.65, 0.412)
preset = largefield
end
end
end
function CreateFood()
ispossible = true
foodX = math.random(columns)
foodY = math.random(rows)
for i = 1, #snakeSegments do
if Cell(foodX, foodY) == snakeSegments[i] then
ispossible = false
break
end
end
if ispossible then
BlzFrameSetTexture(Cell(foodX, foodY), foodtexture, 0, true)
BlzFrameSetVisible(Cell(foodX, foodY), true)
else
CreateFood()
end
end
function GameOver()
ismoving = false
ispausepossible = false
DisplayStatus("GAME OVER", true)
BlzFrameSetVisible(Message, true)
BlzFrameSetVisible(Cell(foodX, foodY), false)
gamestarted = false
for i = 1, #snakeSegments do
BlzFrameSetAlpha(snakeSegments[i], 50)
end
ticktime = GetTicktime()
end
function LoadUI()
HideDefaultUI()
DynamicColor()
InfoBackground = BlzCreateFrameByType("BACKDROP", "", BlzGetFrameByName("ConsoleUIBackdrop", 0), "", 1)
BlzFrameSetLevel(InfoBackground, 1)
BlzFrameSetAbsPoint(InfoBackground, FRAMEPOINT_TOPLEFT, -0.131, 0.57)
BlzFrameSetAbsPoint(InfoBackground, FRAMEPOINT_BOTTOMRIGHT, 0.0825, 0.3565)
BlzFrameSetTexture(InfoBackground, "ui\\console\\reforged\\minimap-border", 0, true)
BlzFrameSetVisible(InfoBackground, true)
--CUSTOM UI--
--Menu Button
BlzFrameSetVisible(BlzGetFrameByName("UpperButtonBarFrame",0), true)
BlzFrameSetVisible(BlzGetFrameByName("UpperButtonBarAlliesButton",0), false)
BlzFrameSetVisible(BlzGetFrameByName("UpperButtonBarChatButton",0), false)
BlzFrameSetVisible(BlzGetFrameByName("UpperButtonBarQuestsButton",0), false)
BlzFrameClearAllPoints(BlzGetFrameByName("UpperButtonBarFrame",0))
BlzFrameSetScale(BlzGetFrameByName("UpperButtonBarFrame",0), 1.5)
BlzFrameSetAbsPoint(BlzGetFrameByName("UpperButtonBarFrame",0), FRAMEPOINT_TOPLEFT, -0.26065, 0.6)
BlzFrameSetAbsPoint(BlzGetFrameByName("UpperButtonBarFrame",0), FRAMEPOINT_BOTTOMRIGHT, -0.16065, 0.56)
local tooltip = BlzGetOriginFrame(ORIGIN_FRAME_UBERTOOLTIP, 0)
BlzFrameClearAllPoints(tooltip)
BlzFrameSetScale(tooltip, 0.001)
BlzFrameSetAbsPoint(tooltip, FRAMEPOINT_BOTTOMRIGHT, 0.0, 0.0)
--FPS string
local resourceBarFrame = BlzGetFrameByName("ResourceBarFrame", 0)
BlzFrameSetVisible(resourceBarFrame, true)
BlzFrameClearAllPoints(resourceBarFrame)
BlzFrameSetScale(resourceBarFrame, 0.99)
BlzFrameSetAbsPoint(resourceBarFrame, FRAMEPOINT_CENTER, 0.2565, 0.585)
for rbf = 0, 3 do
BlzFrameSetVisible(BlzFrameGetChild(resourceBarFrame, rbf), false)
end
local ResourseBarTextFrames = {
BlzGetFrameByName("ResourceBarGoldText", 0),
BlzGetFrameByName("ResourceBarLumberText", 0),
BlzGetFrameByName("ResourceBarSupplyText", 0),
BlzGetFrameByName("ResourceBarUpkeepText", 0)
}
for f = 1, 4 do
BlzFrameClearAllPoints(ResourseBarTextFrames[f])
BlzFrameSetScale(ResourseBarTextFrames[f], 0.00001)
BlzFrameSetAbsPoint(ResourseBarTextFrames[f], FRAMEPOINT_CENTER, -0.2, 0.0)
end
--custom frames
Mask = BlzCreateFrameByType("BACKDROP", "Mask", BlzGetOriginFrame(ORIGIN_FRAME_WORLD_FRAME, 0), "", 1)
BlzFrameSetAbsPoint(Mask, FRAMEPOINT_TOPLEFT, 0.0, 0.6)
BlzFrameSetAbsPoint(Mask, FRAMEPOINT_BOTTOMRIGHT, 0.8, 0.0)
BlzFrameSetTexture(Mask, "replaceabletextures\\cameramasks\\black_mask", 0, true)
Impossible = BlzCreateFrame("QuestCheckBox", BlzGetFrameByName("ConsoleUIBackdrop", 0), 0, 0)
BlzFrameSetLevel(Impossible, 10)
BlzFrameSetAbsPoint(Impossible, FRAMEPOINT_TOPLEFT, 0.64, 0.21)
BlzFrameSetAbsPoint(Impossible, FRAMEPOINT_BOTTOMRIGHT, 0.66, 0.19)
ImpossibleDesc = BlzCreateFrameByType("TEXT", "ImpossbileDesc", Impossible, "", 0)
CreateTextFrame(ImpossibleDesc, 0.66, 0.21, 0.8, 0.19, 1, "Impossible Mode\n(start with maximum speed)", 0.9)
BlzFrameSetTextAlignment(ImpossibleDesc, TEXT_JUSTIFY_CENTER, TEXT_JUSTIFY_LEFT)
Eye = BlzCreateFrameByType("SPRITE", "Frame", Mask, "", 1)
CreateSpriteFrame(Eye, 0.43, 0.375, 3, "ui\\glues\\battlenet\\battlenetworking\\battlenetworking", 1, false)
Eye1 = BlzCreateFrameByType("SPRITE", "Frame", Mask, "", 1)
CreateSpriteFrame(Eye1, 0.50, 0.375, 3, "ui\\glues\\battlenet\\battlenetworking\\battlenetworking", 1, false)
local Swirl = BlzCreateFrameByType("SPRITE", "Frame", BlzGetFrameByName("ConsoleUIBackdrop", 0), "", 0)
CreateSpriteFrame(Swirl, 0.91, 0.175, 3, "swirl", 7, true)
Circle = BlzCreateFrameByType("SPRITE", "Frame", Mask, "", 1)
CreateSpriteFrame(Circle, 0.36, 0.412, 5, "objects\\startlocation\\startlocation.mdx", 0.00045, true)
local ClickBlocker = BlzCreateFrameByType("TEXT", "name", BlzGetFrameByName("ConsoleUIBackdrop", 0), "", 0)
CreateTextFrame(ClickBlocker, -0.1338, 0.6, 0.936020, 0, 1, "", 1)
BlzFrameSetEnable(ClickBlocker, true)
local Name = BlzCreateFrameByType("TEXT", "name", BlzGetFrameByName("ConsoleUIBackdrop", 0), "", 0)
local NameText = "|cff000000SNAKE\nClassic\n|r"
CreateTextFrame(Name, 0.8, 0.076, 0.936020, 0.0, 5, NameText, 3.14)
Message = BlzCreateFrameByType("TEXT", "name", Mask, "", 0)
local MessageText = "|cffFFCC00Press [SPACE] to start|r"
CreateTextFrame(Message, 0.0, 0.2, 0.8, 0.12, 4, MessageText, 3)
Preset1Info = BlzCreateFrameByType("TEXT", "name", Mask, "", 0)
local Preset1InfoText = "|cffffffff[A]\n"..smallfield.Name.."\n"..smallfield.Columns.."x"..smallfield.Rows.."|r"
CreateTextFrame(Preset1Info, 0.155, 0.405, 0.355, 0.205, 4, Preset1InfoText, 2.75)
Preset2Info = BlzCreateFrameByType("TEXT", "name", Mask, "", 0)
local Preset2InfoText = "|cffffffff[D]\n"..largefield.Name.."\n"..largefield.Columns.."x"..largefield.Rows.."|r"
CreateTextFrame(Preset2Info, 0.445, 0.405, 0.645, 0.205, 4, Preset2InfoText, 2.75)
Header = BlzCreateFrameByType("TEXT", "name", Mask, "", 0)
local HeaderText = "|cffFFCC00Select Field Size [A/D]|r"
CreateTextFrame(Header, 0.0, 0.5, 0.8, 0.42, 3, HeaderText, 3)
Pause = BlzCreateFrameByType("TEXT", "name", Mask, "", 0)
local PauseText = "|c00FF353APAUSE|r"
CreateTextFrame(Pause, 0.0, 0.4, 0.8, 0.2, 5, PauseText, 8)
BlzFrameSetAlpha(Pause, 125)
BlzFrameSetVisible(Pause, false)
end
function DestroySelectUI()
TriggerClearConditions(CheckboxTrigger)
DestroyTrigger(CheckboxTrigger)
local t = {Circle, Preset1Info, Preset2Info, Impossible, ImpossibleDesc}
for i = 1, #t do
BlzFrameSetVisible(t[i], false)
BlzDestroyFrame(t[i])
end
end
function SpeedUpDisplay()
if isSpeedUpDisplaying then
BlzDestroyFrame(SpeedUpFrame)
BlzDestroyFrame(SpeedUpMessage)
DestroyTimer(fadeTimer)
end
local spX = 0.032
local spY = 0.418
local spY1 = 0.5
local fadeTimer = CreateTimer()
local fadeTimer1 = CreateTimer()
local moveUpTimer = CreateTimer()
SpeedUpFrame = BlzCreateFrameByType("BACKDROP", "SpeedUpFrame", Mask, "", 0)
BlzFrameSetLevel(SpeedUpFrame, 6)
BlzFrameSetAbsPoint(SpeedUpFrame, FRAMEPOINT_TOPLEFT, 0.02, 0.43)
BlzFrameSetAbsPoint(SpeedUpFrame, FRAMEPOINT_BOTTOMRIGHT, 0.044, 0.406)
BlzFrameSetTexture(SpeedUpFrame, "ReplaceableTextures\\CommandButtons\\BTNCryptFiendUnBurrow", 0, true)
BlzFrameClearAllPoints(SpeedUpFrame)
SpeedUpMessage = BlzCreateFrameByType("TEXT", "name", SpeedUpFrame, "", 0)
CreateTextFrame(SpeedUpMessage, 0.0, 0.402, 0.064, 0.39, 1, "|cffffffffSpeed Up!|r", 1)
BlzFrameClearAllPoints(SpeedUpMessage)
BlzFrameSetPoint(SpeedUpMessage, FRAMEPOINT_CENTER, SpeedUpFrame, FRAMEPOINT_CENTER, 0, -0.024)
BlzFrameSetSize(SpeedUpFrame, 0.024, 0.024)
isSpeedUpDisplaying = true
AnimateFrameAlpha(fadeTimer, 1/64, SpeedUpFrame, 255, 0, 2)
AnimateFrameAlpha(fadeTimer1, 1/64, SpeedUpMessage, 255, 0, 2)
TimerStart(moveUpTimer, 1/64, true, function()
BlzFrameSetAbsPoint(SpeedUpFrame, FRAMEPOINT_CENTER, spX, spY)
spY = spY + 0.0005
if BlzFrameGetAlpha(SpeedUpFrame) <= 2 then
BlzDestroyFrame(SpeedUpFrame)
BlzDestroyFrame(SpeedUpMessage)
DestroyTimer(moveUpTimer)
isSpeedUpDisplaying = false
end
end)
end
function DisplayStatus(status, visible)
BlzFrameSetVisible(Pause, visible)
BlzFrameSetText(Pause, "|c00FF353A"..status.."|r")
end
function PlayerWon()
BlzFrameSetText(Header, "|cffFFCC00Congratulations! You have won the game!|r")
BlzFrameSetVisible(Header, true)
ispausepossible = false
ismoving = false
BlzFrameSetVisible(Cell(foodX, foodY), false)
local ft = {}
cellsize = 0.1
r = 1
local alpha = 255
local alpha1 = 0
TimerStart(CreateTimer(), 1/64, true, function()
alpha = alpha - 1
if alpha >= alpha1 then
for x = 1, #snakeSegments do
BlzFrameSetAlpha(snakeSegments[x], alpha)
end
else
snakeSegments = {}
DestroyTimer(GetExpiredTimer())
end
end)
TimerStart(CreateTimer(), 2, false, function()
for c = 1, 8 do
Frame = BlzCreateFrameByType("BACKDROP", "end"..c.."_", Mask, "", 1)
BlzFrameSetLevel(Frame, 8)
BlzFrameSetSize(Frame, 0.1, 0.1)
BlzFrameSetAbsPoint(Frame, FRAMEPOINT_CENTER, 0.05+cellsize*(c-1), 0.3)
BlzFrameSetVisible(Frame, false)
table.insert(ft, Frame)
end
local r = 1
local a = 8
local b = 1
TimerStart(CreateTimer(), 0.15, true, function()
b = a
for x = 8, a, -1 do
c = b+((x-8)*-1)
BlzFrameSetVisible(ft[x], true)
BlzFrameSetTexture(ft[x], textures[c], 0, true)
end
a = a - 1
b = b + 1
r = r+1
if r > 8 then
DestroyTimer(GetExpiredTimer())
r = 8
TimerStart(CreateTimer(), 0.15, true, function()
for t = 1, #ft do
local numb = r - t
if numb < 1 then
numb = numb + 8
end
BlzFrameSetTexture(ft[t], textures[numb], 0, true)
end
r = r-1
if r < 1 then
r = 8
end
end)
end
end)
TimerStart(CreateTimer(), 2, false, function()
BlzFrameSetText(Message, "|cffFFCC00Press [SPACE] to exit|r")
BlzFrameSetVisible(Message, true)
endofgame = true
DestroyTimer(GetExpiredTimer())
end)
DestroyTimer(GetExpiredTimer())
end)
end
function GetTicktime()
if not impossiblemode then
return preset.Ticktime
else
return ticktimeMin
end
end
function HideDefaultUI()
BlzFrameSetAbsPoint(BlzGetFrameByName("ConsoleUIBackdrop", 0), FRAMEPOINT_TOPRIGHT, 0, 0)
for i = 0, 11 do
BlzFrameSetVisible(BlzGetFrameByName("CommandButton_" .. i, 0), false)
end
BlzHideOriginFrames(true)
BlzFrameSetScale(BlzFrameGetChild(BlzGetFrameByName("ConsoleUI", 0), 5), 0.001)
end
function CreateTextFrame(frame, topleftX, topleftY, botrightX, botrightY, level, text, scale)
BlzFrameSetAbsPoint(frame, FRAMEPOINT_TOPLEFT, topleftX, topleftY)
BlzFrameSetAbsPoint(frame, FRAMEPOINT_BOTTOMRIGHT, botrightX, botrightY)
BlzFrameSetLevel(frame, level)
BlzFrameSetText(frame, text)
BlzFrameSetEnable(frame, false)
BlzFrameSetScale(frame, scale)
BlzFrameSetTextAlignment(frame, TEXT_JUSTIFY_CENTER, TEXT_JUSTIFY_MIDDLE)
end
function CreateSpriteFrame(frame, centerX, centerY, level, model, scale, isvisible)
BlzFrameSetLevel(frame, level)
BlzFrameSetAbsPoint(frame, FRAMEPOINT_CENTER, centerX, centerY)
BlzFrameSetModel(frame, model, 0)
BlzFrameSetScale(frame, scale)
BlzFrameSetVisible(frame, isvisible)
end
function AnimateFrameAlpha(timer, timeperiod, frame, startalpha, endalpha, stepalpha)
local alpha = startalpha
if endalpha > startalpha then
TimerStart(timer, timeperiod, true, function()
BlzFrameSetAlpha(frame, alpha)
alpha = alpha + stepalpha
if alpha >= endalpha then
PauseTimer(timer)
DestroyTimer(timer)
end
end)
elseif startalpha > endalpha then
TimerStart(timer, timeperiod, true, function()
BlzFrameSetAlpha(frame, alpha)
alpha = alpha - stepalpha
if alpha <= endalpha then
PauseTimer(timer)
DestroyTimer(timer)
end
end)
end
end