aboutsummaryrefslogtreecommitdiff
path: root/examples/shapes_logo_raylib_anim.c
diff options
context:
space:
mode:
authorRay <raysan5@gmail.com>2014-09-21 14:10:33 +0200
committerRay <raysan5@gmail.com>2014-09-21 14:10:33 +0200
commit1b2225a622054a733b70009a5f928cf2fc580fb1 (patch)
tree2e51dcfbd98542651167bb008a00dc474877714e /examples/shapes_logo_raylib_anim.c
parent0cdeb4e2672f162a5c45eb46739797f70f59db9b (diff)
downloadraylib-1b2225a622054a733b70009a5f928cf2fc580fb1.tar.gz
raylib-1b2225a622054a733b70009a5f928cf2fc580fb1.zip
Rename ex06b_logo_anim.c to shapes_logo_raylib_anim.c
Diffstat (limited to 'examples/shapes_logo_raylib_anim.c')
-rw-r--r--examples/shapes_logo_raylib_anim.c171
1 files changed, 171 insertions, 0 deletions
diff --git a/examples/shapes_logo_raylib_anim.c b/examples/shapes_logo_raylib_anim.c
new file mode 100644
index 00000000..54e41eb9
--- /dev/null
+++ b/examples/shapes_logo_raylib_anim.c
@@ -0,0 +1,171 @@
+/*******************************************************************************************
+*
+* raylib example 06b - raylib Logo Animation
+*
+* This example has been created using raylib 1.0 (www.raylib.com)
+* raylib is licensed under an unmodified zlib/libpng license (View raylib.h for details)
+*
+* Copyright (c) 2013 Ramon Santamaria (Ray San - raysan@raysanweb.com)
+*
+********************************************************************************************/
+
+#include "raylib.h"
+
+int main()
+{
+ // Initialization
+ //--------------------------------------------------------------------------------------
+ int screenWidth = 800;
+ int screenHeight = 450;
+
+ int logoPositionX = screenWidth/2 - 128;
+ int logoPositionY = screenHeight/2 - 128;
+
+ int framesCounter = 0;
+ int lettersCount = 0;
+
+ int topSideRecWidth = 16;
+ int leftSideRecHeight = 16;
+
+ int bottomSideRecWidth = 16;
+ int rightSideRecHeight = 16;
+
+ char raylib[8] = " "; // raylib text array, max 8 letters
+
+ int state = 0; // Tracking animation states (State Machine)
+
+ float alpha = 1.0; // Useful for fading
+
+ InitWindow(screenWidth, screenHeight, "raylib example 06b - raylib logo animation");
+
+ SetTargetFPS(60);
+ //--------------------------------------------------------------------------------------
+
+ // Main game loop
+ while (!WindowShouldClose()) // Detect window close button or ESC key
+ {
+ // Update
+ //----------------------------------------------------------------------------------
+ if (state == 0) // State 0: Small box blinking
+ {
+ framesCounter++;
+
+ if (framesCounter == 120)
+ {
+ state = 1;
+ framesCounter = 0; // Reset counter... will be used later...
+ }
+ }
+ else if (state == 1) // State 1: Top and left bars growing
+ {
+ topSideRecWidth += 4;
+ leftSideRecHeight += 4;
+
+ if (topSideRecWidth == 256) state = 2;
+ }
+ else if (state == 2) // State 2: Bottom and right bars growing
+ {
+ bottomSideRecWidth += 4;
+ rightSideRecHeight += 4;
+
+ if (bottomSideRecWidth == 256) state = 3;
+ }
+ else if (state == 3) // State 3: Letters appearing (one by one)
+ {
+ framesCounter++;
+
+ if (framesCounter/12) // Every 12 frames, one more letter!
+ {
+ lettersCount++;
+ framesCounter = 0;
+ }
+
+ switch (lettersCount)
+ {
+ case 1: raylib[0] = 'r'; break;
+ case 2: raylib[1] = 'a'; break;
+ case 3: raylib[2] = 'y'; break;
+ case 4: raylib[3] = 'l'; break;
+ case 5: raylib[4] = 'i'; break;
+ case 6: raylib[5] = 'b'; break;
+ default: break;
+ }
+
+ if (lettersCount >= 10) // When all letters have appeared, just fade out everything
+ {
+ alpha -= 0.02;
+
+ if (alpha <= 0)
+ {
+ alpha = 0;
+ state = 4;
+ }
+ }
+ }
+ else if (state == 4) // State 4: Reset and Replay
+ {
+ if (IsKeyPressed('R'))
+ {
+ framesCounter = 0;
+ lettersCount = 0;
+
+ topSideRecWidth = 16;
+ leftSideRecHeight = 16;
+
+ bottomSideRecWidth = 16;
+ rightSideRecHeight = 16;
+
+ for (int i = 0; i < 8; i++) raylib[i] = ' ';
+ alpha = 1.0;
+
+ state = 0; // Return to State 0
+ }
+ }
+ //----------------------------------------------------------------------------------
+
+ // Draw
+ //----------------------------------------------------------------------------------
+ BeginDrawing();
+
+ ClearBackground(RAYWHITE);
+
+ if (state == 0)
+ {
+ if ((framesCounter/15)%2) DrawRectangle(logoPositionX, logoPositionY, 16, 16, BLACK);
+ }
+ else if (state == 1)
+ {
+ DrawRectangle(logoPositionX, logoPositionY, topSideRecWidth, 16, BLACK);
+ DrawRectangle(logoPositionX, logoPositionY, 16, leftSideRecHeight, BLACK);
+ }
+ else if (state == 2)
+ {
+ 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);
+ }
+ else if (state == 3)
+ {
+ DrawRectangle(logoPositionX, logoPositionY, 256, 256, Fade(BLACK, alpha));
+ DrawRectangle(screenWidth/2 - 112, screenHeight/2 - 112, 224, 224, Fade(RAYWHITE, alpha));
+
+ DrawText(raylib, 356, 273, 50, Fade(BLACK, alpha));
+ }
+ else if (state == 4)
+ {
+ DrawText("[R] REPLAY", 340, 200, 20, GRAY);
+ }
+
+ EndDrawing();
+ //----------------------------------------------------------------------------------
+ }
+
+ // De-Initialization
+ //--------------------------------------------------------------------------------------
+ CloseWindow(); // Close window and OpenGL context
+ //--------------------------------------------------------------------------------------
+
+ return 0;
+}