diff options
Diffstat (limited to 'examples/shapes_logo_raylib_anim.lua')
| -rw-r--r-- | examples/shapes_logo_raylib_anim.lua | 127 |
1 files changed, 127 insertions, 0 deletions
diff --git a/examples/shapes_logo_raylib_anim.lua b/examples/shapes_logo_raylib_anim.lua new file mode 100644 index 00000000..c6c44995 --- /dev/null +++ b/examples/shapes_logo_raylib_anim.lua @@ -0,0 +1,127 @@ +------------------------------------------------------------------------------------------- +-- +-- raylib [shapes] example - raylib logo animation +-- +-- This example has been created using raylib 1.6 (www.raylib.com) +-- raylib is licensed under an unmodified zlib/libpng license (View raylib.h for details) +-- +-- Copyright (c) 2014-2016 Ramon Santamaria (@raysan5) +-- +------------------------------------------------------------------------------------------- + +-- Initialization +------------------------------------------------------------------------------------------- +local screenWidth = 800 +local screenHeight = 450 + +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 -- Tracking animation states (State Machine) +local alpha = 1.0 -- Useful for fading + +SetTargetFPS(60) -- Set target frames-per-second +------------------------------------------------------------------------------------------- + +-- Main game loop +while not WindowShouldClose() do -- Detect window close button or ESC key + -- Update + --------------------------------------------------------------------------------------- + if (state == 0) then -- State 0: Small box blinking + framesCounter = framesCounter + 1 + + if (framesCounter == 120) then + state = 1 + framesCounter = 0 -- Reset counter... will be used later... + end + elseif (state == 1) then -- State 1: Top and left bars growing + topSideRecWidth = topSideRecWidth + 4 + leftSideRecHeight = leftSideRecHeight + 4 + + if (topSideRecWidth == 256) then state = 2 end + elseif (state == 2) then -- State 2: Bottom and right bars growing + bottomSideRecWidth = bottomSideRecWidth + 4 + rightSideRecHeight = rightSideRecHeight + 4 + + if (bottomSideRecWidth == 256) then state = 3 end + elseif (state == 3) then -- State 3: Letters appearing (one by one) + framesCounter = framesCounter + 1 + + if (framesCounter//12 == 1) then -- Every 12 frames, one more letter! + lettersCount = lettersCount + 1 + framesCounter = 0 + end + + if (lettersCount >= 10) then -- When all letters have appeared, just fade out everything + alpha = alpha - 0.02 + + if (alpha <= 0.0) then + alpha = 0.0 + state = 4 + end + end + elseif (state == 4) then -- State 4: Reset and Replay + if (IsKeyPressed(KEY.R)) then + framesCounter = 0 + lettersCount = 0 + + topSideRecWidth = 16 + leftSideRecHeight = 16 + + bottomSideRecWidth = 16 + rightSideRecHeight = 16 + + alpha = 1.0 + state = 0 -- Return to State 0 + end + end + --------------------------------------------------------------------------------------- + + -- Draw + --------------------------------------------------------------------------------------- + BeginDrawing() + + ClearBackground(RAYWHITE) + + if (state == 0) then + if ((framesCounter//15)%2 == 1) then DrawRectangle(logoPositionX, logoPositionY, 16, 16, BLACK) end + elseif (state == 1) then + DrawRectangle(logoPositionX, logoPositionY, topSideRecWidth, 16, BLACK) + DrawRectangle(logoPositionX, logoPositionY, 16, leftSideRecHeight, BLACK) + elseif (state == 2) then + DrawRectangle(logoPositionX, logoPositionY, topSideRecWidth, 16, BLACK) + DrawRectangle(logoPositionX, logoPositionY, 16, leftSideRecHeight, BLACK) + + DrawRectangle(logoPositionX + 240, logoPositionY, 16, rightSideRecHeight, BLACK) + DrawRectangle(logoPositionX, logoPositionY + 240, bottomSideRecWidth, 16, BLACK) + elseif (state == 3) then + DrawRectangle(logoPositionX, logoPositionY, topSideRecWidth, 16, Fade(BLACK, alpha)) + DrawRectangle(logoPositionX, logoPositionY + 16, 16, leftSideRecHeight - 32, Fade(BLACK, alpha)) + + DrawRectangle(logoPositionX + 240, logoPositionY + 16, 16, rightSideRecHeight - 32, Fade(BLACK, alpha)) + DrawRectangle(logoPositionX, logoPositionY + 240, bottomSideRecWidth, 16, Fade(BLACK, alpha)) + + DrawRectangle(screenWidth/2 - 112, screenHeight/2 - 112, 224, 224, Fade(RAYWHITE, alpha)) + + DrawText(string.sub("raylib", 0, lettersCount), screenWidth/2 - 44, screenHeight/2 + 48, 50, Fade(BLACK, alpha)) + elseif (state == 4) then DrawText("[R] REPLAY", 340, 200, 20, GRAY) end + + EndDrawing() + --------------------------------------------------------------------------------------- +end + +-- De-Initialization +------------------------------------------------------------------------------------------- +CloseWindow() -- Close window and OpenGL context +-------------------------------------------------------------------------------------------
\ No newline at end of file |
