| 
								
							 | 
							
								/**********************************************************************************************
							 | 
						
						
						
							| 
								
							 | 
							
								*
							 | 
						
						
						
							| 
								
							 | 
							
								*   raylib - Koala Seasons game
							 | 
						
						
						
							| 
								
							 | 
							
								*
							 | 
						
						
						
							| 
								
							 | 
							
								*   Title 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 <math.h>
							 | 
						
						
						
							| 
								
							 | 
							
								
							 | 
						
						
						
							| 
								
							 | 
							
								#include "atlas01.h"
							 | 
						
						
						
							| 
								
							 | 
							
								#include "atlas02.h"
							 | 
						
						
						
							| 
								
							 | 
							
								
							 | 
						
						
						
							| 
								
							 | 
							
								#define MAX_DURATION 120
							 | 
						
						
						
							| 
								
							 | 
							
								#define MAX_particle 128
							 | 
						
						
						
							| 
								
							 | 
							
								
							 | 
						
						
						
							| 
								
							 | 
							
								//----------------------------------------------------------------------------------
							 | 
						
						
						
							| 
								
							 | 
							
								// Global Variables Definition (local to this module)
							 | 
						
						
						
							| 
								
							 | 
							
								//----------------------------------------------------------------------------------
							 | 
						
						
						
							| 
								
							 | 
							
								
							 | 
						
						
						
							| 
								
							 | 
							
								typedef struct {
							 | 
						
						
						
							| 
								
							 | 
							
								    Vector2 position;
							 | 
						
						
						
							| 
								
							 | 
							
								    Vector2 speed;
							 | 
						
						
						
							| 
								
							 | 
							
								    float rotation;
							 | 
						
						
						
							| 
								
							 | 
							
								    float size;
							 | 
						
						
						
							| 
								
							 | 
							
								    Color color;
							 | 
						
						
						
							| 
								
							 | 
							
								    float alpha;
							 | 
						
						
						
							| 
								
							 | 
							
								    float rotPhy;
							 | 
						
						
						
							| 
								
							 | 
							
								    bool active;
							 | 
						
						
						
							| 
								
							 | 
							
								} Particle;
							 | 
						
						
						
							| 
								
							 | 
							
								
							 | 
						
						
						
							| 
								
							 | 
							
								typedef struct {
							 | 
						
						
						
							| 
								
							 | 
							
								    Vector2 position;
							 | 
						
						
						
							| 
								
							 | 
							
								    Color color;
							 | 
						
						
						
							| 
								
							 | 
							
								    float alpha;
							 | 
						
						
						
							| 
								
							 | 
							
								    float size;
							 | 
						
						
						
							| 
								
							 | 
							
								    float rotation;
							 | 
						
						
						
							| 
								
							 | 
							
								    bool active;        // NOTE: Use it to activate/deactive particle
							 | 
						
						
						
							| 
								
							 | 
							
								    bool fading;
							 | 
						
						
						
							| 
								
							 | 
							
								    float delayCounter;
							 | 
						
						
						
							| 
								
							 | 
							
								} RayParticleTitle;
							 | 
						
						
						
							| 
								
							 | 
							
								
							 | 
						
						
						
							| 
								
							 | 
							
								typedef struct {
							 | 
						
						
						
							| 
								
							 | 
							
								    Vector2 position;
							 | 
						
						
						
							| 
								
							 | 
							
								    bool active;
							 | 
						
						
						
							| 
								
							 | 
							
								    int spawnTime;
							 | 
						
						
						
							| 
								
							 | 
							
								    int maxTime;
							 | 
						
						
						
							| 
								
							 | 
							
								    Particle particle[1024];
							 | 
						
						
						
							| 
								
							 | 
							
								} Stormparticleystem;
							 | 
						
						
						
							| 
								
							 | 
							
								
							 | 
						
						
						
							| 
								
							 | 
							
								typedef struct {
							 | 
						
						
						
							| 
								
							 | 
							
								    Vector2 position;
							 | 
						
						
						
							| 
								
							 | 
							
								    bool active;
							 | 
						
						
						
							| 
								
							 | 
							
								    int spawnTime;
							 | 
						
						
						
							| 
								
							 | 
							
								    int maxTime;
							 | 
						
						
						
							| 
								
							 | 
							
								    Particle particle[MAX_particle];
							 | 
						
						
						
							| 
								
							 | 
							
								} particleystemTitle;
							 | 
						
						
						
							| 
								
							 | 
							
								
							 | 
						
						
						
							| 
								
							 | 
							
								typedef struct {
							 | 
						
						
						
							| 
								
							 | 
							
								    Vector2 position;
							 | 
						
						
						
							| 
								
							 | 
							
								    bool active;
							 | 
						
						
						
							| 
								
							 | 
							
								    int spawnTime;
							 | 
						
						
						
							| 
								
							 | 
							
								    int maxTime;
							 | 
						
						
						
							| 
								
							 | 
							
								    RayParticleTitle particle[20];
							 | 
						
						
						
							| 
								
							 | 
							
								} RayparticleystemTitle;
							 | 
						
						
						
							| 
								
							 | 
							
								
							 | 
						
						
						
							| 
								
							 | 
							
								// Title screen global variables
							 | 
						
						
						
							| 
								
							 | 
							
								static int framesCounter;
							 | 
						
						
						
							| 
								
							 | 
							
								static int finishScreen;
							 | 
						
						
						
							| 
								
							 | 
							
								static int globalFrameCounter;
							 | 
						
						
						
							| 
								
							 | 
							
								static int currentFrame;
							 | 
						
						
						
							| 
								
							 | 
							
								static int thisFrame;
							 | 
						
						
						
							| 
								
							 | 
							
								static int parallaxBackOffset;
							 | 
						
						
						
							| 
								
							 | 
							
								static int parallaxFrontOffset;
							 | 
						
						
						
							| 
								
							 | 
							
								
							 | 
						
						
						
							| 
								
							 | 
							
								static float currentValue1;
							 | 
						
						
						
							| 
								
							 | 
							
								static float currentValue2;
							 | 
						
						
						
							| 
								
							 | 
							
								static float initValue1;
							 | 
						
						
						
							| 
								
							 | 
							
								static float initValue2;
							 | 
						
						
						
							| 
								
							 | 
							
								static float finishValue1;
							 | 
						
						
						
							| 
								
							 | 
							
								static float finishValue2;
							 | 
						
						
						
							| 
								
							 | 
							
								static float duration;
							 | 
						
						
						
							| 
								
							 | 
							
								
							 | 
						
						
						
							| 
								
							 | 
							
								static Vector2 fontSize;
							 | 
						
						
						
							| 
								
							 | 
							
								
							 | 
						
						
						
							| 
								
							 | 
							
								static bool soundActive;
							 | 
						
						
						
							| 
								
							 | 
							
								static bool musicActive;
							 | 
						
						
						
							| 
								
							 | 
							
								
							 | 
						
						
						
							| 
								
							 | 
							
								static Rectangle koalaMenu;
							 | 
						
						
						
							| 
								
							 | 
							
								
							 | 
						
						
						
							| 
								
							 | 
							
								static Rectangle bamboo[5];
							 | 
						
						
						
							| 
								
							 | 
							
								static Rectangle player = {0, 0, 0, 0};
							 | 
						
						
						
							| 
								
							 | 
							
								static Rectangle soundButton;
							 | 
						
						
						
							| 
								
							 | 
							
								static Rectangle speakerButton;
							 | 
						
						
						
							| 
								
							 | 
							
								
							 | 
						
						
						
							| 
								
							 | 
							
								static Color color00, color01, color02, color03;
							 | 
						
						
						
							| 
								
							 | 
							
								
							 | 
						
						
						
							| 
								
							 | 
							
								static particleystemTitle snowParticle;
							 | 
						
						
						
							| 
								
							 | 
							
								static particleystemTitle backSnowParticle;
							 | 
						
						
						
							| 
								
							 | 
							
								static particleystemTitle dandelionParticle;
							 | 
						
						
						
							| 
								
							 | 
							
								static particleystemTitle dandelionBackParticle;
							 | 
						
						
						
							| 
								
							 | 
							
								static particleystemTitle planetreeParticle;
							 | 
						
						
						
							| 
								
							 | 
							
								static particleystemTitle backPlanetreeParticle;
							 | 
						
						
						
							| 
								
							 | 
							
								static particleystemTitle flowerParticle;
							 | 
						
						
						
							| 
								
							 | 
							
								static particleystemTitle backFlowerParticle;
							 | 
						
						
						
							| 
								
							 | 
							
								static particleystemTitle rainParticle;
							 | 
						
						
						
							| 
								
							 | 
							
								static particleystemTitle backRainParticle;
							 | 
						
						
						
							| 
								
							 | 
							
								static RayparticleystemTitle rayparticle;
							 | 
						
						
						
							| 
								
							 | 
							
								static RayparticleystemTitle backRayparticle;
							 | 
						
						
						
							| 
								
							 | 
							
								static Stormparticleystem rainStormParticle;
							 | 
						
						
						
							| 
								
							 | 
							
								static Stormparticleystem snowStormParticle;
							 | 
						
						
						
							| 
								
							 | 
							
								
							 | 
						
						
						
							| 
								
							 | 
							
								const char pressToPlay[16] = "Press to play";
							 | 
						
						
						
							| 
								
							 | 
							
								
							 | 
						
						
						
							| 
								
							 | 
							
								//----------------------------------------------------------------------------------
							 | 
						
						
						
							| 
								
							 | 
							
								// Title Screen Functions Definition
							 | 
						
						
						
							| 
								
							 | 
							
								//----------------------------------------------------------------------------------
							 | 
						
						
						
							| 
								
							 | 
							
								static void DrawParallaxFront(void);
							 | 
						
						
						
							| 
								
							 | 
							
								static void DrawParallaxMiddle(void);
							 | 
						
						
						
							| 
								
							 | 
							
								static void DrawParallaxBack(void);
							 | 
						
						
						
							| 
								
							 | 
							
								
							 | 
						
						
						
							| 
								
							 | 
							
								static float BounceEaseOut(float t,float b , float c, float d);
							 | 
						
						
						
							| 
								
							 | 
							
								
							 | 
						
						
						
							| 
								
							 | 
							
								// Title Screen Initialization logic
							 | 
						
						
						
							| 
								
							 | 
							
								void InitTitleScreen(void)
							 | 
						
						
						
							| 
								
							 | 
							
								{
							 | 
						
						
						
							| 
								
							 | 
							
								    framesCounter = 0;
							 | 
						
						
						
							| 
								
							 | 
							
								    finishScreen = 0;
							 | 
						
						
						
							| 
								
							 | 
							
								    initValue1 = -100;
							 | 
						
						
						
							| 
								
							 | 
							
								    finishValue1 = 100;
							 | 
						
						
						
							| 
								
							 | 
							
								    initValue2 = 700;
							 | 
						
						
						
							| 
								
							 | 
							
								    finishValue2 = finishValue1 + 220;
							 | 
						
						
						
							| 
								
							 | 
							
								    duration = MAX_DURATION;
							 | 
						
						
						
							| 
								
							 | 
							
								    initSeason = GetRandomValue(0, 3);
							 | 
						
						
						
							| 
								
							 | 
							
								    soundActive = true;
							 | 
						
						
						
							| 
								
							 | 
							
								    musicActive = true;
							 | 
						
						
						
							| 
								
							 | 
							
								    
							 | 
						
						
						
							| 
								
							 | 
							
								    parallaxBackOffset = GetRandomValue(10, 100);
							 | 
						
						
						
							| 
								
							 | 
							
								    parallaxFrontOffset = GetRandomValue(100, 200);
							 | 
						
						
						
							| 
								
							 | 
							
								
							 | 
						
						
						
							| 
								
							 | 
							
								    rainChance = GetRandomValue(0, 100);
							 | 
						
						
						
							| 
								
							 | 
							
								
							 | 
						
						
						
							| 
								
							 | 
							
								    snowParticle.position = (Vector2){ 0, 0 };
							 | 
						
						
						
							| 
								
							 | 
							
								    snowParticle.active = false;
							 | 
						
						
						
							| 
								
							 | 
							
								    backSnowParticle.position = (Vector2){ 0, 0 };
							 | 
						
						
						
							| 
								
							 | 
							
								    backSnowParticle.active = false;
							 | 
						
						
						
							| 
								
							 | 
							
								    planetreeParticle.position = (Vector2){ 0, 0 };
							 | 
						
						
						
							| 
								
							 | 
							
								    planetreeParticle.active = false;
							 | 
						
						
						
							| 
								
							 | 
							
								    backPlanetreeParticle.position = (Vector2){ 0, 0 };
							 | 
						
						
						
							| 
								
							 | 
							
								    backPlanetreeParticle.active = false;
							 | 
						
						
						
							| 
								
							 | 
							
								    dandelionParticle.active = false;
							 | 
						
						
						
							| 
								
							 | 
							
								    dandelionBackParticle.position = (Vector2){ 0, 0};
							 | 
						
						
						
							| 
								
							 | 
							
								    flowerParticle.position = (Vector2){ 0, 0 };
							 | 
						
						
						
							| 
								
							 | 
							
								    flowerParticle.active = false;
							 | 
						
						
						
							| 
								
							 | 
							
								    backFlowerParticle.position = (Vector2){ 0, 0 };
							 | 
						
						
						
							| 
								
							 | 
							
								    backFlowerParticle.active = false;
							 | 
						
						
						
							| 
								
							 | 
							
								    rayparticle.position = (Vector2){ 0, 0 };
							 | 
						
						
						
							| 
								
							 | 
							
								    rayparticle.active = false;
							 | 
						
						
						
							| 
								
							 | 
							
								    backRayparticle.position = (Vector2){ 0, 0 };
							 | 
						
						
						
							| 
								
							 | 
							
								    backRayparticle.active = false;
							 | 
						
						
						
							| 
								
							 | 
							
								    rainStormParticle.position = (Vector2){ 0, 0 };
							 | 
						
						
						
							| 
								
							 | 
							
								    rainStormParticle.active = false;
							 | 
						
						
						
							| 
								
							 | 
							
								    snowStormParticle.position = (Vector2){ 0, 0 };
							 | 
						
						
						
							| 
								
							 | 
							
								    snowStormParticle.active = false;
							 | 
						
						
						
							| 
								
							 | 
							
								    
							 | 
						
						
						
							| 
								
							 | 
							
								    soundButton = (Rectangle){ GetScreenWidth()*0.85, GetScreenHeight()*0.7, title_music_on.width, title_music_on.height };
							 | 
						
						
						
							| 
								
							 | 
							
								    speakerButton = (Rectangle){ GetScreenWidth()*0.85, GetScreenHeight()*0.85, title_speaker_on.width, title_speaker_on.height };
							 | 
						
						
						
							| 
								
							 | 
							
								
							 | 
						
						
						
							| 
								
							 | 
							
								    for (int j = 0; j < MAX_particle; j++)
							 | 
						
						
						
							| 
								
							 | 
							
								    {
							 | 
						
						
						
							| 
								
							 | 
							
								        snowParticle.particle[j].active = false;
							 | 
						
						
						
							| 
								
							 | 
							
								        snowParticle.particle[j].position = (Vector2){ 0, 0 };
							 | 
						
						
						
							| 
								
							 | 
							
								        snowParticle.particle[j].size = (float)GetRandomValue(3, 9)/10;
							 | 
						
						
						
							| 
								
							 | 
							
								        snowParticle.particle[j].rotation = GetRandomValue(0, 360);
							 | 
						
						
						
							| 
								
							 | 
							
								        snowParticle.particle[j].color = WHITE;
							 | 
						
						
						
							| 
								
							 | 
							
								        snowParticle.particle[j].alpha = 1.0f;
							 | 
						
						
						
							| 
								
							 | 
							
								
							 | 
						
						
						
							| 
								
							 | 
							
								        backSnowParticle.particle[j].active = false;
							 | 
						
						
						
							| 
								
							 | 
							
								        backSnowParticle.particle[j].position = (Vector2){ 0, 0 };
							 | 
						
						
						
							| 
								
							 | 
							
								        backSnowParticle.particle[j].size = (float)GetRandomValue(2, 8)/10;
							 | 
						
						
						
							| 
								
							 | 
							
								        backSnowParticle.particle[j].rotation = GetRandomValue(0, 360);
							 | 
						
						
						
							| 
								
							 | 
							
								        backSnowParticle.particle[j].color = WHITE;
							 | 
						
						
						
							| 
								
							 | 
							
								        backSnowParticle.particle[j].alpha = 0.7f;
							 | 
						
						
						
							| 
								
							 | 
							
								
							 | 
						
						
						
							| 
								
							 | 
							
								        planetreeParticle.particle[j].active = false;
							 | 
						
						
						
							| 
								
							 | 
							
								        planetreeParticle.particle[j].position = (Vector2){ 0, 0 };
							 | 
						
						
						
							| 
								
							 | 
							
								        planetreeParticle.particle[j].size = (float)GetRandomValue(3, 9)/10;
							 | 
						
						
						
							| 
								
							 | 
							
								        planetreeParticle.particle[j].rotation = GetRandomValue(0, 360);
							 | 
						
						
						
							| 
								
							 | 
							
								        planetreeParticle.particle[j].color = WHITE;
							 | 
						
						
						
							| 
								
							 | 
							
								        planetreeParticle.particle[j].alpha = 1.0f;
							 | 
						
						
						
							| 
								
							 | 
							
								
							 | 
						
						
						
							| 
								
							 | 
							
								        backPlanetreeParticle.particle[j].active = false;
							 | 
						
						
						
							| 
								
							 | 
							
								        backPlanetreeParticle.particle[j].position = (Vector2){ 0, 0 };
							 | 
						
						
						
							| 
								
							 | 
							
								        backPlanetreeParticle.particle[j].size = (float)GetRandomValue(2, 8)/10;
							 | 
						
						
						
							| 
								
							 | 
							
								        backPlanetreeParticle.particle[j].rotation = GetRandomValue(0, 360);
							 | 
						
						
						
							| 
								
							 | 
							
								        backPlanetreeParticle.particle[j].color = WHITE;
							 | 
						
						
						
							| 
								
							 | 
							
								        backPlanetreeParticle.particle[j].alpha = 0.7f;
							 | 
						
						
						
							| 
								
							 | 
							
								
							 | 
						
						
						
							| 
								
							 | 
							
								        dandelionParticle.particle[j].active = false;
							 | 
						
						
						
							| 
								
							 | 
							
								        dandelionParticle.particle[j].position = (Vector2){ 0, 0 };
							 | 
						
						
						
							| 
								
							 | 
							
								        dandelionParticle.particle[j].size = (float)GetRandomValue(3, 9)/10;
							 | 
						
						
						
							| 
								
							 | 
							
								        dandelionParticle.particle[j].rotation = 0;
							 | 
						
						
						
							| 
								
							 | 
							
								        dandelionParticle.particle[j].color = WHITE;
							 | 
						
						
						
							| 
								
							 | 
							
								        dandelionParticle.particle[j].alpha = 1;
							 | 
						
						
						
							| 
								
							 | 
							
								        dandelionParticle.particle[j].rotPhy = GetRandomValue(0 , 180);
							 | 
						
						
						
							| 
								
							 | 
							
								
							 | 
						
						
						
							| 
								
							 | 
							
								        dandelionBackParticle.particle[j].active = false;
							 | 
						
						
						
							| 
								
							 | 
							
								        dandelionBackParticle.particle[j].position = (Vector2){ 0, 0 };
							 | 
						
						
						
							| 
								
							 | 
							
								        dandelionBackParticle.particle[j].size = (float)GetRandomValue(2, 8)/10;
							 | 
						
						
						
							| 
								
							 | 
							
								        dandelionBackParticle.particle[j].rotation = 0;
							 | 
						
						
						
							| 
								
							 | 
							
								        dandelionBackParticle.particle[j].color = WHITE;
							 | 
						
						
						
							| 
								
							 | 
							
								        dandelionBackParticle.particle[j].alpha = 0.7f;
							 | 
						
						
						
							| 
								
							 | 
							
								        dandelionBackParticle.particle[j].rotPhy = GetRandomValue(0 , 180);
							 | 
						
						
						
							| 
								
							 | 
							
								
							 | 
						
						
						
							| 
								
							 | 
							
								        flowerParticle.particle[j].active = false;
							 | 
						
						
						
							| 
								
							 | 
							
								        flowerParticle.particle[j].position = (Vector2){ 0, 0 };
							 | 
						
						
						
							| 
								
							 | 
							
								        flowerParticle.particle[j].size = (float)GetRandomValue(3, 9)/10;
							 | 
						
						
						
							| 
								
							 | 
							
								        flowerParticle.particle[j].rotation = GetRandomValue(0, 360);
							 | 
						
						
						
							| 
								
							 | 
							
								        flowerParticle.particle[j].color = WHITE;
							 | 
						
						
						
							| 
								
							 | 
							
								        flowerParticle.particle[j].alpha = 1.0f;
							 | 
						
						
						
							| 
								
							 | 
							
								
							 | 
						
						
						
							| 
								
							 | 
							
								        backFlowerParticle.particle[j].active = false;
							 | 
						
						
						
							| 
								
							 | 
							
								        backFlowerParticle.particle[j].position = (Vector2){ 0, 0 };
							 | 
						
						
						
							| 
								
							 | 
							
								        backFlowerParticle.particle[j].size = (float)GetRandomValue(2, 8)/10;
							 | 
						
						
						
							| 
								
							 | 
							
								        backFlowerParticle.particle[j].rotation = GetRandomValue(0, 360);
							 | 
						
						
						
							| 
								
							 | 
							
								        backFlowerParticle.particle[j].color = WHITE;
							 | 
						
						
						
							| 
								
							 | 
							
								        backFlowerParticle.particle[j].alpha = 0.7f;
							 | 
						
						
						
							| 
								
							 | 
							
								
							 | 
						
						
						
							| 
								
							 | 
							
								        rainParticle.particle[j].active = false;
							 | 
						
						
						
							| 
								
							 | 
							
								        rainParticle.particle[j].position = (Vector2){ 0, 0 };
							 | 
						
						
						
							| 
								
							 | 
							
								        rainParticle.particle[j].size = (float)GetRandomValue(3, 9)/10;
							 | 
						
						
						
							| 
								
							 | 
							
								        rainParticle.particle[j].rotation = -20;
							 | 
						
						
						
							| 
								
							 | 
							
								        rainParticle.particle[j].color = WHITE;
							 | 
						
						
						
							| 
								
							 | 
							
								        rainParticle.particle[j].alpha = 1.0f;
							 | 
						
						
						
							| 
								
							 | 
							
								
							 | 
						
						
						
							| 
								
							 | 
							
								        backRainParticle.particle[j].active = false;
							 | 
						
						
						
							| 
								
							 | 
							
								        backRainParticle.particle[j].position = (Vector2){ 0, 0 };
							 | 
						
						
						
							| 
								
							 | 
							
								        backRainParticle.particle[j].size = (float)GetRandomValue(2, 8)/10;
							 | 
						
						
						
							| 
								
							 | 
							
								        backRainParticle.particle[j].rotation = -20;
							 | 
						
						
						
							| 
								
							 | 
							
								        backRainParticle.particle[j].color = WHITE;
							 | 
						
						
						
							| 
								
							 | 
							
								        backRainParticle.particle[j].alpha = 0.7f;
							 | 
						
						
						
							| 
								
							 | 
							
								    }
							 | 
						
						
						
							| 
								
							 | 
							
								
							 | 
						
						
						
							| 
								
							 | 
							
								    for (int j = 0; j < 1024; j++)
							 | 
						
						
						
							| 
								
							 | 
							
								    {
							 | 
						
						
						
							| 
								
							 | 
							
								        rainStormParticle.particle[j].active = false;
							 | 
						
						
						
							| 
								
							 | 
							
								        rainStormParticle.particle[j].position = (Vector2){ 0, 0 };
							 | 
						
						
						
							| 
								
							 | 
							
								        rainStormParticle.particle[j].size = (float)GetRandomValue(3, 9)/10;
							 | 
						
						
						
							| 
								
							 | 
							
								        rainStormParticle.particle[j].rotation = -40;
							 | 
						
						
						
							| 
								
							 | 
							
								        rainStormParticle.particle[j].color = WHITE;
							 | 
						
						
						
							| 
								
							 | 
							
								        rainStormParticle.particle[j].alpha = 1.0f;
							 | 
						
						
						
							| 
								
							 | 
							
								    }
							 | 
						
						
						
							| 
								
							 | 
							
								
							 | 
						
						
						
							| 
								
							 | 
							
								    for (int j = 0; j < 256; j++)
							 | 
						
						
						
							| 
								
							 | 
							
								    {
							 | 
						
						
						
							| 
								
							 | 
							
								        snowStormParticle.particle[j].active = false;
							 | 
						
						
						
							| 
								
							 | 
							
								        snowStormParticle.particle[j].position = (Vector2){ 0, 0 };
							 | 
						
						
						
							| 
								
							 | 
							
								        snowStormParticle.particle[j].size = (float)GetRandomValue(4, 8)/10;
							 | 
						
						
						
							| 
								
							 | 
							
								        snowStormParticle.particle[j].rotation = 40;
							 | 
						
						
						
							| 
								
							 | 
							
								        snowStormParticle.particle[j].color = WHITE;
							 | 
						
						
						
							| 
								
							 | 
							
								        snowStormParticle.particle[j].alpha = 1.0f;
							 | 
						
						
						
							| 
								
							 | 
							
								    }
							 | 
						
						
						
							| 
								
							 | 
							
								
							 | 
						
						
						
							| 
								
							 | 
							
								    for (int i = 0; i < 20; i++)
							 | 
						
						
						
							| 
								
							 | 
							
								    {
							 | 
						
						
						
							| 
								
							 | 
							
								        rayparticle.particle[i].position = (Vector2){ 0, 0 };
							 | 
						
						
						
							| 
								
							 | 
							
								        rayparticle.particle[i].color.r = 255;
							 | 
						
						
						
							| 
								
							 | 
							
								        rayparticle.particle[i].color.g = 255;
							 | 
						
						
						
							| 
								
							 | 
							
								        rayparticle.particle[i].color.b = 182;
							 | 
						
						
						
							| 
								
							 | 
							
								        rayparticle.particle[i].color.a = 255;
							 | 
						
						
						
							| 
								
							 | 
							
								        rayparticle.particle[i].alpha = 0.0f;
							 | 
						
						
						
							| 
								
							 | 
							
								        rayparticle.particle[i].size = (float)GetRandomValue(15, 20)/10;
							 | 
						
						
						
							| 
								
							 | 
							
								        rayparticle.particle[i].rotation = 0.0f;
							 | 
						
						
						
							| 
								
							 | 
							
								        rayparticle.particle[i].active = false;
							 | 
						
						
						
							| 
								
							 | 
							
								        rayparticle.particle[i].fading = false;
							 | 
						
						
						
							| 
								
							 | 
							
								        rayparticle.particle[i].delayCounter = 0;
							 | 
						
						
						
							| 
								
							 | 
							
								
							 | 
						
						
						
							| 
								
							 | 
							
								        backRayparticle.particle[i].position = (Vector2){ 0, 0 };
							 | 
						
						
						
							| 
								
							 | 
							
								        backRayparticle.particle[i].color.r = 255;
							 | 
						
						
						
							| 
								
							 | 
							
								        backRayparticle.particle[i].color.g = 255;
							 | 
						
						
						
							| 
								
							 | 
							
								        backRayparticle.particle[i].color.b = 182;
							 | 
						
						
						
							| 
								
							 | 
							
								        backRayparticle.particle[i].color.a = 255;
							 | 
						
						
						
							| 
								
							 | 
							
								        backRayparticle.particle[i].alpha = 0.0f;
							 | 
						
						
						
							| 
								
							 | 
							
								        backRayparticle.particle[i].size = (float)GetRandomValue(5, 10)/10;
							 | 
						
						
						
							| 
								
							 | 
							
								        backRayparticle.particle[i].rotation = 0.0f;
							 | 
						
						
						
							| 
								
							 | 
							
								        backRayparticle.particle[i].active = false;
							 | 
						
						
						
							| 
								
							 | 
							
								        backRayparticle.particle[i].fading = false;
							 | 
						
						
						
							| 
								
							 | 
							
								        backRayparticle.particle[i].delayCounter = 0;
							 | 
						
						
						
							| 
								
							 | 
							
								    }
							 | 
						
						
						
							| 
								
							 | 
							
								
							 | 
						
						
						
							| 
								
							 | 
							
								    for (int i = 0; i < 5; i++)
							 | 
						
						
						
							| 
								
							 | 
							
								    {
							 | 
						
						
						
							| 
								
							 | 
							
								        bamboo[i].x = 150 + 200*i;
							 | 
						
						
						
							| 
								
							 | 
							
								        bamboo[i].y = 0;
							 | 
						
						
						
							| 
								
							 | 
							
								        bamboo[i].width = 30;
							 | 
						
						
						
							| 
								
							 | 
							
								        bamboo[i].height = GetScreenHeight();
							 | 
						
						
						
							| 
								
							 | 
							
								    }
							 | 
						
						
						
							| 
								
							 | 
							
								
							 | 
						
						
						
							| 
								
							 | 
							
								    player.x = 350;
							 | 
						
						
						
							| 
								
							 | 
							
								    player.y = 100;
							 | 
						
						
						
							| 
								
							 | 
							
								    player.width = 35;
							 | 
						
						
						
							| 
								
							 | 
							
								    player.height = 60;
							 | 
						
						
						
							| 
								
							 | 
							
								    
							 | 
						
						
						
							| 
								
							 | 
							
								    koalaMenu.x = gameplay_koala_menu.x;
							 | 
						
						
						
							| 
								
							 | 
							
								    koalaMenu.y = gameplay_koala_menu.y;
							 | 
						
						
						
							| 
								
							 | 
							
								    koalaMenu.width = gameplay_koala_menu.width/2;
							 | 
						
						
						
							| 
								
							 | 
							
								    koalaMenu.height = gameplay_koala_menu.height;
							 | 
						
						
						
							| 
								
							 | 
							
								    
							 | 
						
						
						
							| 
								
							 | 
							
								    fontSize = MeasureTextEx(font, "PRESS TO PLAY", font.baseSize, 2);
							 | 
						
						
						
							| 
								
							 | 
							
								}
							 | 
						
						
						
							| 
								
							 | 
							
								
							 | 
						
						
						
							| 
								
							 | 
							
								// Title Screen Update logic
							 | 
						
						
						
							| 
								
							 | 
							
								void UpdateTitleScreen(void)
							 | 
						
						
						
							| 
								
							 | 
							
								{
							 | 
						
						
						
							| 
								
							 | 
							
								    framesCounter += 1*TIME_FACTOR;
							 | 
						
						
						
							| 
								
							 | 
							
								    globalFrameCounter += 1*TIME_FACTOR;
							 | 
						
						
						
							| 
								
							 | 
							
								
							 | 
						
						
						
							| 
								
							 | 
							
								    if (framesCounter < duration)
							 | 
						
						
						
							| 
								
							 | 
							
								    {
							 | 
						
						
						
							| 
								
							 | 
							
								        currentValue1 = BounceEaseOut((float) framesCounter, initValue1, (finishValue1 - initValue1), duration);
							 | 
						
						
						
							| 
								
							 | 
							
								        currentValue2 = BounceEaseOut((float) framesCounter, initValue2, (finishValue2 - initValue2), duration);
							 | 
						
						
						
							| 
								
							 | 
							
								    }
							 | 
						
						
						
							| 
								
							 | 
							
								    
							 | 
						
						
						
							| 
								
							 | 
							
								    thisFrame += 1*TIME_FACTOR;
							 | 
						
						
						
							| 
								
							 | 
							
								
							 | 
						
						
						
							| 
								
							 | 
							
								    if (thisFrame >= 40)
							 | 
						
						
						
							| 
								
							 | 
							
								    {
							 | 
						
						
						
							| 
								
							 | 
							
								        currentFrame++;
							 | 
						
						
						
							| 
								
							 | 
							
								        thisFrame = 0;
							 | 
						
						
						
							| 
								
							 | 
							
								    }
							 | 
						
						
						
							| 
								
							 | 
							
								
							 | 
						
						
						
							| 
								
							 | 
							
								    if (currentFrame > 1) currentFrame = 0;
							 | 
						
						
						
							| 
								
							 | 
							
								
							 | 
						
						
						
							| 
								
							 | 
							
								    koalaMenu.x = gameplay_koala_menu.x + koalaMenu.width*currentFrame;
							 | 
						
						
						
							| 
								
							 | 
							
								
							 | 
						
						
						
							| 
								
							 | 
							
								    if (initSeason == 0)
							 | 
						
						
						
							| 
								
							 | 
							
								    {
							 | 
						
						
						
							| 
								
							 | 
							
								        dandelionParticle.active = true;
							 | 
						
						
						
							| 
								
							 | 
							
								        dandelionBackParticle.active = true;
							 | 
						
						
						
							| 
								
							 | 
							
								        rayparticle.active = true;
							 | 
						
						
						
							| 
								
							 | 
							
								        backRayparticle.active = true;
							 | 
						
						
						
							| 
								
							 | 
							
								        
							 | 
						
						
						
							| 
								
							 | 
							
								        rainParticle.active = false;
							 | 
						
						
						
							| 
								
							 | 
							
								        rainStormParticle.active = false;
							 | 
						
						
						
							| 
								
							 | 
							
								        backRainParticle.active = false;
							 | 
						
						
						
							| 
								
							 | 
							
								
							 | 
						
						
						
							| 
								
							 | 
							
								        color00 = (Color){129, 172, 86, 255};              // Summer Color
							 | 
						
						
						
							| 
								
							 | 
							
								        color01 = (Color){145, 165, 125, 255};
							 | 
						
						
						
							| 
								
							 | 
							
								        color02 = (Color){161, 130, 73, 255};
							 | 
						
						
						
							| 
								
							 | 
							
								        color03 = (Color){198, 103, 51, 255};
							 | 
						
						
						
							| 
								
							 | 
							
								    }
							 | 
						
						
						
							| 
								
							 | 
							
								    else if (initSeason == 1)
							 | 
						
						
						
							| 
								
							 | 
							
								    {
							 | 
						
						
						
							| 
								
							 | 
							
								        if (rainChance > 40)
							 | 
						
						
						
							| 
								
							 | 
							
								        {
							 | 
						
						
						
							| 
								
							 | 
							
								            planetreeParticle.active = true;
							 | 
						
						
						
							| 
								
							 | 
							
								            backPlanetreeParticle.active = true;
							 | 
						
						
						
							| 
								
							 | 
							
								            rainParticle.active = false;
							 | 
						
						
						
							| 
								
							 | 
							
								            backRainParticle.active = false;
							 | 
						
						
						
							| 
								
							 | 
							
								        }
							 | 
						
						
						
							| 
								
							 | 
							
								        else if (rainChance <= 40 && rainChance > 15)
							 | 
						
						
						
							| 
								
							 | 
							
								        {
							 | 
						
						
						
							| 
								
							 | 
							
								            rainStormParticle.active = true;
							 | 
						
						
						
							| 
								
							 | 
							
								            backRainParticle.active = false;
							 | 
						
						
						
							| 
								
							 | 
							
								        }
							 | 
						
						
						
							| 
								
							 | 
							
								        else if (rainChance <= 15)
							 | 
						
						
						
							| 
								
							 | 
							
								        {
							 | 
						
						
						
							| 
								
							 | 
							
								            rainStormParticle.active = true;
							 | 
						
						
						
							| 
								
							 | 
							
								            backRainParticle.active = false;
							 | 
						
						
						
							| 
								
							 | 
							
								        }
							 | 
						
						
						
							| 
								
							 | 
							
								
							 | 
						
						
						
							| 
								
							 | 
							
								        color00 = (Color){242, 113, 62, 255};              // Fall Color
							 | 
						
						
						
							| 
								
							 | 
							
								        color01 = (Color){190, 135, 114, 255};
							 | 
						
						
						
							| 
								
							 | 
							
								        color02 = (Color){144, 130, 101, 255};
							 | 
						
						
						
							| 
								
							 | 
							
								        color03 = (Color){214, 133, 58, 255};
							 | 
						
						
						
							| 
								
							 | 
							
								
							 | 
						
						
						
							| 
								
							 | 
							
								    }
							 | 
						
						
						
							| 
								
							 | 
							
								    else if (initSeason == 2)
							 | 
						
						
						
							| 
								
							 | 
							
								    {
							 | 
						
						
						
							| 
								
							 | 
							
								
							 | 
						
						
						
							| 
								
							 | 
							
								        if (rainChance > 40)
							 | 
						
						
						
							| 
								
							 | 
							
								        {
							 | 
						
						
						
							| 
								
							 | 
							
								            snowParticle.active = true;
							 | 
						
						
						
							| 
								
							 | 
							
								            backSnowParticle.active = true;
							 | 
						
						
						
							| 
								
							 | 
							
								        }
							 | 
						
						
						
							| 
								
							 | 
							
								        else
							 | 
						
						
						
							| 
								
							 | 
							
								        {
							 | 
						
						
						
							| 
								
							 | 
							
								            snowStormParticle.active = true;
							 | 
						
						
						
							| 
								
							 | 
							
								            backSnowParticle.active = true;
							 | 
						
						
						
							| 
								
							 | 
							
								        }
							 | 
						
						
						
							| 
								
							 | 
							
								        
							 | 
						
						
						
							| 
								
							 | 
							
								        rainParticle.active = false;
							 | 
						
						
						
							| 
								
							 | 
							
								        rainStormParticle.active = false;
							 | 
						
						
						
							| 
								
							 | 
							
								        backRainParticle.active = false;
							 | 
						
						
						
							| 
								
							 | 
							
								
							 | 
						
						
						
							| 
								
							 | 
							
								        color00 = (Color){130, 130, 181, 255};              // Winter Color
							 | 
						
						
						
							| 
								
							 | 
							
								        color01 = (Color){145, 145, 166, 255};
							 | 
						
						
						
							| 
								
							 | 
							
								        color02 = (Color){104, 142, 144, 255};
							 | 
						
						
						
							| 
								
							 | 
							
								        color03 = (Color){57, 140, 173, 255};
							 | 
						
						
						
							| 
								
							 | 
							
								    }
							 | 
						
						
						
							| 
								
							 | 
							
								    else if (initSeason == 3)
							 | 
						
						
						
							| 
								
							 | 
							
								    {
							 | 
						
						
						
							| 
								
							 | 
							
								        flowerParticle.active = true;
							 | 
						
						
						
							| 
								
							 | 
							
								        backFlowerParticle.active = true;
							 | 
						
						
						
							| 
								
							 | 
							
								        
							 | 
						
						
						
							| 
								
							 | 
							
								        rainParticle.active = false;
							 | 
						
						
						
							| 
								
							 | 
							
								        rainStormParticle.active = false;
							 | 
						
						
						
							| 
								
							 | 
							
								        backRainParticle.active = false;
							 | 
						
						
						
							| 
								
							 | 
							
								
							 | 
						
						
						
							| 
								
							 | 
							
								        color00 = (Color){196, 176, 49, 255};              // Spring Color
							 | 
						
						
						
							| 
								
							 | 
							
								        color01 = (Color){178, 163, 67, 255};
							 | 
						
						
						
							| 
								
							 | 
							
								        color02 = (Color){133, 143, 90, 255};
							 | 
						
						
						
							| 
								
							 | 
							
								        color03 = (Color){133, 156, 42, 255};
							 | 
						
						
						
							| 
								
							 | 
							
								    }
							 | 
						
						
						
							| 
								
							 | 
							
								
							 | 
						
						
						
							| 
								
							 | 
							
								    // Snow Particle
							 | 
						
						
						
							| 
								
							 | 
							
								    if (snowParticle.active)
							 | 
						
						
						
							| 
								
							 | 
							
								    {
							 | 
						
						
						
							| 
								
							 | 
							
								        snowParticle.spawnTime += 1*TIME_FACTOR;
							 | 
						
						
						
							| 
								
							 | 
							
								
							 | 
						
						
						
							| 
								
							 | 
							
								        for (int i = 0; i < MAX_particle; i++)
							 | 
						
						
						
							| 
								
							 | 
							
								        {
							 | 
						
						
						
							| 
								
							 | 
							
								            if (!snowParticle.particle[i].active && snowParticle.spawnTime >= snowParticle.maxTime)
							 | 
						
						
						
							| 
								
							 | 
							
								            {
							 | 
						
						
						
							| 
								
							 | 
							
								                snowParticle.particle[i].active = true;
							 | 
						
						
						
							| 
								
							 | 
							
								                snowParticle.particle[i].position = (Vector2){GetRandomValue(0, GetScreenWidth() + 200), -10};
							 | 
						
						
						
							| 
								
							 | 
							
								                snowParticle.spawnTime = 0;
							 | 
						
						
						
							| 
								
							 | 
							
								                snowParticle.maxTime = GetRandomValue (5, 20);
							 | 
						
						
						
							| 
								
							 | 
							
								            }
							 | 
						
						
						
							| 
								
							 | 
							
								        }
							 | 
						
						
						
							| 
								
							 | 
							
								    }
							 | 
						
						
						
							| 
								
							 | 
							
								
							 | 
						
						
						
							| 
								
							 | 
							
								    if (backSnowParticle.active)
							 | 
						
						
						
							| 
								
							 | 
							
								    {
							 | 
						
						
						
							| 
								
							 | 
							
								        backSnowParticle.spawnTime += 1*TIME_FACTOR;
							 | 
						
						
						
							| 
								
							 | 
							
								
							 | 
						
						
						
							| 
								
							 | 
							
								        for (int i = 0; i < MAX_particle; i++)
							 | 
						
						
						
							| 
								
							 | 
							
								        {
							 | 
						
						
						
							| 
								
							 | 
							
								            if (!backSnowParticle.particle[i].active && backSnowParticle.spawnTime >= backSnowParticle.maxTime)
							 | 
						
						
						
							| 
								
							 | 
							
								            {
							 | 
						
						
						
							| 
								
							 | 
							
								                backSnowParticle.particle[i].active = true;
							 | 
						
						
						
							| 
								
							 | 
							
								                backSnowParticle.particle[i].position = (Vector2){GetRandomValue(0, GetScreenWidth() + 200), -10};
							 | 
						
						
						
							| 
								
							 | 
							
								                backSnowParticle.spawnTime = 0;
							 | 
						
						
						
							| 
								
							 | 
							
								                backSnowParticle.maxTime = GetRandomValue (3, 10);
							 | 
						
						
						
							| 
								
							 | 
							
								            }
							 | 
						
						
						
							| 
								
							 | 
							
								        }
							 | 
						
						
						
							| 
								
							 | 
							
								    }
							 | 
						
						
						
							| 
								
							 | 
							
								
							 | 
						
						
						
							| 
								
							 | 
							
								    // Autumn leaves particle
							 | 
						
						
						
							| 
								
							 | 
							
								    if (planetreeParticle.active)
							 | 
						
						
						
							| 
								
							 | 
							
								    {
							 | 
						
						
						
							| 
								
							 | 
							
								        planetreeParticle.spawnTime += 1*TIME_FACTOR;
							 | 
						
						
						
							| 
								
							 | 
							
								        backPlanetreeParticle.spawnTime += 1*TIME_FACTOR;
							 | 
						
						
						
							| 
								
							 | 
							
								
							 | 
						
						
						
							| 
								
							 | 
							
								        for (int i = 0; i < MAX_particle; i++)
							 | 
						
						
						
							| 
								
							 | 
							
								        {
							 | 
						
						
						
							| 
								
							 | 
							
								            if (!planetreeParticle.particle[i].active && planetreeParticle.spawnTime >= planetreeParticle.maxTime)
							 | 
						
						
						
							| 
								
							 | 
							
								            {
							 | 
						
						
						
							| 
								
							 | 
							
								                planetreeParticle.particle[i].active = true;
							 | 
						
						
						
							| 
								
							 | 
							
								                planetreeParticle.particle[i].position = (Vector2){GetRandomValue(0, GetScreenWidth() + 200), -10};
							 | 
						
						
						
							| 
								
							 | 
							
								                planetreeParticle.spawnTime = 0;
							 | 
						
						
						
							| 
								
							 | 
							
								                planetreeParticle.maxTime = GetRandomValue (5, 20);
							 | 
						
						
						
							| 
								
							 | 
							
								            }
							 | 
						
						
						
							| 
								
							 | 
							
								
							 | 
						
						
						
							| 
								
							 | 
							
								            if (!backPlanetreeParticle.particle[i].active && backPlanetreeParticle.spawnTime >= backPlanetreeParticle.maxTime)
							 | 
						
						
						
							| 
								
							 | 
							
								            {
							 | 
						
						
						
							| 
								
							 | 
							
								                backPlanetreeParticle.particle[i].active = true;
							 | 
						
						
						
							| 
								
							 | 
							
								                backPlanetreeParticle.particle[i].position = (Vector2){GetRandomValue(0, GetScreenWidth() + 200), -10};
							 | 
						
						
						
							| 
								
							 | 
							
								                backPlanetreeParticle.spawnTime = 0;
							 | 
						
						
						
							| 
								
							 | 
							
								                backPlanetreeParticle.maxTime = GetRandomValue (3, 10);
							 | 
						
						
						
							| 
								
							 | 
							
								            }
							 | 
						
						
						
							| 
								
							 | 
							
								        }
							 | 
						
						
						
							| 
								
							 | 
							
								    }
							 | 
						
						
						
							| 
								
							 | 
							
								
							 | 
						
						
						
							| 
								
							 | 
							
								    // Dandelion particle
							 | 
						
						
						
							| 
								
							 | 
							
								    if (dandelionParticle.active)
							 | 
						
						
						
							| 
								
							 | 
							
								    {
							 | 
						
						
						
							| 
								
							 | 
							
								        dandelionParticle.spawnTime += 1*TIME_FACTOR;
							 | 
						
						
						
							| 
								
							 | 
							
								        dandelionBackParticle.spawnTime += 1*TIME_FACTOR;
							 | 
						
						
						
							| 
								
							 | 
							
								
							 | 
						
						
						
							| 
								
							 | 
							
								        for (int i = 0; i < MAX_particle; i++)
							 | 
						
						
						
							| 
								
							 | 
							
								        {
							 | 
						
						
						
							| 
								
							 | 
							
								            if (!dandelionParticle.particle[i].active && dandelionParticle.spawnTime >= dandelionParticle.maxTime)
							 | 
						
						
						
							| 
								
							 | 
							
								            {
							 | 
						
						
						
							| 
								
							 | 
							
								                dandelionParticle.particle[i].active = true;
							 | 
						
						
						
							| 
								
							 | 
							
								                dandelionParticle.particle[i].position = (Vector2){GetRandomValue(0, GetScreenWidth() + 200), -10};
							 | 
						
						
						
							| 
								
							 | 
							
								                dandelionParticle.spawnTime = 0;
							 | 
						
						
						
							| 
								
							 | 
							
								                dandelionParticle.maxTime = GetRandomValue (5, 20);
							 | 
						
						
						
							| 
								
							 | 
							
								            }
							 | 
						
						
						
							| 
								
							 | 
							
								
							 | 
						
						
						
							| 
								
							 | 
							
								            if (!dandelionBackParticle.particle[i].active && dandelionBackParticle.spawnTime >= dandelionBackParticle.maxTime)
							 | 
						
						
						
							| 
								
							 | 
							
								            {
							 | 
						
						
						
							| 
								
							 | 
							
								                dandelionBackParticle.particle[i].active = true;
							 | 
						
						
						
							| 
								
							 | 
							
								                dandelionBackParticle.particle[i].position = (Vector2){GetRandomValue(0, GetScreenWidth() + 200), -10};
							 | 
						
						
						
							| 
								
							 | 
							
								                dandelionBackParticle.spawnTime = 0;
							 | 
						
						
						
							| 
								
							 | 
							
								                dandelionBackParticle.maxTime = GetRandomValue (3, 10);
							 | 
						
						
						
							| 
								
							 | 
							
								            }
							 | 
						
						
						
							| 
								
							 | 
							
								        }
							 | 
						
						
						
							| 
								
							 | 
							
								    }
							 | 
						
						
						
							| 
								
							 | 
							
								
							 | 
						
						
						
							| 
								
							 | 
							
								    // Flower Particle
							 | 
						
						
						
							| 
								
							 | 
							
								    if (flowerParticle.active)
							 | 
						
						
						
							| 
								
							 | 
							
								    {
							 | 
						
						
						
							| 
								
							 | 
							
								
							 | 
						
						
						
							| 
								
							 | 
							
								        flowerParticle.spawnTime += 1*TIME_FACTOR;
							 | 
						
						
						
							| 
								
							 | 
							
								        backFlowerParticle.spawnTime += 1*TIME_FACTOR;
							 | 
						
						
						
							| 
								
							 | 
							
								
							 | 
						
						
						
							| 
								
							 | 
							
								        for (int i = 0; i < MAX_particle; i++)
							 | 
						
						
						
							| 
								
							 | 
							
								        {
							 | 
						
						
						
							| 
								
							 | 
							
								            if (!flowerParticle.particle[i].active && flowerParticle.spawnTime >= flowerParticle.maxTime)
							 | 
						
						
						
							| 
								
							 | 
							
								            {
							 | 
						
						
						
							| 
								
							 | 
							
								                flowerParticle.particle[i].active = true;
							 | 
						
						
						
							| 
								
							 | 
							
								                flowerParticle.particle[i].position = (Vector2){GetRandomValue(0, GetScreenWidth() + 200), -10};
							 | 
						
						
						
							| 
								
							 | 
							
								                flowerParticle.spawnTime = 0;
							 | 
						
						
						
							| 
								
							 | 
							
								                flowerParticle.maxTime = GetRandomValue (5, 20);
							 | 
						
						
						
							| 
								
							 | 
							
								            }
							 | 
						
						
						
							| 
								
							 | 
							
								
							 | 
						
						
						
							| 
								
							 | 
							
								            if (!backFlowerParticle.particle[i].active && backFlowerParticle.spawnTime >= backFlowerParticle.maxTime)
							 | 
						
						
						
							| 
								
							 | 
							
								            {
							 | 
						
						
						
							| 
								
							 | 
							
								                backFlowerParticle.particle[i].active = true;
							 | 
						
						
						
							| 
								
							 | 
							
								                backFlowerParticle.particle[i].position = (Vector2){GetRandomValue(0, GetScreenWidth() + 200), -10};
							 | 
						
						
						
							| 
								
							 | 
							
								                backFlowerParticle.spawnTime = 0;
							 | 
						
						
						
							| 
								
							 | 
							
								                backFlowerParticle.maxTime = GetRandomValue (3, 10);
							 | 
						
						
						
							| 
								
							 | 
							
								            }
							 | 
						
						
						
							| 
								
							 | 
							
								        }
							 | 
						
						
						
							| 
								
							 | 
							
								    }
							 | 
						
						
						
							| 
								
							 | 
							
								
							 | 
						
						
						
							| 
								
							 | 
							
								    // Storm particle
							 | 
						
						
						
							| 
								
							 | 
							
								    if (rainStormParticle.active)
							 | 
						
						
						
							| 
								
							 | 
							
								    {
							 | 
						
						
						
							| 
								
							 | 
							
								
							 | 
						
						
						
							| 
								
							 | 
							
								        rainStormParticle.spawnTime += 1*TIME_FACTOR;
							 | 
						
						
						
							| 
								
							 | 
							
								
							 | 
						
						
						
							| 
								
							 | 
							
								        for (int i = 0; i < 1024; i++)
							 | 
						
						
						
							| 
								
							 | 
							
								        {
							 | 
						
						
						
							| 
								
							 | 
							
								            if (!rainStormParticle.particle[i].active && rainStormParticle.spawnTime >= rainStormParticle.maxTime)
							 | 
						
						
						
							| 
								
							 | 
							
								            {
							 | 
						
						
						
							| 
								
							 | 
							
								                for (int j = 0; j < 16; j++)
							 | 
						
						
						
							| 
								
							 | 
							
								                {
							 | 
						
						
						
							| 
								
							 | 
							
								                    rainStormParticle.particle[i+j].active = true;
							 | 
						
						
						
							| 
								
							 | 
							
								                    rainStormParticle.particle[i+j].position = (Vector2){GetRandomValue(100, GetScreenWidth() + 1000), GetRandomValue(-10,-20)};
							 | 
						
						
						
							| 
								
							 | 
							
								                }
							 | 
						
						
						
							| 
								
							 | 
							
								                
							 | 
						
						
						
							| 
								
							 | 
							
								                rainStormParticle.spawnTime = 0;
							 | 
						
						
						
							| 
								
							 | 
							
								                rainStormParticle.maxTime = 4;
							 | 
						
						
						
							| 
								
							 | 
							
								            }
							 | 
						
						
						
							| 
								
							 | 
							
								        }
							 | 
						
						
						
							| 
								
							 | 
							
								    }
							 | 
						
						
						
							| 
								
							 | 
							
								
							 | 
						
						
						
							| 
								
							 | 
							
								    // Snow Storm particle
							 | 
						
						
						
							| 
								
							 | 
							
								    if (snowStormParticle.active)
							 | 
						
						
						
							| 
								
							 | 
							
								    {
							 | 
						
						
						
							| 
								
							 | 
							
								        snowStormParticle.spawnTime += 1*TIME_FACTOR;
							 | 
						
						
						
							| 
								
							 | 
							
								
							 | 
						
						
						
							| 
								
							 | 
							
								        for (int i = 0; i < 256; i++)
							 | 
						
						
						
							| 
								
							 | 
							
								        {
							 | 
						
						
						
							| 
								
							 | 
							
								            if (!snowStormParticle.particle[i].active && snowStormParticle.spawnTime >= snowStormParticle.maxTime)
							 | 
						
						
						
							| 
								
							 | 
							
								            {
							 | 
						
						
						
							| 
								
							 | 
							
								                snowStormParticle.particle[i].active = true;
							 | 
						
						
						
							| 
								
							 | 
							
								                snowStormParticle.particle[i].position = (Vector2){GetRandomValue(100, GetScreenWidth() + 800), -10};
							 | 
						
						
						
							| 
								
							 | 
							
								                snowStormParticle.spawnTime = 0;
							 | 
						
						
						
							| 
								
							 | 
							
								                snowStormParticle.maxTime = GetRandomValue (1, 2);
							 | 
						
						
						
							| 
								
							 | 
							
								            }
							 | 
						
						
						
							| 
								
							 | 
							
								        }
							 | 
						
						
						
							| 
								
							 | 
							
								    }
							 | 
						
						
						
							| 
								
							 | 
							
								
							 | 
						
						
						
							| 
								
							 | 
							
								    if (rayparticle.active)
							 | 
						
						
						
							| 
								
							 | 
							
								    {
							 | 
						
						
						
							| 
								
							 | 
							
								        rayparticle.spawnTime += 1*TIME_FACTOR;
							 | 
						
						
						
							| 
								
							 | 
							
								        backRayparticle.spawnTime += 1*TIME_FACTOR;
							 | 
						
						
						
							| 
								
							 | 
							
								
							 | 
						
						
						
							| 
								
							 | 
							
								        for (int i = 0; i < 20; i++)
							 | 
						
						
						
							| 
								
							 | 
							
								        {
							 | 
						
						
						
							| 
								
							 | 
							
								            if (!rayparticle.particle[i].active && rayparticle.spawnTime >= rayparticle.maxTime)
							 | 
						
						
						
							| 
								
							 | 
							
								            {
							 | 
						
						
						
							| 
								
							 | 
							
								                //printf("PARTICLEEES");
							 | 
						
						
						
							| 
								
							 | 
							
								                rayparticle.particle[i].active = true;
							 | 
						
						
						
							| 
								
							 | 
							
								                rayparticle.particle[i].alpha = 0.0f;
							 | 
						
						
						
							| 
								
							 | 
							
								                rayparticle.particle[i].size = (float)(GetRandomValue(10, 20)/10);
							 | 
						
						
						
							| 
								
							 | 
							
								                rayparticle.particle[i].position = (Vector2){GetRandomValue(300, GetScreenWidth() + 200), 0};
							 | 
						
						
						
							| 
								
							 | 
							
								                rayparticle.particle[i].rotation = -35;
							 | 
						
						
						
							| 
								
							 | 
							
								                rayparticle.spawnTime = 0;
							 | 
						
						
						
							| 
								
							 | 
							
								                rayparticle.particle[i].delayCounter = 0;
							 | 
						
						
						
							| 
								
							 | 
							
								                rayparticle.maxTime = GetRandomValue (20, 50);
							 | 
						
						
						
							| 
								
							 | 
							
								            }
							 | 
						
						
						
							| 
								
							 | 
							
								
							 | 
						
						
						
							| 
								
							 | 
							
								            if (!backRayparticle.particle[i].active && backRayparticle.spawnTime >= backRayparticle.maxTime)
							 | 
						
						
						
							| 
								
							 | 
							
								            {
							 | 
						
						
						
							| 
								
							 | 
							
								                backRayparticle.particle[i].active = true;
							 | 
						
						
						
							| 
								
							 | 
							
								                backRayparticle.particle[i].alpha = 0.0f;
							 | 
						
						
						
							| 
								
							 | 
							
								                backRayparticle.particle[i].size = (float)(GetRandomValue(5, 15)/10);
							 | 
						
						
						
							| 
								
							 | 
							
								                backRayparticle.particle[i].position = (Vector2){GetRandomValue(300, GetScreenWidth() + 200), 0};
							 | 
						
						
						
							| 
								
							 | 
							
								                backRayparticle.particle[i].rotation = -35;
							 | 
						
						
						
							| 
								
							 | 
							
								                backRayparticle.spawnTime = 0;
							 | 
						
						
						
							| 
								
							 | 
							
								                backRayparticle.particle[i].delayCounter = 0;
							 | 
						
						
						
							| 
								
							 | 
							
								                backRayparticle.maxTime = GetRandomValue (20, 50);
							 | 
						
						
						
							| 
								
							 | 
							
								            }
							 | 
						
						
						
							| 
								
							 | 
							
								        }
							 | 
						
						
						
							| 
								
							 | 
							
								    }
							 | 
						
						
						
							| 
								
							 | 
							
								
							 | 
						
						
						
							| 
								
							 | 
							
								    if (rainParticle.active)
							 | 
						
						
						
							| 
								
							 | 
							
								    {
							 | 
						
						
						
							| 
								
							 | 
							
								        rainParticle.spawnTime += 1*TIME_FACTOR;
							 | 
						
						
						
							| 
								
							 | 
							
								
							 | 
						
						
						
							| 
								
							 | 
							
								        for (int i = 0; i < MAX_particle; i++)
							 | 
						
						
						
							| 
								
							 | 
							
								        {
							 | 
						
						
						
							| 
								
							 | 
							
								            if (!rainParticle.particle[i].active && rainParticle.spawnTime >= rainParticle.maxTime)
							 | 
						
						
						
							| 
								
							 | 
							
								            {
							 | 
						
						
						
							| 
								
							 | 
							
								                rainParticle.particle[i].active = true;
							 | 
						
						
						
							| 
								
							 | 
							
								                rainParticle.particle[i].position = (Vector2){GetRandomValue(0, GetScreenWidth() + 200), -10};
							 | 
						
						
						
							| 
								
							 | 
							
								                rainParticle.spawnTime = 0;
							 | 
						
						
						
							| 
								
							 | 
							
								                rainParticle.maxTime = GetRandomValue (1, 8);
							 | 
						
						
						
							| 
								
							 | 
							
								            }
							 | 
						
						
						
							| 
								
							 | 
							
								        }
							 | 
						
						
						
							| 
								
							 | 
							
								    }
							 | 
						
						
						
							| 
								
							 | 
							
								
							 | 
						
						
						
							| 
								
							 | 
							
								    if (backRainParticle.active)
							 | 
						
						
						
							| 
								
							 | 
							
								    {
							 | 
						
						
						
							| 
								
							 | 
							
								        backRainParticle.spawnTime += 1*TIME_FACTOR;
							 | 
						
						
						
							| 
								
							 | 
							
								
							 | 
						
						
						
							| 
								
							 | 
							
								        for (int i = 0; i < MAX_particle; i++)
							 | 
						
						
						
							| 
								
							 | 
							
								        {
							 | 
						
						
						
							| 
								
							 | 
							
								
							 | 
						
						
						
							| 
								
							 | 
							
								            if (!backRainParticle.particle[i].active && backRainParticle.spawnTime >= backRainParticle.maxTime)
							 | 
						
						
						
							| 
								
							 | 
							
								            {
							 | 
						
						
						
							| 
								
							 | 
							
								                backRainParticle.particle[i].active = true;
							 | 
						
						
						
							| 
								
							 | 
							
								                backRainParticle.particle[i].position = (Vector2){GetRandomValue(0, GetScreenWidth() + 200), -10};
							 | 
						
						
						
							| 
								
							 | 
							
								                backRainParticle.spawnTime = 0;
							 | 
						
						
						
							| 
								
							 | 
							
								                backRainParticle.maxTime = GetRandomValue (3, 10);
							 | 
						
						
						
							| 
								
							 | 
							
								            }
							 | 
						
						
						
							| 
								
							 | 
							
								        }
							 | 
						
						
						
							| 
								
							 | 
							
								    }
							 | 
						
						
						
							| 
								
							 | 
							
								
							 | 
						
						
						
							| 
								
							 | 
							
								    // particle Logic
							 | 
						
						
						
							| 
								
							 | 
							
								    for (int i = 0; i < MAX_particle; i++)
							 | 
						
						
						
							| 
								
							 | 
							
								    {
							 | 
						
						
						
							| 
								
							 | 
							
								        if (snowParticle.particle[i].active)
							 | 
						
						
						
							| 
								
							 | 
							
								        {
							 | 
						
						
						
							| 
								
							 | 
							
								            snowParticle.particle[i].position.y += 2*TIME_FACTOR;
							 | 
						
						
						
							| 
								
							 | 
							
								            snowParticle.particle[i].position.x -= 2*TIME_FACTOR;
							 | 
						
						
						
							| 
								
							 | 
							
								            snowParticle.particle[i].rotation += 0.5*TIME_FACTOR;
							 | 
						
						
						
							| 
								
							 | 
							
								            if (snowParticle.particle[i].position.y >= GetScreenHeight()) snowParticle.particle[i].active = false;
							 | 
						
						
						
							| 
								
							 | 
							
								        }
							 | 
						
						
						
							| 
								
							 | 
							
								
							 | 
						
						
						
							| 
								
							 | 
							
								        if (backSnowParticle.particle[i].active)
							 | 
						
						
						
							| 
								
							 | 
							
								        {
							 | 
						
						
						
							| 
								
							 | 
							
								            backSnowParticle.particle[i].position.y += 4*TIME_FACTOR;
							 | 
						
						
						
							| 
								
							 | 
							
								            backSnowParticle.particle[i].position.x -= 3*TIME_FACTOR;
							 | 
						
						
						
							| 
								
							 | 
							
								            backSnowParticle.particle[i].rotation += 0.5*TIME_FACTOR;
							 | 
						
						
						
							| 
								
							 | 
							
								            if (backSnowParticle.particle[i].position.y >= GetScreenHeight()) backSnowParticle.particle[i].active = false;
							 | 
						
						
						
							| 
								
							 | 
							
								        }
							 | 
						
						
						
							| 
								
							 | 
							
								
							 | 
						
						
						
							| 
								
							 | 
							
								        if (planetreeParticle.particle[i].active)
							 | 
						
						
						
							| 
								
							 | 
							
								        {
							 | 
						
						
						
							| 
								
							 | 
							
								            planetreeParticle.particle[i].position.y += 4*TIME_FACTOR;
							 | 
						
						
						
							| 
								
							 | 
							
								            planetreeParticle.particle[i].position.x -= 2*TIME_FACTOR;
							 | 
						
						
						
							| 
								
							 | 
							
								            planetreeParticle.particle[i].rotation += 0.5*TIME_FACTOR;
							 | 
						
						
						
							| 
								
							 | 
							
								            if (planetreeParticle.particle[i].position.y >= GetScreenHeight()) planetreeParticle.particle[i].active = false;
							 | 
						
						
						
							| 
								
							 | 
							
								        }
							 | 
						
						
						
							| 
								
							 | 
							
								
							 | 
						
						
						
							| 
								
							 | 
							
								        if (backPlanetreeParticle.particle[i].active)
							 | 
						
						
						
							| 
								
							 | 
							
								        {
							 | 
						
						
						
							| 
								
							 | 
							
								            backPlanetreeParticle.particle[i].position.y += 4*TIME_FACTOR;
							 | 
						
						
						
							| 
								
							 | 
							
								            backPlanetreeParticle.particle[i].position.x -= 3*TIME_FACTOR;
							 | 
						
						
						
							| 
								
							 | 
							
								            backPlanetreeParticle.particle[i].rotation += 0.5*TIME_FACTOR;
							 | 
						
						
						
							| 
								
							 | 
							
								            if (backPlanetreeParticle.particle[i].position.y >= GetScreenHeight()) backPlanetreeParticle.particle[i].active = false;
							 | 
						
						
						
							| 
								
							 | 
							
								        }
							 | 
						
						
						
							| 
								
							 | 
							
								
							 | 
						
						
						
							| 
								
							 | 
							
								        if (dandelionParticle.particle[i].active)
							 | 
						
						
						
							| 
								
							 | 
							
								        {
							 | 
						
						
						
							| 
								
							 | 
							
								            dandelionParticle.particle[i].position.y += 2.5*TIME_FACTOR;
							 | 
						
						
						
							| 
								
							 | 
							
								            dandelionParticle.particle[i].position.x -= 2*TIME_FACTOR;
							 | 
						
						
						
							| 
								
							 | 
							
								            dandelionParticle.particle[i].rotation = -(30*sin(2*PI/120*globalFrameCounter + dandelionParticle.particle[i].rotPhy) + 30);
							 | 
						
						
						
							| 
								
							 | 
							
								            if (dandelionParticle.particle[i].position.y >= GetScreenHeight()) dandelionParticle.particle[i].active = false;
							 | 
						
						
						
							| 
								
							 | 
							
								        }
							 | 
						
						
						
							| 
								
							 | 
							
								
							 | 
						
						
						
							| 
								
							 | 
							
								        if (dandelionBackParticle.particle[i].active)
							 | 
						
						
						
							| 
								
							 | 
							
								        {
							 | 
						
						
						
							| 
								
							 | 
							
								            dandelionBackParticle.particle[i].position.y += 2*TIME_FACTOR;
							 | 
						
						
						
							| 
								
							 | 
							
								            dandelionBackParticle.particle[i].position.x -= 3*TIME_FACTOR;
							 | 
						
						
						
							| 
								
							 | 
							
								            dandelionBackParticle.particle[i].rotation = -(30*sin(2*PI/120*globalFrameCounter + dandelionParticle.particle[i].rotPhy) + 30);
							 | 
						
						
						
							| 
								
							 | 
							
								            if (dandelionBackParticle.particle[i].position.y >= GetScreenHeight()) dandelionBackParticle.particle[i].active = false;
							 | 
						
						
						
							| 
								
							 | 
							
								        }
							 | 
						
						
						
							| 
								
							 | 
							
								
							 | 
						
						
						
							| 
								
							 | 
							
								        if (flowerParticle.particle[i].active)
							 | 
						
						
						
							| 
								
							 | 
							
								        {
							 | 
						
						
						
							| 
								
							 | 
							
								            flowerParticle.particle[i].position.y += 2.5*TIME_FACTOR;
							 | 
						
						
						
							| 
								
							 | 
							
								            flowerParticle.particle[i].position.x -= 2*TIME_FACTOR;
							 | 
						
						
						
							| 
								
							 | 
							
								            flowerParticle.particle[i].rotation += 0.5*TIME_FACTOR;
							 | 
						
						
						
							| 
								
							 | 
							
								            if (flowerParticle.particle[i].position.y >= GetScreenHeight()) flowerParticle.particle[i].active = false;
							 | 
						
						
						
							| 
								
							 | 
							
								        }
							 | 
						
						
						
							| 
								
							 | 
							
								
							 | 
						
						
						
							| 
								
							 | 
							
								        if (backFlowerParticle.particle[i].active)
							 | 
						
						
						
							| 
								
							 | 
							
								        {
							 | 
						
						
						
							| 
								
							 | 
							
								            backFlowerParticle.particle[i].position.y += 2*TIME_FACTOR;
							 | 
						
						
						
							| 
								
							 | 
							
								            backFlowerParticle.particle[i].position.x -= 3*TIME_FACTOR;
							 | 
						
						
						
							| 
								
							 | 
							
								            backFlowerParticle.particle[i].rotation += 0.5*TIME_FACTOR;
							 | 
						
						
						
							| 
								
							 | 
							
								            if (backFlowerParticle.particle[i].position.y >= GetScreenHeight()) backFlowerParticle.particle[i].active = false;
							 | 
						
						
						
							| 
								
							 | 
							
								        }
							 | 
						
						
						
							| 
								
							 | 
							
								
							 | 
						
						
						
							| 
								
							 | 
							
								        if (rainParticle.particle[i].active)
							 | 
						
						
						
							| 
								
							 | 
							
								        {
							 | 
						
						
						
							| 
								
							 | 
							
								            rainParticle.particle[i].position.y += 4*TIME_FACTOR;
							 | 
						
						
						
							| 
								
							 | 
							
								            rainParticle.particle[i].position.x -= 5*TIME_FACTOR;
							 | 
						
						
						
							| 
								
							 | 
							
								            //rainParticle.particle[i].rotation += 0.5;
							 | 
						
						
						
							| 
								
							 | 
							
								            if (rainParticle.particle[i].position.y >= GetScreenHeight()) rainParticle.particle[i].active = false;
							 | 
						
						
						
							| 
								
							 | 
							
								        }
							 | 
						
						
						
							| 
								
							 | 
							
								
							 | 
						
						
						
							| 
								
							 | 
							
								        if (backRainParticle.particle[i].active)
							 | 
						
						
						
							| 
								
							 | 
							
								        {
							 | 
						
						
						
							| 
								
							 | 
							
								            backRainParticle.particle[i].position.y += 3*TIME_FACTOR;
							 | 
						
						
						
							| 
								
							 | 
							
								            backRainParticle.particle[i].position.x -= 3*TIME_FACTOR;
							 | 
						
						
						
							| 
								
							 | 
							
								            //rainParticle.particle[i].rotation += 0.5;
							 | 
						
						
						
							| 
								
							 | 
							
								            if (backRainParticle.particle[i].position.y >= GetScreenHeight()) backRainParticle.particle[i].active = false;
							 | 
						
						
						
							| 
								
							 | 
							
								        }
							 | 
						
						
						
							| 
								
							 | 
							
								    }
							 | 
						
						
						
							| 
								
							 | 
							
								
							 | 
						
						
						
							| 
								
							 | 
							
								    for (int i = 0; i < 1024; i++)
							 | 
						
						
						
							| 
								
							 | 
							
								    {
							 | 
						
						
						
							| 
								
							 | 
							
								        if (rainStormParticle.particle[i].active)
							 | 
						
						
						
							| 
								
							 | 
							
								        {
							 | 
						
						
						
							| 
								
							 | 
							
								            rainStormParticle.particle[i].position.y += 12*TIME_FACTOR;
							 | 
						
						
						
							| 
								
							 | 
							
								            rainStormParticle.particle[i].position.x -= 15*TIME_FACTOR;
							 | 
						
						
						
							| 
								
							 | 
							
								            //rainParticle.particle[i].rotation += 0.5;
							 | 
						
						
						
							| 
								
							 | 
							
								            if (rainStormParticle.particle[i].position.y >= GetScreenHeight()) rainStormParticle.particle[i].active = false;
							 | 
						
						
						
							| 
								
							 | 
							
								            if (rainStormParticle.active == false)rainStormParticle.particle[i].alpha -= 0.01;
							 | 
						
						
						
							| 
								
							 | 
							
								        }
							 | 
						
						
						
							| 
								
							 | 
							
								    }
							 | 
						
						
						
							| 
								
							 | 
							
								
							 | 
						
						
						
							| 
								
							 | 
							
								    for (int i = 0; i < 256; i++)
							 | 
						
						
						
							| 
								
							 | 
							
								    {
							 | 
						
						
						
							| 
								
							 | 
							
								        if (snowStormParticle.particle[i].active)
							 | 
						
						
						
							| 
								
							 | 
							
								        {
							 | 
						
						
						
							| 
								
							 | 
							
								            snowStormParticle.particle[i].position.y += 12;
							 | 
						
						
						
							| 
								
							 | 
							
								            snowStormParticle.particle[i].position.x -= 15;
							 | 
						
						
						
							| 
								
							 | 
							
								            snowStormParticle.particle[i].rotation += 0.5;
							 | 
						
						
						
							| 
								
							 | 
							
								            if (snowStormParticle.particle[i].position.y >= GetScreenHeight()) snowStormParticle.particle[i].active = false;
							 | 
						
						
						
							| 
								
							 | 
							
								        }
							 | 
						
						
						
							| 
								
							 | 
							
								    }
							 | 
						
						
						
							| 
								
							 | 
							
								
							 | 
						
						
						
							| 
								
							 | 
							
								    for (int i = 0; i < 20; i++)
							 | 
						
						
						
							| 
								
							 | 
							
								    {
							 | 
						
						
						
							| 
								
							 | 
							
								        if (rayparticle.particle[i].active)
							 | 
						
						
						
							| 
								
							 | 
							
								        {
							 | 
						
						
						
							| 
								
							 | 
							
								            rayparticle.particle[i].position.x -= 0.5*TIME_FACTOR;
							 | 
						
						
						
							| 
								
							 | 
							
								
							 | 
						
						
						
							| 
								
							 | 
							
								            if (rayparticle.particle[i].fading)
							 | 
						
						
						
							| 
								
							 | 
							
								            {
							 | 
						
						
						
							| 
								
							 | 
							
								                rayparticle.particle[i].alpha -= 0.01f;
							 | 
						
						
						
							| 
								
							 | 
							
								
							 | 
						
						
						
							| 
								
							 | 
							
								                if (rayparticle.particle[i].alpha <= 0)
							 | 
						
						
						
							| 
								
							 | 
							
								                {
							 | 
						
						
						
							| 
								
							 | 
							
								                    rayparticle.particle[i].alpha = 0;
							 | 
						
						
						
							| 
								
							 | 
							
								                    rayparticle.particle[i].delayCounter++;
							 | 
						
						
						
							| 
								
							 | 
							
								                    if (rayparticle.particle[i].delayCounter >= 30)
							 | 
						
						
						
							| 
								
							 | 
							
								                    {
							 | 
						
						
						
							| 
								
							 | 
							
								                        rayparticle.particle[i].active = false;
							 | 
						
						
						
							| 
								
							 | 
							
								                        rayparticle.particle[i].delayCounter = 0;
							 | 
						
						
						
							| 
								
							 | 
							
								                        rayparticle.particle[i].fading = false;
							 | 
						
						
						
							| 
								
							 | 
							
								                    }
							 | 
						
						
						
							| 
								
							 | 
							
								                }
							 | 
						
						
						
							| 
								
							 | 
							
								            }
							 | 
						
						
						
							| 
								
							 | 
							
								            else
							 | 
						
						
						
							| 
								
							 | 
							
								            {
							 | 
						
						
						
							| 
								
							 | 
							
								                rayparticle.particle[i].alpha += 0.01f;
							 | 
						
						
						
							| 
								
							 | 
							
								
							 | 
						
						
						
							| 
								
							 | 
							
								                if (rayparticle.particle[i].alpha >= 0.5f)
							 | 
						
						
						
							| 
								
							 | 
							
								                {
							 | 
						
						
						
							| 
								
							 | 
							
								                    rayparticle.particle[i].alpha = 0.5f;
							 | 
						
						
						
							| 
								
							 | 
							
								                    rayparticle.particle[i].delayCounter++;
							 | 
						
						
						
							| 
								
							 | 
							
								
							 | 
						
						
						
							| 
								
							 | 
							
								                    if (rayparticle.particle[i].delayCounter >= 30)
							 | 
						
						
						
							| 
								
							 | 
							
								                    {
							 | 
						
						
						
							| 
								
							 | 
							
								                        rayparticle.particle[i].delayCounter = 0;
							 | 
						
						
						
							| 
								
							 | 
							
								                        rayparticle.particle[i].fading = true;
							 | 
						
						
						
							| 
								
							 | 
							
								                    }
							 | 
						
						
						
							| 
								
							 | 
							
								                }
							 | 
						
						
						
							| 
								
							 | 
							
								            }
							 | 
						
						
						
							| 
								
							 | 
							
								        }
							 | 
						
						
						
							| 
								
							 | 
							
								
							 | 
						
						
						
							| 
								
							 | 
							
								        if (backRayparticle.particle[i].active)
							 | 
						
						
						
							| 
								
							 | 
							
								        {
							 | 
						
						
						
							| 
								
							 | 
							
								            backRayparticle.particle[i].position.x -= 0.5;
							 | 
						
						
						
							| 
								
							 | 
							
								
							 | 
						
						
						
							| 
								
							 | 
							
								            if (backRayparticle.particle[i].fading)
							 | 
						
						
						
							| 
								
							 | 
							
								            {
							 | 
						
						
						
							| 
								
							 | 
							
								                backRayparticle.particle[i].alpha -= 0.01f;
							 | 
						
						
						
							| 
								
							 | 
							
								                if (backRayparticle.particle[i].alpha <= 0)
							 | 
						
						
						
							| 
								
							 | 
							
								                {
							 | 
						
						
						
							| 
								
							 | 
							
								                    backRayparticle.particle[i].alpha = 0;
							 | 
						
						
						
							| 
								
							 | 
							
								                    backRayparticle.particle[i].delayCounter++;
							 | 
						
						
						
							| 
								
							 | 
							
								                    if (backRayparticle.particle[i].delayCounter >= 30)
							 | 
						
						
						
							| 
								
							 | 
							
								                    {
							 | 
						
						
						
							| 
								
							 | 
							
								                        backRayparticle.particle[i].active = false;
							 | 
						
						
						
							| 
								
							 | 
							
								                        backRayparticle.particle[i].delayCounter = 0;
							 | 
						
						
						
							| 
								
							 | 
							
								                        backRayparticle.particle[i].fading = false;
							 | 
						
						
						
							| 
								
							 | 
							
								                    }
							 | 
						
						
						
							| 
								
							 | 
							
								                }
							 | 
						
						
						
							| 
								
							 | 
							
								            }
							 | 
						
						
						
							| 
								
							 | 
							
								            else
							 | 
						
						
						
							| 
								
							 | 
							
								            {
							 | 
						
						
						
							| 
								
							 | 
							
								                backRayparticle.particle[i].alpha += 0.01f;
							 | 
						
						
						
							| 
								
							 | 
							
								                if (backRayparticle.particle[i].alpha >= 0.5f)
							 | 
						
						
						
							| 
								
							 | 
							
								                {
							 | 
						
						
						
							| 
								
							 | 
							
								                    backRayparticle.particle[i].alpha = 0.5f;
							 | 
						
						
						
							| 
								
							 | 
							
								                    backRayparticle.particle[i].delayCounter++;
							 | 
						
						
						
							| 
								
							 | 
							
								                    if (backRayparticle.particle[i].delayCounter >= 30)
							 | 
						
						
						
							| 
								
							 | 
							
								                    {
							 | 
						
						
						
							| 
								
							 | 
							
								                        backRayparticle.particle[i].delayCounter = 0;
							 | 
						
						
						
							| 
								
							 | 
							
								                        backRayparticle.particle[i].fading = true;
							 | 
						
						
						
							| 
								
							 | 
							
								                    }
							 | 
						
						
						
							| 
								
							 | 
							
								                }
							 | 
						
						
						
							| 
								
							 | 
							
								            }
							 | 
						
						
						
							| 
								
							 | 
							
								        }
							 | 
						
						
						
							| 
								
							 | 
							
								    }
							 | 
						
						
						
							| 
								
							 | 
							
								
							 | 
						
						
						
							| 
								
							 | 
							
								    // Press enter to change to GAMEPLAY screen
							 | 
						
						
						
							| 
								
							 | 
							
								#if (defined(PLATFORM_ANDROID) || defined(PLATFORM_WEB))
							 | 
						
						
						
							| 
								
							 | 
							
								    if (((IsGestureDetected(GESTURE_TAP) || (GetGestureDetected() == GESTURE_DOUBLETAP)) && framesCounter >= duration))
							 | 
						
						
						
							| 
								
							 | 
							
								    {
							 | 
						
						
						
							| 
								
							 | 
							
								        //finishScreen = 1;   // OPTIONS
							 | 
						
						
						
							| 
								
							 | 
							
								        finishScreen = 2;   // GAMEPLAY
							 | 
						
						
						
							| 
								
							 | 
							
								    }
							 | 
						
						
						
							| 
								
							 | 
							
								#elif (defined(PLATFORM_DESKTOP) || defined(PLATFORM_WEB))
							 | 
						
						
						
							| 
								
							 | 
							
								    if ((IsKeyPressed(KEY_ENTER) && framesCounter >= duration))
							 | 
						
						
						
							| 
								
							 | 
							
								    {
							 | 
						
						
						
							| 
								
							 | 
							
								        //finishScreen = 1;   // OPTIONS
							 | 
						
						
						
							| 
								
							 | 
							
								        finishScreen = 2;   // GAMEPLAY
							 | 
						
						
						
							| 
								
							 | 
							
								    }
							 | 
						
						
						
							| 
								
							 | 
							
								#endif
							 | 
						
						
						
							| 
								
							 | 
							
								}
							 | 
						
						
						
							| 
								
							 | 
							
								
							 | 
						
						
						
							| 
								
							 | 
							
								// Title Screen Draw logic
							 | 
						
						
						
							| 
								
							 | 
							
								void DrawTitleScreen(void)
							 | 
						
						
						
							| 
								
							 | 
							
								{
							 | 
						
						
						
							| 
								
							 | 
							
								    BeginShaderMode(colorBlend);
							 | 
						
						
						
							| 
								
							 | 
							
								    
							 | 
						
						
						
							| 
								
							 | 
							
								    DrawTexturePro(atlas02,gameplay_background, (Rectangle){0, 0, gameplay_background.width*2, gameplay_background.height*2}, (Vector2){0, 0}, 0, color02);
							 | 
						
						
						
							| 
								
							 | 
							
								
							 | 
						
						
						
							| 
								
							 | 
							
								    // Draw parallax
							 | 
						
						
						
							| 
								
							 | 
							
								    DrawParallaxBack();
							 | 
						
						
						
							| 
								
							 | 
							
								    DrawParallaxMiddle();
							 | 
						
						
						
							| 
								
							 | 
							
								
							 | 
						
						
						
							| 
								
							 | 
							
								    for (int i = 0; i < MAX_particle; i++)
							 | 
						
						
						
							| 
								
							 | 
							
								    {
							 | 
						
						
						
							| 
								
							 | 
							
								        if (backSnowParticle.particle[i].active) DrawTexturePro(atlas02, particle_icecrystal_bw,
							 | 
						
						
						
							| 
								
							 | 
							
								                                               (Rectangle){ backSnowParticle.particle[i].position.x, backSnowParticle.particle[i].position.y, particle_icecrystal_bw.width*backSnowParticle.particle[i].size, particle_icecrystal_bw.height*backSnowParticle.particle[i].size },
							 | 
						
						
						
							| 
								
							 | 
							
								                                               (Vector2){ particle_icecrystal_bw.width*backSnowParticle.particle[i].size/2, particle_icecrystal_bw.height*backSnowParticle.particle[i].size/2 }, backSnowParticle.particle[i].rotation,
							 | 
						
						
						
							| 
								
							 | 
							
								                                               Fade((Color){144, 214, 255, 255}, backSnowParticle.particle[i].alpha));
							 | 
						
						
						
							| 
								
							 | 
							
								
							 | 
						
						
						
							| 
								
							 | 
							
								        if (backPlanetreeParticle.particle[i].active) DrawTexturePro(atlas02, particle_planetreeleaf_bw,
							 | 
						
						
						
							| 
								
							 | 
							
								                                               (Rectangle){ backPlanetreeParticle.particle[i].position.x, backPlanetreeParticle.particle[i].position.y, particle_planetreeleaf_bw.width*backPlanetreeParticle.particle[i].size, particle_planetreeleaf_bw.height*backPlanetreeParticle.particle[i].size },
							 | 
						
						
						
							| 
								
							 | 
							
								                                               (Vector2){ particle_planetreeleaf_bw.width*backPlanetreeParticle.particle[i].size/2, particle_planetreeleaf_bw.height*backPlanetreeParticle.particle[i].size/2 }, backPlanetreeParticle.particle[i].rotation,
							 | 
						
						
						
							| 
								
							 | 
							
								                                               Fade((Color){179, 86, 6, 255}, backPlanetreeParticle.particle[i].alpha));
							 | 
						
						
						
							| 
								
							 | 
							
								
							 | 
						
						
						
							| 
								
							 | 
							
								        if (dandelionBackParticle.particle[i].active) DrawTexturePro(atlas02, particle_dandelion_bw,
							 | 
						
						
						
							| 
								
							 | 
							
								                                               (Rectangle){ dandelionBackParticle.particle[i].position.x, dandelionBackParticle.particle[i].position.y, particle_dandelion_bw.width*dandelionBackParticle.particle[i].size, particle_dandelion_bw.height*dandelionBackParticle.particle[i].size },
							 | 
						
						
						
							| 
								
							 | 
							
								                                               (Vector2){ particle_dandelion_bw.width*dandelionBackParticle.particle[i].size/2, particle_dandelion_bw.height*dandelionBackParticle.particle[i].size/2 }, dandelionBackParticle.particle[i].rotation,
							 | 
						
						
						
							| 
								
							 | 
							
								                                               Fade((Color){202, 167, 126, 255}, dandelionBackParticle.particle[i].alpha));
							 | 
						
						
						
							| 
								
							 | 
							
								
							 | 
						
						
						
							| 
								
							 | 
							
								        if (backFlowerParticle.particle[i].active) DrawTexturePro(atlas02, particle_ecualyptusflower_bw,
							 | 
						
						
						
							| 
								
							 | 
							
								                                               (Rectangle){ backFlowerParticle.particle[i].position.x, backFlowerParticle.particle[i].position.y, particle_ecualyptusflower_bw.width*backFlowerParticle.particle[i].size, particle_ecualyptusflower_bw.height*backFlowerParticle.particle[i].size },
							 | 
						
						
						
							| 
								
							 | 
							
								                                               (Vector2){ particle_ecualyptusflower_bw.width*backFlowerParticle.particle[i].size/2, particle_ecualyptusflower_bw.height*backFlowerParticle.particle[i].size/2 }, backFlowerParticle.particle[i].rotation,
							 | 
						
						
						
							| 
								
							 | 
							
								                                               Fade((Color){218, 84, 108, 255}, backFlowerParticle.particle[i].alpha));
							 | 
						
						
						
							| 
								
							 | 
							
								
							 | 
						
						
						
							| 
								
							 | 
							
								        if (backRainParticle.particle[i].active) DrawTexturePro(atlas02, particle_waterdrop_bw,
							 | 
						
						
						
							| 
								
							 | 
							
								                                               (Rectangle){ backRainParticle.particle[i].position.x, backRainParticle.particle[i].position.y, particle_waterdrop_bw.width*backRainParticle.particle[i].size, particle_waterdrop_bw.height*backRainParticle.particle[i].size },
							 | 
						
						
						
							| 
								
							 | 
							
								                                               (Vector2){ particle_waterdrop_bw.width*backRainParticle.particle[i].size/2, particle_waterdrop_bw.height*backRainParticle.particle[i].size/2 }, backRainParticle.particle[i].rotation,
							 | 
						
						
						
							| 
								
							 | 
							
								                                               Fade((Color){144, 183, 187, 255}, backRainParticle.particle[i].alpha));
							 | 
						
						
						
							| 
								
							 | 
							
								    }
							 | 
						
						
						
							| 
								
							 | 
							
								    
							 | 
						
						
						
							| 
								
							 | 
							
								    for (int i = 0; i < 20; i++)
							 | 
						
						
						
							| 
								
							 | 
							
								    {
							 | 
						
						
						
							| 
								
							 | 
							
								       if (backRayparticle.particle[i].active) DrawTexturePro(atlas02, gameplay_back_fx_lightraymid,
							 | 
						
						
						
							| 
								
							 | 
							
								                                               (Rectangle){ backRayparticle.particle[i].position.x, backRayparticle.particle[i].position.y, gameplay_back_fx_lightraymid.width*backRayparticle.particle[i].size, gameplay_back_fx_lightraymid.height*backRayparticle.particle[i].size },
							 | 
						
						
						
							| 
								
							 | 
							
								                                               (Vector2){ gameplay_back_fx_lightraymid.width*backRayparticle.particle[i].size/2, gameplay_back_fx_lightraymid.height*backRayparticle.particle[i].size/2 }, backRayparticle.particle[i].rotation,
							 | 
						
						
						
							| 
								
							 | 
							
								                                               Fade(GOLD, backRayparticle.particle[i].alpha));
							 | 
						
						
						
							| 
								
							 | 
							
								    }
							 | 
						
						
						
							| 
								
							 | 
							
								
							 | 
						
						
						
							| 
								
							 | 
							
								    DrawParallaxFront();
							 | 
						
						
						
							| 
								
							 | 
							
								    
							 | 
						
						
						
							| 
								
							 | 
							
								    for (int i = 0; i < 5; i++)
							 | 
						
						
						
							| 
								
							 | 
							
								    {
							 | 
						
						
						
							| 
								
							 | 
							
								        DrawTexturePro(atlas02, gameplay_props_tree, (Rectangle){bamboo[i].x, bamboo[i].y, 43, 720}, (Vector2){0, 0}, 0, color03);
							 | 
						
						
						
							| 
								
							 | 
							
								        //DrawRectangleRec(bamboo[i], Fade(LIME, 0.5));
							 | 
						
						
						
							| 
								
							 | 
							
								    }
							 | 
						
						
						
							| 
								
							 | 
							
								
							 | 
						
						
						
							| 
								
							 | 
							
								    EndShaderMode();
							 | 
						
						
						
							| 
								
							 | 
							
								    
							 | 
						
						
						
							| 
								
							 | 
							
								    DrawTextureRec(atlas01, koalaMenu, (Vector2){player.x - player.width, player.y - 40}, WHITE);
							 | 
						
						
						
							| 
								
							 | 
							
								
							 | 
						
						
						
							| 
								
							 | 
							
								    BeginShaderMode(colorBlend);
							 | 
						
						
						
							| 
								
							 | 
							
								
							 | 
						
						
						
							| 
								
							 | 
							
								    DrawTexturePro(atlas02, gameplay_back_ground00, (Rectangle){0, 637, gameplay_back_ground00.width*2, gameplay_back_ground00.height*2}, (Vector2){0,0}, 0, color00);
							 | 
						
						
						
							| 
								
							 | 
							
								
							 | 
						
						
						
							| 
								
							 | 
							
								    EndShaderMode();
							 | 
						
						
						
							| 
								
							 | 
							
								    
							 | 
						
						
						
							| 
								
							 | 
							
								    DrawTexturePro(atlas01, (Rectangle){title_titletext.x, title_titletext.y, title_titletext.width, 230},  (Rectangle){GetScreenWidth()*0.49F - title_titletext.width/2, currentValue1, title_titletext.width, 235}, (Vector2){0, 0}, 0, WHITE);
							 | 
						
						
						
							| 
								
							 | 
							
								    DrawTexturePro(atlas01, (Rectangle){title_titletext.x, title_titletext.y + 232, title_titletext.width, 116}, (Rectangle){GetScreenWidth()*0.49F - title_titletext.width/2, currentValue2, title_titletext.width, 116}, (Vector2){0, 0}, 0, WHITE);
							 | 
						
						
						
							| 
								
							 | 
							
								
							 | 
						
						
						
							| 
								
							 | 
							
								    if ((framesCounter/60)%2 && framesCounter >= duration) DrawTextEx(font, pressToPlay, (Vector2){ GetScreenWidth()/2 - fontSize.x/2, GetScreenHeight()/2 + fontSize.y*2 }, font.baseSize, 2, (Color){247, 239, 209, 255});
							 | 
						
						
						
							| 
								
							 | 
							
								
							 | 
						
						
						
							| 
								
							 | 
							
								    for (int i = 0; i < MAX_particle; i++)
							 | 
						
						
						
							| 
								
							 | 
							
								    {
							 | 
						
						
						
							| 
								
							 | 
							
								        if (snowParticle.particle[i].active) DrawTexturePro(atlas01, particle_icecrystal,
							 | 
						
						
						
							| 
								
							 | 
							
								                                               (Rectangle){ snowParticle.particle[i].position.x, snowParticle.particle[i].position.y, particle_icecrystal.width*snowParticle.particle[i].size, particle_icecrystal.height*snowParticle.particle[i].size },
							 | 
						
						
						
							| 
								
							 | 
							
								                                               (Vector2){ particle_icecrystal.width*snowParticle.particle[i].size/2, particle_icecrystal.height*snowParticle.particle[i].size/2 }, snowParticle.particle[i].rotation,
							 | 
						
						
						
							| 
								
							 | 
							
								                                               Fade(snowParticle.particle[i].color, snowParticle.particle[i].alpha));
							 | 
						
						
						
							| 
								
							 | 
							
								
							 | 
						
						
						
							| 
								
							 | 
							
								        if (planetreeParticle.particle[i].active) DrawTexturePro(atlas01, particle_planetreeleaf,
							 | 
						
						
						
							| 
								
							 | 
							
								                                               (Rectangle){ planetreeParticle.particle[i].position.x, planetreeParticle.particle[i].position.y, particle_planetreeleaf.width*planetreeParticle.particle[i].size, particle_planetreeleaf.height*planetreeParticle.particle[i].size },
							 | 
						
						
						
							| 
								
							 | 
							
								                                               (Vector2){ particle_planetreeleaf.width*planetreeParticle.particle[i].size/2, particle_planetreeleaf.height*planetreeParticle.particle[i].size/2 }, planetreeParticle.particle[i].rotation,
							 | 
						
						
						
							| 
								
							 | 
							
								                                               Fade(planetreeParticle.particle[i].color, planetreeParticle.particle[i].alpha));
							 | 
						
						
						
							| 
								
							 | 
							
								
							 | 
						
						
						
							| 
								
							 | 
							
								        if (dandelionParticle.particle[i].active) DrawTexturePro(atlas01, particle_dandelion,
							 | 
						
						
						
							| 
								
							 | 
							
								                                               (Rectangle){ dandelionParticle.particle[i].position.x, dandelionParticle.particle[i].position.y, particle_dandelion.width*dandelionParticle.particle[i].size, particle_dandelion.height*dandelionParticle.particle[i].size },
							 | 
						
						
						
							| 
								
							 | 
							
								                                               (Vector2){ particle_dandelion.width*dandelionParticle.particle[i].size/2, particle_dandelion.height*dandelionParticle.particle[i].size/2 }, dandelionParticle.particle[i].rotation,
							 | 
						
						
						
							| 
								
							 | 
							
								                                               Fade(dandelionParticle.particle[i].color, dandelionParticle.particle[i].alpha));
							 | 
						
						
						
							| 
								
							 | 
							
								
							 | 
						
						
						
							| 
								
							 | 
							
								        if (flowerParticle.particle[i].active) DrawTexturePro(atlas01, particle_ecualyptusflower,
							 | 
						
						
						
							| 
								
							 | 
							
								                                               (Rectangle){ flowerParticle.particle[i].position.x, flowerParticle.particle[i].position.y, particle_ecualyptusflower.width*flowerParticle.particle[i].size, particle_ecualyptusflower.height*flowerParticle.particle[i].size },
							 | 
						
						
						
							| 
								
							 | 
							
								                                               (Vector2){ particle_ecualyptusflower.width*flowerParticle.particle[i].size/2, particle_ecualyptusflower.height*flowerParticle.particle[i].size/2 }, flowerParticle.particle[i].rotation,
							 | 
						
						
						
							| 
								
							 | 
							
								                                               Fade(flowerParticle.particle[i].color, flowerParticle.particle[i].alpha));
							 | 
						
						
						
							| 
								
							 | 
							
								
							 | 
						
						
						
							| 
								
							 | 
							
								        if (rainParticle.particle[i].active) DrawTexturePro(atlas01, particle_waterdrop,
							 | 
						
						
						
							| 
								
							 | 
							
								                                               (Rectangle){ rainParticle.particle[i].position.x, rainParticle.particle[i].position.y, particle_waterdrop.width*rainParticle.particle[i].size, particle_waterdrop.height*rainParticle.particle[i].size },
							 | 
						
						
						
							| 
								
							 | 
							
								                                               (Vector2){ particle_waterdrop.width*rainParticle.particle[i].size/2, particle_waterdrop.height*rainParticle.particle[i].size/2 }, rainParticle.particle[i].rotation,
							 | 
						
						
						
							| 
								
							 | 
							
								                                               Fade(rainParticle.particle[i].color, rainParticle.particle[i].alpha));
							 | 
						
						
						
							| 
								
							 | 
							
								
							 | 
						
						
						
							| 
								
							 | 
							
								    }
							 | 
						
						
						
							| 
								
							 | 
							
								
							 | 
						
						
						
							| 
								
							 | 
							
								    for (int i = 0; i < 1024; i++)
							 | 
						
						
						
							| 
								
							 | 
							
								    {
							 | 
						
						
						
							| 
								
							 | 
							
								        if (rainStormParticle.particle[i].active) DrawTexturePro(atlas01, particle_waterdrop,
							 | 
						
						
						
							| 
								
							 | 
							
								                                               (Rectangle){ rainStormParticle.particle[i].position.x, rainStormParticle.particle[i].position.y, particle_waterdrop.width*rainStormParticle.particle[i].size, particle_waterdrop.height*rainStormParticle.particle[i].size },
							 | 
						
						
						
							| 
								
							 | 
							
								                                               (Vector2){ particle_waterdrop.width*rainStormParticle.particle[i].size/2, particle_waterdrop.height*rainStormParticle.particle[i].size/2 }, rainStormParticle.particle[i].rotation,
							 | 
						
						
						
							| 
								
							 | 
							
								                                               Fade(rainStormParticle.particle[i].color, rainStormParticle.particle[i].alpha));
							 | 
						
						
						
							| 
								
							 | 
							
								    }
							 | 
						
						
						
							| 
								
							 | 
							
								
							 | 
						
						
						
							| 
								
							 | 
							
								    for (int i = 0; i < 256; i++)
							 | 
						
						
						
							| 
								
							 | 
							
								    {
							 | 
						
						
						
							| 
								
							 | 
							
								
							 | 
						
						
						
							| 
								
							 | 
							
								        if (snowStormParticle.particle[i].active) DrawTexturePro(atlas01, particle_icecrystal,
							 | 
						
						
						
							| 
								
							 | 
							
								                                               (Rectangle){ snowStormParticle.particle[i].position.x, snowStormParticle.particle[i].position.y, particle_icecrystal.width*snowStormParticle.particle[i].size, particle_icecrystal.height*snowStormParticle.particle[i].size },
							 | 
						
						
						
							| 
								
							 | 
							
								                                               (Vector2){ particle_icecrystal.width*snowStormParticle.particle[i].size/2, particle_icecrystal.height*snowStormParticle.particle[i].size/2 }, snowStormParticle.particle[i].rotation,
							 | 
						
						
						
							| 
								
							 | 
							
								                                               Fade(snowStormParticle.particle[i].color, snowStormParticle.particle[i].alpha));
							 | 
						
						
						
							| 
								
							 | 
							
								    }
							 | 
						
						
						
							| 
								
							 | 
							
								
							 | 
						
						
						
							| 
								
							 | 
							
								
							 | 
						
						
						
							| 
								
							 | 
							
								    for (int i = 0; i < 20; i++)
							 | 
						
						
						
							| 
								
							 | 
							
								    {
							 | 
						
						
						
							| 
								
							 | 
							
								
							 | 
						
						
						
							| 
								
							 | 
							
								       if (rayparticle.particle[i].active) DrawTexturePro(atlas01, gameplay_fx_lightraymid,
							 | 
						
						
						
							| 
								
							 | 
							
								                                               (Rectangle){ rayparticle.particle[i].position.x, rayparticle.particle[i].position.y, gameplay_fx_lightraymid.width*rayparticle.particle[i].size, gameplay_fx_lightraymid.height*rayparticle.particle[i].size },
							 | 
						
						
						
							| 
								
							 | 
							
								                                               (Vector2){ gameplay_fx_lightraymid.width*rayparticle.particle[i].size/2, gameplay_fx_lightraymid.height*rayparticle.particle[i].size/2 }, rayparticle.particle[i].rotation,
							 | 
						
						
						
							| 
								
							 | 
							
								                                               Fade(rayparticle.particle[i].color, rayparticle.particle[i].alpha));
							 | 
						
						
						
							| 
								
							 | 
							
								    }
							 | 
						
						
						
							| 
								
							 | 
							
								    
							 | 
						
						
						
							| 
								
							 | 
							
								    /*
							 | 
						
						
						
							| 
								
							 | 
							
								    DrawTexturePro(atlas01, title_twitter, (Rectangle){ GetScreenWidth()*0.85, GetScreenHeight()*0.1, title_twitter.width, title_twitter.height}, (Vector2){0,0}, 0, WHITE);
							 | 
						
						
						
							| 
								
							 | 
							
								    DrawTexturePro(atlas01, title_facebook, (Rectangle){ GetScreenWidth()*0.85, GetScreenHeight()*0.3, title_facebook.width, title_facebook.height}, (Vector2){0,0}, 0, WHITE);
							 | 
						
						
						
							| 
								
							 | 
							
								    DrawTexturePro(atlas01, title_googleplay, (Rectangle){ GetScreenWidth()*0.85, GetScreenHeight()*0.5, title_googleplay.width, title_googleplay.height}, (Vector2){0,0}, 0, WHITE);
							 | 
						
						
						
							| 
								
							 | 
							
								    
							 | 
						
						
						
							| 
								
							 | 
							
								    if (soundActive)DrawTexturePro(atlas01, title_music_on, (Rectangle){soundButton.x, soundButton.y, title_music_on.width, title_music_on.height}, (Vector2){0,0}, 0, WHITE);
							 | 
						
						
						
							| 
								
							 | 
							
								    else DrawTexturePro(atlas01, title_music_off, (Rectangle){soundButton.x, soundButton.y, title_music_off.width, title_music_off.height}, (Vector2){0,0}, 0, WHITE);
							 | 
						
						
						
							| 
								
							 | 
							
								    
							 | 
						
						
						
							| 
								
							 | 
							
								    if (musicActive)DrawTexturePro(atlas01, title_speaker_on, (Rectangle){speakerButton.x, speakerButton.y, title_speaker_on.width, title_speaker_on.height}, (Vector2){0,0}, 0, WHITE);
							 | 
						
						
						
							| 
								
							 | 
							
								    else DrawTexturePro(atlas01, title_speaker_off, (Rectangle){speakerButton.x, speakerButton.y, title_speaker_off.width, title_speaker_off.height}, (Vector2){0,0}, 0, WHITE);
							 | 
						
						
						
							| 
								
							 | 
							
								    */
							 | 
						
						
						
							| 
								
							 | 
							
								}
							 | 
						
						
						
							| 
								
							 | 
							
								
							 | 
						
						
						
							| 
								
							 | 
							
								// Title Screen Unload logic
							 | 
						
						
						
							| 
								
							 | 
							
								void UnloadTitleScreen(void)
							 | 
						
						
						
							| 
								
							 | 
							
								{
							 | 
						
						
						
							| 
								
							 | 
							
								    // ...
							 | 
						
						
						
							| 
								
							 | 
							
								}
							 | 
						
						
						
							| 
								
							 | 
							
								
							 | 
						
						
						
							| 
								
							 | 
							
								// Title Screen should finish?
							 | 
						
						
						
							| 
								
							 | 
							
								int FinishTitleScreen(void)
							 | 
						
						
						
							| 
								
							 | 
							
								{
							 | 
						
						
						
							| 
								
							 | 
							
								    return finishScreen;
							 | 
						
						
						
							| 
								
							 | 
							
								}
							 | 
						
						
						
							| 
								
							 | 
							
								
							 | 
						
						
						
							| 
								
							 | 
							
								static void DrawParallaxFront(void)
							 | 
						
						
						
							| 
								
							 | 
							
								{
							 | 
						
						
						
							| 
								
							 | 
							
								    Rectangle ground01 = gameplay_back_ground01;
							 | 
						
						
						
							| 
								
							 | 
							
								
							 | 
						
						
						
							| 
								
							 | 
							
								    //DrawTexturePro(atlas02, gameplay_back_tree01_layer03, (Rectangle){0, 21, gameplay_back_tree01_layer03.width*2, gameplay_back_tree01_layer03.height*2}, (Vector2){0,0}, 0, color02);
							 | 
						
						
						
							| 
								
							 | 
							
								    DrawTexturePro(atlas02, gameplay_back_tree01_layer01, (Rectangle){(int)parallaxFrontOffset, 60, gameplay_back_tree01_layer01.width*2, gameplay_back_tree01_layer01.height*2}, (Vector2){0,0}, 0, color02);
							 | 
						
						
						
							| 
								
							 | 
							
								    DrawTexturePro(atlas02, gameplay_back_tree02_layer01, (Rectangle){(int)parallaxFrontOffset + 140, 60, gameplay_back_tree02_layer01.width*2, gameplay_back_tree02_layer01.height*2}, (Vector2){0,0}, 0, color02);
							 | 
						
						
						
							| 
								
							 | 
							
								    DrawTexturePro(atlas02, gameplay_back_tree03_layer01, (Rectangle){(int)parallaxFrontOffset + 140*2, 55, gameplay_back_tree02_layer01.width*2, gameplay_back_tree02_layer01.height*2}, (Vector2){0,0}, 0, color02);
							 | 
						
						
						
							| 
								
							 | 
							
								    DrawTexturePro(atlas02, gameplay_back_tree04_layer01, (Rectangle){(int)parallaxFrontOffset + 140*3, 60, gameplay_back_tree04_layer01.width*2, gameplay_back_tree04_layer01.height*2}, (Vector2){0,0}, 0, color02);
							 | 
						
						
						
							| 
								
							 | 
							
								    DrawTexturePro(atlas02, gameplay_back_tree05_layer01, (Rectangle){(int)parallaxFrontOffset + 140*4, 60, gameplay_back_tree05_layer01.width*2, gameplay_back_tree05_layer01.height*2}, (Vector2){0,0}, 0, color02);
							 | 
						
						
						
							| 
								
							 | 
							
								    DrawTexturePro(atlas02, gameplay_back_tree06_layer01, (Rectangle){(int)parallaxFrontOffset + 140*5, 55, gameplay_back_tree06_layer01.width*2, gameplay_back_tree06_layer01.height*2}, (Vector2){0,0}, 0, color02);
							 | 
						
						
						
							| 
								
							 | 
							
								    DrawTexturePro(atlas02, gameplay_back_tree07_layer01, (Rectangle){(int)parallaxFrontOffset + 140*6, 60, gameplay_back_tree07_layer01.width*2, gameplay_back_tree07_layer01.height*2}, (Vector2){0,0}, 0, color02);
							 | 
						
						
						
							| 
								
							 | 
							
								    DrawTexturePro(atlas02, gameplay_back_tree08_layer01, (Rectangle){(int)parallaxFrontOffset + 140*7, 60, gameplay_back_tree08_layer01.width*2, gameplay_back_tree08_layer01.height*2}, (Vector2){0,0}, 0, color02);
							 | 
						
						
						
							| 
								
							 | 
							
								    DrawTexturePro(atlas02, gameplay_back_ground01, (Rectangle){0, 559, ground01.width*2, ground01.height*2}, (Vector2){0,0}, 0, color01);
							 | 
						
						
						
							| 
								
							 | 
							
								    DrawTexturePro(atlas02, (Rectangle){ground01.x, ground01.y + ground01.height, ground01.width, -ground01.height}, (Rectangle){0, -33, ground01.width*2, ground01.height*2}, (Vector2){0,0}, 0, color01);
							 | 
						
						
						
							| 
								
							 | 
							
								 }
							 | 
						
						
						
							| 
								
							 | 
							
								
							 | 
						
						
						
							| 
								
							 | 
							
								static void DrawParallaxMiddle(void)
							 | 
						
						
						
							| 
								
							 | 
							
								{
							 | 
						
						
						
							| 
								
							 | 
							
								    Rectangle ground02 = gameplay_back_ground02;
							 | 
						
						
						
							| 
								
							 | 
							
								
							 | 
						
						
						
							| 
								
							 | 
							
								    //DrawTexturePro(atlas02, gameplay_back_tree02_layer03, (Rectangle){0, 67, gameplay_back_tree02_layer03.width*2, gameplay_back_tree02_layer03.height*2}, (Vector2){0,0}, 0, color02);
							 | 
						
						
						
							| 
								
							 | 
							
								    DrawTexturePro(atlas02, gameplay_back_tree01_layer02, (Rectangle){(int)0, 67, gameplay_back_tree01_layer02.width*2, gameplay_back_tree01_layer02.height*2}, (Vector2){0,0}, 0, color02);
							 | 
						
						
						
							| 
								
							 | 
							
								    DrawTexturePro(atlas02, gameplay_back_tree02_layer02, (Rectangle){(int)140, 67, gameplay_back_tree02_layer02.width*2, gameplay_back_tree02_layer02.height*2}, (Vector2){0,0}, 0, color02);
							 | 
						
						
						
							| 
								
							 | 
							
								    DrawTexturePro(atlas02, gameplay_back_tree03_layer02, (Rectangle){(int)140*2, 67, gameplay_back_tree03_layer02.width*2, gameplay_back_tree03_layer02.height*2}, (Vector2){0,0}, 0, color02);
							 | 
						
						
						
							| 
								
							 | 
							
								    DrawTexturePro(atlas02, gameplay_back_tree04_layer02, (Rectangle){(int)140*3, 67, gameplay_back_tree04_layer02.width*2, gameplay_back_tree04_layer02.height*2}, (Vector2){0,0}, 0, color02);
							 | 
						
						
						
							| 
								
							 | 
							
								    DrawTexturePro(atlas02, gameplay_back_tree05_layer02, (Rectangle){(int)140*4, 67, gameplay_back_tree05_layer02.width*2, gameplay_back_tree05_layer02.height*2}, (Vector2){0,0}, 0, color02);
							 | 
						
						
						
							| 
								
							 | 
							
								    DrawTexturePro(atlas02, gameplay_back_tree06_layer02, (Rectangle){(int)140*5, 67, gameplay_back_tree06_layer02.width*2, gameplay_back_tree06_layer02.height*2}, (Vector2){0,0}, 0, color02);
							 | 
						
						
						
							| 
								
							 | 
							
								    DrawTexturePro(atlas02, gameplay_back_tree07_layer02, (Rectangle){(int)140*6, 67, gameplay_back_tree07_layer02.width*2, gameplay_back_tree07_layer02.height*2}, (Vector2){0,0}, 0, color02);
							 | 
						
						
						
							| 
								
							 | 
							
								    DrawTexturePro(atlas02, gameplay_back_tree08_layer02, (Rectangle){(int)140*7, 67, gameplay_back_tree08_layer02.width*2, gameplay_back_tree08_layer02.height*2}, (Vector2){0,0}, 0, color02);
							 | 
						
						
						
							| 
								
							 | 
							
								    DrawTexturePro(atlas02, gameplay_back_ground02, (Rectangle){0, 509, ground02.width*2, ground02.height*2}, (Vector2){0,0}, 0, color01);  
							 | 
						
						
						
							| 
								
							 | 
							
								    DrawTexturePro(atlas02, (Rectangle){ground02.x, ground02.y + ground02.height, ground02.width, -ground02.height}, (Rectangle){0, 19, ground02.width*2, ground02.height*2}, (Vector2){0,0}, 0, color01);
							 | 
						
						
						
							| 
								
							 | 
							
								}
							 | 
						
						
						
							| 
								
							 | 
							
								
							 | 
						
						
						
							| 
								
							 | 
							
								static void DrawParallaxBack(void)
							 | 
						
						
						
							| 
								
							 | 
							
								{
							 | 
						
						
						
							| 
								
							 | 
							
								    Rectangle ground03 = gameplay_back_ground03;
							 | 
						
						
						
							| 
								
							 | 
							
								
							 | 
						
						
						
							| 
								
							 | 
							
								    //DrawTexturePro(atlas02, gameplay_back_tree02_layer03, (Rectangle){0, 67, gameplay_back_tree02_layer03.width*2, gameplay_back_tree02_layer03.height*2}, (Vector2){0,0}, 0, color02);
							 | 
						
						
						
							| 
								
							 | 
							
								    DrawTexturePro(atlas02, gameplay_back_tree01_layer03, (Rectangle){(int)parallaxBackOffset, 67, gameplay_back_tree01_layer03.width*2, gameplay_back_tree01_layer03.height*2}, (Vector2){0,0}, 0, color02);
							 | 
						
						
						
							| 
								
							 | 
							
								    DrawTexturePro(atlas02, gameplay_back_tree02_layer03, (Rectangle){(int)parallaxBackOffset + 140, 67, gameplay_back_tree02_layer03.width*2, gameplay_back_tree02_layer03.height*2}, (Vector2){0,0}, 0, color02);
							 | 
						
						
						
							| 
								
							 | 
							
								    DrawTexturePro(atlas02, gameplay_back_tree03_layer03, (Rectangle){(int)parallaxBackOffset + 140*2, 67, gameplay_back_tree03_layer03.width*2, gameplay_back_tree03_layer03.height*2}, (Vector2){0,0}, 0, color02);
							 | 
						
						
						
							| 
								
							 | 
							
								    DrawTexturePro(atlas02, gameplay_back_tree04_layer03, (Rectangle){(int)parallaxBackOffset + 140*3, 67, gameplay_back_tree04_layer03.width*2, gameplay_back_tree04_layer03.height*2}, (Vector2){0,0}, 0, color02);
							 | 
						
						
						
							| 
								
							 | 
							
								    DrawTexturePro(atlas02, gameplay_back_tree05_layer03, (Rectangle){(int)parallaxBackOffset + 140*4, 67, gameplay_back_tree05_layer03.width*2, gameplay_back_tree05_layer03.height*2}, (Vector2){0,0}, 0, color02);
							 | 
						
						
						
							| 
								
							 | 
							
								    DrawTexturePro(atlas02, gameplay_back_tree06_layer03, (Rectangle){(int)parallaxBackOffset + 140*5, 67, gameplay_back_tree06_layer03.width*2, gameplay_back_tree06_layer03.height*2}, (Vector2){0,0}, 0, color02);
							 | 
						
						
						
							| 
								
							 | 
							
								    DrawTexturePro(atlas02, gameplay_back_tree07_layer03, (Rectangle){(int)parallaxBackOffset + 140*6, 67, gameplay_back_tree07_layer03.width*2, gameplay_back_tree07_layer03.height*2}, (Vector2){0,0}, 0, color02);
							 | 
						
						
						
							| 
								
							 | 
							
								    DrawTexturePro(atlas02, gameplay_back_tree08_layer03, (Rectangle){(int)parallaxBackOffset + 140*7, 67, gameplay_back_tree08_layer03.width*2, gameplay_back_tree08_layer03.height*2}, (Vector2){0,0}, 0, color02);
							 | 
						
						
						
							| 
								
							 | 
							
								    DrawTexturePro(atlas02, gameplay_back_ground03, (Rectangle){0, 469, ground03.width*2, ground03.height*2}, (Vector2){0,0}, 0, color01);
							 | 
						
						
						
							| 
								
							 | 
							
								    DrawTexturePro(atlas02, (Rectangle){ground03.x, ground03.y + ground03.height, ground03.width, -ground03.height}, (Rectangle){0, 67, ground03.width*2, ground03.height*2}, (Vector2){0,0}, 0, color01);
							 | 
						
						
						
							| 
								
							 | 
							
								}
							 | 
						
						
						
							| 
								
							 | 
							
								
							 | 
						
						
						
							| 
								
							 | 
							
								static float BounceEaseOut(float t,float b , float c, float d)
							 | 
						
						
						
							| 
								
							 | 
							
								{
							 | 
						
						
						
							| 
								
							 | 
							
									if ((t/=d) < (1/2.75f)) {
							 | 
						
						
						
							| 
								
							 | 
							
										return c*(7.5625f*t*t) + b;
							 | 
						
						
						
							| 
								
							 | 
							
									} else if (t < (2/2.75f)) {
							 | 
						
						
						
							| 
								
							 | 
							
										float postFix = t-=(1.5f/2.75f);
							 | 
						
						
						
							| 
								
							 | 
							
										return c*(7.5625f*(postFix)*t + .75f) + b;
							 | 
						
						
						
							| 
								
							 | 
							
									} else if (t < (2.5/2.75)) {
							 | 
						
						
						
							| 
								
							 | 
							
											float postFix = t-=(2.25f/2.75f);
							 | 
						
						
						
							| 
								
							 | 
							
										return c*(7.5625f*(postFix)*t + .9375f) + b;
							 | 
						
						
						
							| 
								
							 | 
							
									} else {
							 | 
						
						
						
							| 
								
							 | 
							
										float postFix = t-=(2.625f/2.75f);
							 | 
						
						
						
							| 
								
							 | 
							
										return c*(7.5625f*(postFix)*t + .984375f) + b;
							 | 
						
						
						
							| 
								
							 | 
							
									}
							 | 
						
						
						
							| 
								
							 | 
							
								}
							 |