|  | /********************************************************************************************** | 
						
						
							|  | * | 
						
						
							|  | *   raylib - Koala Seasons game | 
						
						
							|  | * | 
						
						
							|  | *   Ending Screen Functions Definitions (Init, Update, Draw, Unload) | 
						
						
							|  | * | 
						
						
							|  | *   Copyright (c) 2014-2016 Ramon Santamaria (@raysan5) | 
						
						
							|  | * | 
						
						
							|  | *   This software is provided "as-is", without any express or implied warranty. In no event | 
						
						
							|  | *   will the authors be held liable for any damages arising from the use of this software. | 
						
						
							|  | * | 
						
						
							|  | *   Permission is granted to anyone to use this software for any purpose, including commercial | 
						
						
							|  | *   applications, and to alter it and redistribute it freely, subject to the following restrictions: | 
						
						
							|  | * | 
						
						
							|  | *     1. The origin of this software must not be misrepresented; you must not claim that you | 
						
						
							|  | *     wrote the original software. If you use this software in a product, an acknowledgment | 
						
						
							|  | *     in the product documentation would be appreciated but is not required. | 
						
						
							|  | * | 
						
						
							|  | *     2. Altered source versions must be plainly marked as such, and must not be misrepresented | 
						
						
							|  | *     as being the original software. | 
						
						
							|  | * | 
						
						
							|  | *     3. This notice may not be removed or altered from any source distribution. | 
						
						
							|  | * | 
						
						
							|  | **********************************************************************************************/ | 
						
						
							|  | 
 | 
						
						
							|  | #include "raylib.h" | 
						
						
							|  | #include "screens.h" | 
						
						
							|  |  | 
						
						
							|  | #include <stdio.h> | 
						
						
							|  |  | 
						
						
							|  | #include "atlas01.h" | 
						
						
							|  | #include "atlas02.h" | 
						
						
							|  |  | 
						
						
							|  | typedef enum { DELAY, SEASONS, LEAVES, KILLS, REPLAY } EndingCounter; | 
						
						
							|  | 
 | 
						
						
							|  | typedef struct { | 
						
						
							|  |     Vector2 position; | 
						
						
							|  |     Vector2 speed; | 
						
						
							|  |     float rotation; | 
						
						
							|  |     float size; | 
						
						
							|  |     Color color; | 
						
						
							|  |     float alpha; | 
						
						
							|  |     bool active; | 
						
						
							|  | } Particle; | 
						
						
							|  | 
 | 
						
						
							|  | //---------------------------------------------------------------------------------- | 
						
						
							|  | // Global Variables Definition (local to this module) | 
						
						
							|  | //---------------------------------------------------------------------------------- | 
						
						
							|  |  | 
						
						
							|  | // Ending screen global variables | 
						
						
							|  | static EndingCounter endingCounter; | 
						
						
							|  | 
 | 
						
						
							|  | static int framesCounter; | 
						
						
							|  | static int finishScreen; | 
						
						
							|  | static int framesKillsCounter; | 
						
						
							|  | 
 | 
						
						
							|  | static Rectangle playButton;  | 
						
						
							|  | static Rectangle shopButton;  | 
						
						
							|  | static Rectangle trophyButton;  | 
						
						
							|  | static Rectangle shareButton;  | 
						
						
							|  | 
 | 
						
						
							|  | static Color buttonPlayColor; | 
						
						
							|  | static Color buttonShopColor; | 
						
						
							|  | static Color buttonTrophyColor; | 
						
						
							|  | static Color buttonShareColor; | 
						
						
							|  | static Color backgroundColor; | 
						
						
							|  | 
 | 
						
						
							|  | static int currentScore; | 
						
						
							|  | static int seasonsCounter; | 
						
						
							|  | static int currentLeavesEnding; | 
						
						
							|  | static int finalYears; | 
						
						
							|  | static int replayTimer; | 
						
						
							|  | static int yearsElapsed; | 
						
						
							|  | static int initRotation; | 
						
						
							|  | 
 | 
						
						
							|  | static float clockRotation; | 
						
						
							|  | static float finalRotation; | 
						
						
							|  | 
 | 
						
						
							|  | static bool replaying; | 
						
						
							|  | static bool active[MAX_KILLS]; | 
						
						
							|  | 
 | 
						
						
							|  | static char initMonthText[32]; | 
						
						
							|  | static char finalMonthText[32]; | 
						
						
							|  | 
 | 
						
						
							|  | static Particle leafParticles[20]; | 
						
						
							|  | 
 | 
						
						
							|  | static int drawTimer; | 
						
						
							|  | 
 | 
						
						
							|  | // Death texts | 
						
						
							|  | const char textOwl01[32] = "Turned into a pretty"; | 
						
						
							|  | const char textOwl02[32] = "owl pellet"; | 
						
						
							|  | const char textDingo01[32] = "A dingo took your life"; | 
						
						
							|  | const char textFire01[32] = "Kissed by fire"; | 
						
						
							|  | const char textSnake01[32] = "Digested alive by a"; | 
						
						
							|  | const char textSnake02[32] = "big snake"; | 
						
						
							|  | const char textNaturalDeath01[32] = "LIFE KILLED YOU"; | 
						
						
							|  | const char textBee01[32] = "You turn out to be"; | 
						
						
							|  | const char textBee02[32] = "allergic to bee sting"; | 
						
						
							|  | const char textEagle[32] = "KOALA IS DEAD :("; | 
						
						
							|  | 
 | 
						
						
							|  | static float LinearEaseIn(float t, float b, float c, float d) { return c*t/d + b; } | 
						
						
							|  | 
 | 
						
						
							|  | //---------------------------------------------------------------------------------- | 
						
						
							|  | // Ending Screen Functions Definition | 
						
						
							|  | //---------------------------------------------------------------------------------- | 
						
						
							|  |  | 
						
						
							|  | // Ending Screen Initialization logic | 
						
						
							|  | void InitEndingScreen(void) | 
						
						
							|  | { | 
						
						
							|  |     framesCounter = -10; | 
						
						
							|  |     finishScreen = 0; | 
						
						
							|  |     drawTimer = 15; | 
						
						
							|  |     replayTimer = 0; | 
						
						
							|  |     replaying = false; | 
						
						
							|  |     finalYears = initYears + (seasons/4); | 
						
						
							|  |     yearsElapsed = seasons/4; | 
						
						
							|  |      | 
						
						
							|  |     playButton = (Rectangle){ GetScreenWidth()*0.871, GetScreenHeight()*0.096, 123, 123}; | 
						
						
							|  |     shopButton = (Rectangle){ GetScreenWidth()*0.871, GetScreenHeight()*0.303, 123, 123}; | 
						
						
							|  |     trophyButton = (Rectangle){ GetScreenWidth()*0.871, GetScreenHeight()*0.513, 123, 123}; | 
						
						
							|  |     shareButton = (Rectangle){ GetScreenWidth()*0.871, GetScreenHeight()*0.719, 123, 123}; | 
						
						
							|  |      | 
						
						
							|  |     buttonPlayColor = WHITE; | 
						
						
							|  |     buttonShopColor = WHITE; | 
						
						
							|  |     buttonTrophyColor = WHITE; | 
						
						
							|  |     buttonShareColor = WHITE; | 
						
						
							|  |      | 
						
						
							|  |     currentScore = 0; | 
						
						
							|  |     seasonsCounter = 0; | 
						
						
							|  |     currentLeavesEnding = 0; | 
						
						
							|  |      | 
						
						
							|  |     endingCounter = DELAY; | 
						
						
							|  |      | 
						
						
							|  |     backgroundColor = (Color){ 176, 167, 151, 255}; | 
						
						
							|  |      | 
						
						
							|  |     for (int j = 0; j < 20; j++) | 
						
						
							|  |     { | 
						
						
							|  |         leafParticles[j].active = false; | 
						
						
							|  |         leafParticles[j].position = (Vector2){ GetRandomValue(-20, 20), GetRandomValue(-20, 20) }; | 
						
						
							|  |         leafParticles[j].speed = (Vector2){ (float)GetRandomValue(-500, 500)/100, (float)GetRandomValue(-500, 500)/100 }; | 
						
						
							|  |         leafParticles[j].size = (float)GetRandomValue(3, 10)/5; | 
						
						
							|  |         leafParticles[j].rotation = GetRandomValue(0, 360); | 
						
						
							|  |         leafParticles[j].color = WHITE; | 
						
						
							|  |         leafParticles[j].alpha = 1; | 
						
						
							|  |     } | 
						
						
							|  |      | 
						
						
							|  |     // Seasons death texts | 
						
						
							|  |     if (initSeason == 0) | 
						
						
							|  |     { | 
						
						
							|  |         sprintf(initMonthText, "SUMMER"); | 
						
						
							|  |         clockRotation = 225; | 
						
						
							|  |         initRotation = 225; | 
						
						
							|  |     } | 
						
						
							|  |     else if (initSeason == 1) | 
						
						
							|  |     { | 
						
						
							|  |         sprintf(initMonthText, "AUTUMN"); | 
						
						
							|  |         clockRotation = 135; | 
						
						
							|  |         initRotation = 135; | 
						
						
							|  |     } | 
						
						
							|  |     else if (initSeason == 2) | 
						
						
							|  |     { | 
						
						
							|  |         sprintf(initMonthText, "WINTER"); | 
						
						
							|  |         clockRotation = 45; | 
						
						
							|  |         initRotation = 45;   | 
						
						
							|  |     } | 
						
						
							|  |     else if (initSeason == 3) | 
						
						
							|  |     { | 
						
						
							|  |         sprintf(initMonthText, "SPRING"); | 
						
						
							|  |         clockRotation = 315; | 
						
						
							|  |         initRotation = 315;  | 
						
						
							|  |     } | 
						
						
							|  |      | 
						
						
							|  |     if (currentSeason == 0) | 
						
						
							|  |     { | 
						
						
							|  |         sprintf(finalMonthText, "SUMMER"); | 
						
						
							|  |         finalRotation = 225 + 360*yearsElapsed; | 
						
						
							|  |     } | 
						
						
							|  |     else if (currentSeason == 1) | 
						
						
							|  |     {     | 
						
						
							|  |         sprintf(finalMonthText, "AUTUMN"); | 
						
						
							|  |         finalRotation = 135 + 360*yearsElapsed; | 
						
						
							|  |     } | 
						
						
							|  |     else if (currentSeason == 2) | 
						
						
							|  |     { | 
						
						
							|  |         sprintf(finalMonthText, "WINTER"); | 
						
						
							|  |         finalRotation = 45 + 360*yearsElapsed; | 
						
						
							|  |     } | 
						
						
							|  |     else if (currentSeason == 3) | 
						
						
							|  |     { | 
						
						
							|  |         sprintf(finalMonthText, "SPRING"); | 
						
						
							|  |         finalRotation = 315 + 360*yearsElapsed; | 
						
						
							|  |     } | 
						
						
							|  | 
 | 
						
						
							|  |     for (int i = 0; i < MAX_KILLS; i++) active[i] = false; | 
						
						
							|  | } | 
						
						
							|  | 
 | 
						
						
							|  | // Ending Screen Update logic | 
						
						
							|  | void UpdateEndingScreen(void) | 
						
						
							|  | { | 
						
						
							|  |     framesCounter += 1*TIME_FACTOR; | 
						
						
							|  |    | 
						
						
							|  |     switch (endingCounter) | 
						
						
							|  |     { | 
						
						
							|  |         case DELAY: | 
						
						
							|  |         { | 
						
						
							|  |             if(framesCounter >= 10) | 
						
						
							|  |             { | 
						
						
							|  |                 endingCounter = SEASONS; | 
						
						
							|  |                 framesCounter = 0; | 
						
						
							|  |             } | 
						
						
							|  |              | 
						
						
							|  |         } break; | 
						
						
							|  |         case SEASONS: | 
						
						
							|  |         { | 
						
						
							|  |             if (seasons > 0) | 
						
						
							|  |             { | 
						
						
							|  |                 seasonsCounter = (int)LinearEaseIn((float)framesCounter, 0.0f, (float)(seasons), 90.0f); | 
						
						
							|  |                 clockRotation = LinearEaseIn((float)framesCounter, (float)initRotation, (float)-(finalRotation - initRotation), 90.0f); | 
						
						
							|  |                  | 
						
						
							|  |                 if (framesCounter >= 90) | 
						
						
							|  |                 { | 
						
						
							|  |                     endingCounter = LEAVES; | 
						
						
							|  |                     framesCounter = 0; | 
						
						
							|  |                 } | 
						
						
							|  |             } | 
						
						
							|  |             else endingCounter = LEAVES; | 
						
						
							|  |              | 
						
						
							|  | #if (defined(PLATFORM_ANDROID) || defined(PLATFORM_WEB)) | 
						
						
							|  |             if (IsGestureDetected(GESTURE_TAP)) | 
						
						
							|  |             { | 
						
						
							|  |                 seasonsCounter = seasons; | 
						
						
							|  |                 clockRotation = finalRotation; | 
						
						
							|  |                 framesCounter = 0; | 
						
						
							|  |                 endingCounter = LEAVES; | 
						
						
							|  |             } | 
						
						
							|  | #elif (defined(PLATFORM_DESKTOP) || defined(PLATFORM_WEB)) | 
						
						
							|  |             if (IsKeyPressed(KEY_ENTER)) | 
						
						
							|  |             { | 
						
						
							|  |                 seasonsCounter = seasons; | 
						
						
							|  |                 clockRotation = finalRotation; | 
						
						
							|  |                 framesCounter = 0; | 
						
						
							|  |                 endingCounter = LEAVES; | 
						
						
							|  |             } | 
						
						
							|  | #endif | 
						
						
							|  |         } break; | 
						
						
							|  |         case LEAVES:  | 
						
						
							|  |         { | 
						
						
							|  |             if (currentLeaves > 0) | 
						
						
							|  |             { | 
						
						
							|  |                 if (currentLeavesEnding == currentLeaves) | 
						
						
							|  |                 { | 
						
						
							|  |                     endingCounter = KILLS; | 
						
						
							|  |                     framesCounter = 0; | 
						
						
							|  |                 } | 
						
						
							|  |                 else if (currentLeavesEnding < currentLeaves) | 
						
						
							|  |                 { | 
						
						
							|  |                     if (framesCounter >= 4) | 
						
						
							|  |                     { | 
						
						
							|  |                         currentLeavesEnding += 1; | 
						
						
							|  |                         framesCounter = 0; | 
						
						
							|  |                     } | 
						
						
							|  |                      | 
						
						
							|  |                     for (int i = 0; i < 20; i++) | 
						
						
							|  |                     { | 
						
						
							|  |                         if (!leafParticles[i].active) | 
						
						
							|  |                         { | 
						
						
							|  |                             leafParticles[i].position = (Vector2){ GetScreenWidth()*0.46, GetScreenHeight()*0.32}; | 
						
						
							|  |                             leafParticles[i].alpha = 1.0f; | 
						
						
							|  |                             leafParticles[i].active = true; | 
						
						
							|  |                         } | 
						
						
							|  |                     } | 
						
						
							|  |                 } | 
						
						
							|  |             } | 
						
						
							|  |             else endingCounter = KILLS;        | 
						
						
							|  | 
 | 
						
						
							|  | #if (defined(PLATFORM_ANDROID) || defined(PLATFORM_WEB)) | 
						
						
							|  |             if (IsGestureDetected(GESTURE_TAP)) | 
						
						
							|  |             { | 
						
						
							|  |                 currentLeavesEnding = currentLeaves; | 
						
						
							|  |                 framesCounter = 0; | 
						
						
							|  |                 endingCounter = KILLS; | 
						
						
							|  |             } | 
						
						
							|  | #elif (defined(PLATFORM_DESKTOP) || defined(PLATFORM_WEB)) | 
						
						
							|  |             if (IsKeyPressed(KEY_ENTER)) | 
						
						
							|  |             { | 
						
						
							|  |                 currentLeavesEnding = currentLeaves; | 
						
						
							|  |                 framesCounter = 0; | 
						
						
							|  |                 endingCounter = KILLS; | 
						
						
							|  |             }   | 
						
						
							|  | #endif | 
						
						
							|  |         } break; | 
						
						
							|  |         case KILLS: | 
						
						
							|  |         { | 
						
						
							|  |             if (score > 0) | 
						
						
							|  |             { | 
						
						
							|  |                 if (framesCounter <= 90 && !replaying) | 
						
						
							|  |                 { | 
						
						
							|  |                     currentScore = (int)LinearEaseIn((float)framesCounter, 0.0f, (float)(score), 90.0f); | 
						
						
							|  |                 } | 
						
						
							|  |                  | 
						
						
							|  |                 framesKillsCounter += 1*TIME_FACTOR; | 
						
						
							|  |                  | 
						
						
							|  |                 for (int i = 0; i < MAX_KILLS; i++) | 
						
						
							|  |                 { | 
						
						
							|  |                     if (framesKillsCounter >= drawTimer && active[i] == false) | 
						
						
							|  |                     { | 
						
						
							|  |                         active[i] = true; | 
						
						
							|  |                         framesKillsCounter = 0; | 
						
						
							|  |                     } | 
						
						
							|  |                 } | 
						
						
							|  |                  | 
						
						
							|  |                 if (framesCounter >= 90) | 
						
						
							|  |                 { | 
						
						
							|  |                     endingCounter = REPLAY; | 
						
						
							|  |                     framesCounter = 0; | 
						
						
							|  |                 } | 
						
						
							|  |             } | 
						
						
							|  |             else endingCounter = REPLAY;    | 
						
						
							|  |              | 
						
						
							|  | #if (defined(PLATFORM_ANDROID) || defined(PLATFORM_WEB)) | 
						
						
							|  |             if (IsGestureDetected(GESTURE_TAP)) | 
						
						
							|  |             { | 
						
						
							|  |                currentScore = score; | 
						
						
							|  |                framesCounter = 0; | 
						
						
							|  |                for (int i = 0; i < MAX_KILLS; i++) active[i] = true; | 
						
						
							|  |                endingCounter = REPLAY; | 
						
						
							|  |             } | 
						
						
							|  | #elif (defined(PLATFORM_DESKTOP) || defined(PLATFORM_WEB)) | 
						
						
							|  |             if (IsKeyPressed(KEY_ENTER)) | 
						
						
							|  |             { | 
						
						
							|  |                currentScore = score; | 
						
						
							|  |                framesCounter = 0; | 
						
						
							|  |                for (int i = 0; i < MAX_KILLS; i++) active[i] = true; | 
						
						
							|  |                endingCounter = REPLAY; | 
						
						
							|  |             } | 
						
						
							|  | #endif | 
						
						
							|  |         } break; | 
						
						
							|  |         case REPLAY: | 
						
						
							|  |         { | 
						
						
							|  | #if (defined(PLATFORM_ANDROID) || defined(PLATFORM_WEB)) | 
						
						
							|  |             if (IsGestureDetected(GESTURE_TAP)) replaying = true; | 
						
						
							|  | #elif (defined(PLATFORM_DESKTOP) || defined(PLATFORM_WEB)) | 
						
						
							|  |             if (IsKeyPressed(KEY_ENTER)) replaying = true; | 
						
						
							|  | #endif | 
						
						
							|  |             if (replaying) | 
						
						
							|  |             { | 
						
						
							|  |                 replayTimer += 1*TIME_FACTOR; | 
						
						
							|  |                  | 
						
						
							|  |                 if (replayTimer >= 30) | 
						
						
							|  |                 { | 
						
						
							|  |                     finishScreen = 1; | 
						
						
							|  |                     initSeason = GetRandomValue(0, 3); | 
						
						
							|  |                 } | 
						
						
							|  |                  | 
						
						
							|  |                 buttonPlayColor = GOLD; | 
						
						
							|  |             } | 
						
						
							|  |         } break; | 
						
						
							|  |     } | 
						
						
							|  |      | 
						
						
							|  |     for (int i = 0; i < 20; i++) | 
						
						
							|  |     { | 
						
						
							|  |         if (leafParticles[i].active == true) | 
						
						
							|  |         { | 
						
						
							|  |             leafParticles[i].position.x +=  leafParticles[i].speed.x; | 
						
						
							|  |             leafParticles[i].position.y +=  leafParticles[i].speed.y; | 
						
						
							|  |             leafParticles[i].rotation += 6; | 
						
						
							|  |             leafParticles[i].alpha -= 0.03f; | 
						
						
							|  |             leafParticles[i].size -= 0.004; | 
						
						
							|  | 
 | 
						
						
							|  |             if (leafParticles[i].size <= 0) leafParticles[i].size = 0.0f; | 
						
						
							|  | 
 | 
						
						
							|  |             if (leafParticles[i].alpha <= 0) | 
						
						
							|  |             { | 
						
						
							|  |                 leafParticles[i].alpha = 0.0f; | 
						
						
							|  |                 leafParticles[i].active = false; | 
						
						
							|  |             }                | 
						
						
							|  |         } | 
						
						
							|  |     } | 
						
						
							|  | 
 | 
						
						
							|  |     // Buttons logic | 
						
						
							|  | #if (defined(PLATFORM_ANDROID) || defined(PLATFORM_WEB)) | 
						
						
							|  |     if ((IsGestureDetected(GESTURE_TAP)) && CheckCollisionPointRec(GetTouchPosition(0), playButton)) | 
						
						
							|  |     { | 
						
						
							|  |         endingCounter = REPLAY; | 
						
						
							|  |         replaying = true; | 
						
						
							|  |     } | 
						
						
							|  |      | 
						
						
							|  | #elif (defined(PLATFORM_DESKTOP) || defined(PLATFORM_WEB)) | 
						
						
							|  |     if (CheckCollisionPointRec(GetMousePosition(), playButton))  | 
						
						
							|  |     { | 
						
						
							|  |         buttonPlayColor = GOLD;   | 
						
						
							|  |         if (IsMouseButtonPressed(0))  | 
						
						
							|  |         { | 
						
						
							|  |             endingCounter = REPLAY; | 
						
						
							|  |             replaying = true; | 
						
						
							|  |         } | 
						
						
							|  |     }        | 
						
						
							|  |     else buttonPlayColor = WHITE; | 
						
						
							|  | 
 | 
						
						
							|  |     if (CheckCollisionPointRec(GetMousePosition(), shopButton)) buttonShopColor = GOLD; | 
						
						
							|  |     else buttonShopColor = WHITE; | 
						
						
							|  |      | 
						
						
							|  |     if (CheckCollisionPointRec(GetMousePosition(), trophyButton)) buttonTrophyColor = GOLD; | 
						
						
							|  |     else buttonTrophyColor = WHITE; | 
						
						
							|  |      | 
						
						
							|  |     if (CheckCollisionPointRec(GetMousePosition(), shareButton)) buttonShareColor = GOLD; | 
						
						
							|  |     else buttonShareColor = WHITE; | 
						
						
							|  | #endif | 
						
						
							|  | } | 
						
						
							|  | 
 | 
						
						
							|  | // Ending Screen Draw logic | 
						
						
							|  | void DrawEndingScreen(void) | 
						
						
							|  | { | 
						
						
							|  |     for (int x = 0; x < 15; x++) | 
						
						
							|  |     { | 
						
						
							|  |         DrawTextureRec(atlas02, ending_background, (Vector2){ending_background.width*(x%5), ending_background.height*(x/5)}, backgroundColor); | 
						
						
							|  |     } | 
						
						
							|  |      | 
						
						
							|  |     // Frames and backgrounds | 
						
						
							|  |     DrawTexturePro(atlas01, ending_plate_frame, (Rectangle){GetScreenWidth()*0.042, GetScreenHeight()*0.606, ending_plate_frame.width, ending_plate_frame.height}, (Vector2){ 0, 0}, 0, WHITE); | 
						
						
							|  |     DrawTexturePro(atlas01, ending_paint_back, (Rectangle){GetScreenWidth()*0.133, GetScreenHeight()*0.097, ending_paint_back.width, ending_paint_back.height}, (Vector2){ 0, 0}, 0, WHITE); | 
						
						
							|  |      | 
						
						
							|  |     if (killer == 0) DrawTexturePro(atlas01, ending_paint_koalafire, (Rectangle){GetScreenWidth()*0.145, GetScreenHeight()*0.171, ending_paint_koalafire.width, ending_paint_koalafire.height}, (Vector2){ 0, 0}, 0, WHITE); | 
						
						
							|  |     else if (killer == 1) DrawTexturePro(atlas01, ending_paint_koalasnake, (Rectangle){GetScreenWidth()*0.145, GetScreenHeight()*0.171, ending_paint_koalasnake.width, ending_paint_koalasnake.height}, (Vector2){ 0, 0}, 0, WHITE); | 
						
						
							|  |     else if (killer == 2) DrawTexturePro(atlas01, ending_paint_koaladingo, (Rectangle){GetScreenWidth()*0.145, GetScreenHeight()*0.171, ending_paint_koaladingo.width, ending_paint_koaladingo.height}, (Vector2){ 0, 0}, 0, WHITE); | 
						
						
							|  |     else if (killer == 3) DrawTexturePro(atlas01, ending_paint_koalaowl, (Rectangle){GetScreenWidth()*0.2, GetScreenHeight()*0.3, ending_paint_koalaowl.width, ending_paint_koalaowl.height}, (Vector2){ 0, 0}, 0, WHITE); | 
						
						
							|  |     else if (killer == 4) DrawTexturePro(atlas01, ending_paint_koalageneric, (Rectangle){GetScreenWidth()*0.133, GetScreenHeight()*0.171, ending_paint_koalageneric.width, ending_paint_koalageneric.height}, (Vector2){ 0, 0}, 0, WHITE); | 
						
						
							|  |     else if (killer == 5) DrawTexturePro(atlas01, ending_paint_koalabee, (Rectangle){GetScreenWidth()*0.145, GetScreenHeight()*0.171, ending_paint_koalabee.width, ending_paint_koalabee.height}, (Vector2){ 0, 0}, 0, WHITE); | 
						
						
							|  |     else if (killer == 6) DrawTexturePro(atlas01, ending_paint_koalaeagle, (Rectangle){GetScreenWidth()*0.145, GetScreenHeight()*0.171, ending_paint_koalaeagle.width, ending_paint_koalaeagle.height}, (Vector2){ 0, 0}, 0, WHITE); | 
						
						
							|  |      | 
						
						
							|  |     DrawTexturePro(atlas01, ending_paint_frame, (Rectangle){GetScreenWidth()*0.102, GetScreenHeight()*0.035, ending_paint_frame.width, ending_paint_frame.height}, (Vector2){ 0, 0}, 0, WHITE); | 
						
						
							|  |      | 
						
						
							|  |     // UI Score planks | 
						
						
							|  |     DrawTexturePro(atlas01, ending_score_planksmall, (Rectangle){GetScreenWidth()*0.521, GetScreenHeight()*0.163, ending_score_planksmall.width, ending_score_planksmall.height}, (Vector2){ 0, 0}, 0, WHITE); | 
						
						
							|  |     DrawTexturePro(atlas01, ending_score_planklarge, (Rectangle){GetScreenWidth()*0.415, GetScreenHeight()*0.303, ending_score_planklarge.width, ending_score_planklarge.height}, (Vector2){ 0, 0}, 0, WHITE); | 
						
						
							|  |     DrawTexturePro(atlas01, ending_score_planksmall, (Rectangle){GetScreenWidth()*0.521, GetScreenHeight()*0.440, ending_score_planksmall.width, ending_score_planksmall.height}, (Vector2){ 0, 0}, 0, WHITE); | 
						
						
							|  |      | 
						
						
							|  |     // UI Score icons and frames | 
						
						
							|  |     DrawTexturePro(atlas01, ending_score_seasonicon, (Rectangle){GetScreenWidth()*0.529, GetScreenHeight()*0.096, ending_score_seasonicon.width, ending_score_seasonicon.height}, (Vector2){ 0, 0}, 0, WHITE); | 
						
						
							|  |     DrawTexturePro(atlas01, ending_score_seasonneedle, (Rectangle){GetScreenWidth()*0.579, GetScreenHeight()*0.189, ending_score_seasonneedle.width, ending_score_seasonneedle.height}, (Vector2){ending_score_seasonneedle.width/2, ending_score_seasonneedle.height*0.9}, clockRotation, WHITE); | 
						
						
							|  |     DrawTexturePro(atlas01, ending_score_frame, (Rectangle){GetScreenWidth()*0.535, GetScreenHeight()*0.11, ending_score_frame.width, ending_score_frame.height}, (Vector2){ 0, 0}, 0, WHITE); | 
						
						
							|  |      | 
						
						
							|  |     DrawTexturePro(atlas01, ending_score_frameback, (Rectangle){GetScreenWidth()*0.430, GetScreenHeight()*0.246, ending_score_frameback.width, ending_score_frameback.height}, (Vector2){ 0, 0}, 0, WHITE); | 
						
						
							|  |     DrawTexturePro(atlas01, ending_score_frame, (Rectangle){GetScreenWidth()*0.429, GetScreenHeight()*0.244, ending_score_frame.width, ending_score_frame.height}, (Vector2){ 0, 0}, 0, WHITE); | 
						
						
							|  |     | 
						
						
							|  |     for (int i = 0; i < 20; i++) | 
						
						
							|  |     { | 
						
						
							|  |         if (leafParticles[i].active) | 
						
						
							|  |         {                 | 
						
						
							|  |             DrawTexturePro(atlas01, particle_ecualyptusleaf, | 
						
						
							|  |                           (Rectangle){ leafParticles[i].position.x, leafParticles[i].position.y, particle_ecualyptusleaf.width*leafParticles[i].size, particle_ecualyptusleaf.height*leafParticles[i].size }, | 
						
						
							|  |                           (Vector2){ particle_ecualyptusleaf.width/2*leafParticles[i].size, particle_ecualyptusleaf.height/2*leafParticles[i].size }, leafParticles[i].rotation, Fade(WHITE,leafParticles[i].alpha));         | 
						
						
							|  |         } | 
						
						
							|  |     } | 
						
						
							|  |      | 
						
						
							|  |     DrawTexturePro(atlas01, ending_score_leavesicon, (Rectangle){GetScreenWidth()*0.421, GetScreenHeight()*0.228, ending_score_leavesicon.width, ending_score_leavesicon.height}, (Vector2){ 0, 0}, 0, WHITE); | 
						
						
							|  |      | 
						
						
							|  |     DrawTexturePro(atlas01, ending_score_frameback, (Rectangle){GetScreenWidth()*0.536, GetScreenHeight()*0.383, ending_score_frameback.width, ending_score_frameback.height}, (Vector2){ 0, 0}, 0, WHITE); | 
						
						
							|  |     DrawTexturePro(atlas01, ending_score_frame, (Rectangle){GetScreenWidth()*0.535, GetScreenHeight()*0.383, ending_score_frame.width, ending_score_frame.height}, (Vector2){ 0, 0}, 0, WHITE); | 
						
						
							|  |     DrawTexturePro(atlas01, ending_score_enemyicon, (Rectangle){GetScreenWidth()*0.538, GetScreenHeight()*0.414, ending_score_enemyicon.width, ending_score_enemyicon.height}, (Vector2){ 0, 0}, 0, WHITE); | 
						
						
							|  |      | 
						
						
							|  |     // UI Buttons | 
						
						
							|  |     DrawTexturePro(atlas01, ending_button_replay, (Rectangle){GetScreenWidth()*0.871, GetScreenHeight()*0.096, ending_button_replay.width, ending_button_replay.height}, (Vector2){ 0, 0}, 0, buttonPlayColor); | 
						
						
							|  |     DrawTexturePro(atlas01, ending_button_shop, (Rectangle){GetScreenWidth()*0.871, GetScreenHeight()*0.303, ending_button_shop.width, ending_button_shop.height}, (Vector2){ 0, 0}, 0, buttonShopColor); | 
						
						
							|  |     DrawTexturePro(atlas01, ending_button_trophy, (Rectangle){GetScreenWidth()*0.871, GetScreenHeight()*0.513, ending_button_trophy.width, ending_button_trophy.height}, (Vector2){ 0, 0}, 0, buttonTrophyColor); | 
						
						
							|  |     DrawTexturePro(atlas01, ending_button_share, (Rectangle){GetScreenWidth()*0.871, GetScreenHeight()*0.719, ending_button_share.width, ending_button_share.height}, (Vector2){ 0, 0}, 0, buttonShareColor); | 
						
						
							|  |      | 
						
						
							|  |     DrawTextEx(font, FormatText("%03i", seasonsCounter), (Vector2){ GetScreenWidth()*0.73f, GetScreenHeight()*0.14f }, font.baseSize, 1, WHITE); | 
						
						
							|  |     DrawTextEx(font, FormatText("%03i", currentLeavesEnding), (Vector2){ GetScreenWidth()*0.73f, GetScreenHeight()*0.29f }, font.baseSize, 1, WHITE); | 
						
						
							|  |     DrawTextEx(font, FormatText("%04i", currentScore), (Vector2){ GetScreenWidth()*0.715f, GetScreenHeight()*0.426f }, font.baseSize, 1, WHITE); | 
						
						
							|  |      | 
						
						
							|  |     DrawTextEx(font, FormatText("%s %i - %s %i", initMonthText, initYears, finalMonthText, finalYears), (Vector2){ GetScreenWidth()*0.1f, GetScreenHeight()*0.7f }, font.baseSize/2.0f, 1, WHITE); | 
						
						
							|  |      | 
						
						
							|  |     for (int i = 0; i < MAX_KILLS; i++) | 
						
						
							|  |     { | 
						
						
							|  |         if (active[i]) | 
						
						
							|  |         { | 
						
						
							|  |             switch (killHistory[i]) | 
						
						
							|  |             { | 
						
						
							|  |                 case 1: DrawTextureRec(atlas01, ending_plate_headsnake, (Vector2){GetScreenWidth()*0.448 + ending_plate_headsnake.width*(i%10), GetScreenHeight()*0.682  + (GetScreenHeight()*0.055)*(i/10)}, WHITE); break; | 
						
						
							|  |                 case 2: DrawTextureRec(atlas01, ending_plate_headdingo, (Vector2){GetScreenWidth()*0.448 + ending_plate_headdingo.width*(i%10), GetScreenHeight()*0.682  + (GetScreenHeight()*0.055)*(i/10)}, WHITE); break; | 
						
						
							|  |                 case 3: DrawTextureRec(atlas01, ending_plate_headowl, (Vector2){GetScreenWidth()*0.448 + ending_plate_headowl.width*(i%10), GetScreenHeight()*0.682  + (GetScreenHeight()*0.055)*(i/10)}, WHITE); break; | 
						
						
							|  |                 case 4: DrawTextureRec(atlas01, ending_plate_headbee, (Vector2){GetScreenWidth()*0.448 + ending_plate_headbee.width*(i%10), GetScreenHeight()*0.682  + (GetScreenHeight()*0.055)*(i/10)}, WHITE); break; | 
						
						
							|  |                 case 5: DrawTextureRec(atlas01, ending_plate_headeagle, (Vector2){GetScreenWidth()*0.448 + ending_plate_headeagle.width*(i%10), GetScreenHeight()*0.682  + (GetScreenHeight()*0.055)*(i/10)}, WHITE); break; | 
						
						
							|  |                 default: break; | 
						
						
							|  |             } | 
						
						
							|  |         } | 
						
						
							|  |     } | 
						
						
							|  |      | 
						
						
							|  | /* | 
						
						
							|  |     DrawText(FormatText("KOALA IS DEAD :("), GetScreenWidth()/2 -  MeasureText("YOU'RE DEAD   ", 60)/2, GetScreenHeight()/3, 60, RED); | 
						
						
							|  |     DrawText(FormatText("Score: %02i - HiScore: %02i", score, hiscore),GetScreenWidth()/2 -  MeasureText("Score: 00 - HiScore: 00", 60)/2, GetScreenHeight()/3 +100, 60, RED); | 
						
						
							|  |     DrawText(FormatText("You lived: %02i years", years),GetScreenWidth()/2 -  MeasureText("You lived: 00", 60)/2 + 60, GetScreenHeight()/3 +200, 30, RED); | 
						
						
							|  |     DrawText(FormatText("%02s killed you", killer),GetScreenWidth()/2 -  MeasureText("killer killed you", 60)/2 + 90, GetScreenHeight()/3 +270, 30, RED); | 
						
						
							|  |     //DrawRectangle(0, 0, GetScreenWidth(), GetScreenHeight(), Fade(BLACK, 0.5)); | 
						
						
							|  | */ | 
						
						
							|  |      | 
						
						
							|  |     //DrawTextEx(font, FormatText("%02s", killer), (Vector2){ GetScreenWidth()*0.08, GetScreenHeight()*0.78 }, font.baseSize/2, 1, WHITE); | 
						
						
							|  |     if (killer == 0) DrawTextEx(font, textFire01, (Vector2){ GetScreenWidth()*0.13f, GetScreenHeight()*0.78f }, font.baseSize/2.0f, 1, WHITE); | 
						
						
							|  |     else if (killer == 2) DrawTextEx(font, textDingo01, (Vector2){ GetScreenWidth()*0.13f, GetScreenHeight()*0.78f }, font.baseSize/2.0f, 1, WHITE); | 
						
						
							|  |     else if (killer == 1)  | 
						
						
							|  |     { | 
						
						
							|  |         DrawTextEx(font, textSnake01, (Vector2){ GetScreenWidth()*0.13f, GetScreenHeight()*0.78f }, font.baseSize/2.0f, 1, WHITE); | 
						
						
							|  |         DrawTextEx(font, textSnake02, (Vector2){ GetScreenWidth()*0.13f, GetScreenHeight()*0.83f }, font.baseSize/2.0f, 1, WHITE); | 
						
						
							|  |     } | 
						
						
							|  |     else if (killer == 3)  | 
						
						
							|  |     { | 
						
						
							|  |         DrawTextEx(font, textOwl01, (Vector2){ GetScreenWidth()*0.13f, GetScreenHeight()*0.78f }, font.baseSize/2.0f, 1, WHITE); | 
						
						
							|  |         DrawTextEx(font, textOwl02, (Vector2){ GetScreenWidth()*0.13f, GetScreenHeight()*0.83f }, font.baseSize/2.0f, 1, WHITE); | 
						
						
							|  |     } | 
						
						
							|  |     else if (killer == 4) DrawTextEx(font, textNaturalDeath01, (Vector2){ GetScreenWidth()*0.13f, GetScreenHeight()*0.78f }, font.baseSize/2.0f, 1, WHITE); | 
						
						
							|  |     else if (killer == 5)  | 
						
						
							|  |     { | 
						
						
							|  |         DrawTextEx(font, textBee01, (Vector2){ GetScreenWidth()*0.13f, GetScreenHeight()*0.78f }, font.baseSize/2.0f, 1, WHITE); | 
						
						
							|  |         DrawTextEx(font, textBee02, (Vector2){ GetScreenWidth()*0.13f, GetScreenHeight()*0.83f }, font.baseSize/2.0f, 1, WHITE); | 
						
						
							|  |     } | 
						
						
							|  |     else if (killer == 6) DrawTextEx(font, textEagle, (Vector2){ GetScreenWidth()*0.13f, GetScreenHeight()*0.78f }, font.baseSize/2.0f, 1, WHITE); | 
						
						
							|  | } | 
						
						
							|  | 
 | 
						
						
							|  | // Ending Screen Unload logic | 
						
						
							|  | void UnloadEndingScreen(void) | 
						
						
							|  | { | 
						
						
							|  |     // ... | 
						
						
							|  | } | 
						
						
							|  | 
 | 
						
						
							|  | // Ending Screen should finish? | 
						
						
							|  | int FinishEndingScreen(void) | 
						
						
							|  | { | 
						
						
							|  |     return finishScreen; | 
						
						
							|  | } |