| 
								
							 | 
							
								-------------------------------------------------------------------------------------------
							 | 
						
						
						
							| 
								
							 | 
							
								--
							 | 
						
						
						
							| 
								
							 | 
							
								--  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
							 | 
						
						
						
							| 
								
							 | 
							
								-------------------------------------------------------------------------------------------
							 |