119 lines
3.5 KiB
Lua
119 lines
3.5 KiB
Lua
local screenWidth = 800
|
|
local screenHeight = 450
|
|
|
|
rl.SetConfigFlags(rl.FLAG_VSYNC_HINT)
|
|
rl.InitWindow(screenWidth, screenHeight, "raylib [shapes] example - raylib logo animation")
|
|
|
|
local logoPositionX = screenWidth/2 - 128
|
|
local logoPositionY = screenHeight/2 - 128
|
|
|
|
local framesCounter = 0
|
|
local lettersCount = 0
|
|
|
|
local topSideRecWidth = 16
|
|
local leftSideRecHeight = 16
|
|
|
|
local bottomSideRecWidth = 16
|
|
local rightSideRecHeight = 16
|
|
|
|
local state = 0
|
|
local alpha = 1.0
|
|
|
|
local lua_color = rl.new("Color", 3, 3, 128, 255)
|
|
|
|
local function Fade(color, alpha)
|
|
return rl.new("Color",
|
|
color.r * alpha,
|
|
color.g * alpha,
|
|
color.b * alpha,
|
|
color.a * alpha
|
|
)
|
|
end
|
|
|
|
while not rl.WindowShouldClose() do
|
|
if (state == 0) then
|
|
framesCounter = framesCounter + 1
|
|
|
|
if (framesCounter == 120) then
|
|
state = 1
|
|
framesCounter = 0
|
|
end
|
|
elseif (state == 1) then
|
|
topSideRecWidth = topSideRecWidth + 4
|
|
leftSideRecHeight = leftSideRecHeight + 4
|
|
|
|
if (topSideRecWidth == 256) then state = 2 end
|
|
elseif (state == 2) then
|
|
bottomSideRecWidth = bottomSideRecWidth + 4
|
|
rightSideRecHeight = rightSideRecHeight + 4
|
|
|
|
if (bottomSideRecWidth == 256) then state = 3 end
|
|
elseif (state == 3) then
|
|
framesCounter = framesCounter + 1
|
|
|
|
if (math.floor(framesCounter / 12) == 1) then
|
|
lettersCount = lettersCount + 1
|
|
framesCounter = 0
|
|
end
|
|
|
|
if (lettersCount >= 10) then
|
|
alpha = alpha - 0.02
|
|
|
|
if (alpha <= 0.0) then
|
|
alpha = 0.0
|
|
state = 4
|
|
end
|
|
end
|
|
elseif (state == 4) then
|
|
if (rl.IsKeyPressed(rl.KEY_R)) then
|
|
framesCounter = 0
|
|
lettersCount = 0
|
|
|
|
topSideRecWidth = 16
|
|
leftSideRecHeight = 16
|
|
|
|
bottomSideRecWidth = 16
|
|
rightSideRecHeight = 16
|
|
|
|
alpha = 1.0
|
|
state = 0
|
|
end
|
|
end
|
|
|
|
rl.BeginDrawing()
|
|
|
|
rl.ClearBackground(rl.WHITE)
|
|
|
|
if (state == 0) then
|
|
if (math.floor(framesCounter/15)%2 == 1) then
|
|
rl.DrawRectangle(logoPositionX, logoPositionY, 16, 16, lua_color)
|
|
end
|
|
elseif (state == 1) then
|
|
rl.DrawRectangle(logoPositionX, logoPositionY, topSideRecWidth, 16, lua_color)
|
|
rl.DrawRectangle(logoPositionX, logoPositionY, 16, leftSideRecHeight, lua_color)
|
|
elseif (state == 2) then
|
|
rl.DrawRectangle(logoPositionX, logoPositionY, topSideRecWidth, 16, lua_color)
|
|
rl.DrawRectangle(logoPositionX, logoPositionY, 16, leftSideRecHeight, lua_color)
|
|
|
|
rl.DrawRectangle(logoPositionX + 240, logoPositionY, 16, rightSideRecHeight, lua_color)
|
|
rl.DrawRectangle(logoPositionX, logoPositionY + 240, bottomSideRecWidth, 16, lua_color)
|
|
elseif (state == 3) then
|
|
rl.DrawRectangle(logoPositionX, logoPositionY, topSideRecWidth, 16, Fade(lua_color, alpha))
|
|
rl.DrawRectangle(logoPositionX, logoPositionY + 16, 16, leftSideRecHeight - 32, Fade(lua_color, alpha))
|
|
|
|
rl.DrawRectangle(logoPositionX + 240, logoPositionY + 16, 16, rightSideRecHeight - 32, Fade(lua_color, alpha))
|
|
rl.DrawRectangle(logoPositionX, logoPositionY + 240, bottomSideRecWidth, 16, Fade(lua_color, alpha))
|
|
|
|
rl.DrawRectangle(screenWidth/2 - 112, screenHeight/2 - 112, 224, 224, Fade(rl.RAYWHITE, alpha))
|
|
|
|
rl.DrawText(string.sub("raylib", 0, lettersCount), screenWidth/2 - 44, screenHeight/2 + 24, 50, Fade(lua_color, alpha))
|
|
rl.DrawText(string.sub("Lua", 0, math.max(0, lettersCount - 3)), screenWidth/2 - 44, screenHeight/2 + 65, 50, Fade(lua_color, alpha))
|
|
elseif (state == 4) then
|
|
rl.DrawText("[R] REPLAY", 340, 200, 20, rl.GRAY)
|
|
end
|
|
|
|
rl.EndDrawing()
|
|
end
|
|
|
|
rl.CloseWindow()
|