#ifndef SCENE_H
#define SCENE_H

#include "common.h"

#define MAX_SPLASH_SPEED 10

typedef enum scene_e
{
    SCENE_NONE    = 0,
    SCENE_INTRO   = 1,
    SCENE_MENU    = 2,
    SCENE_OPTIONS = 3,
    SCENE_GAME    = 4,
    SCENE_END     = 5
} scene_t;

extern void Scene_Set(scene_t scene);
extern void Scene_Splash_Run(bool out, int speed, rgba_t clear_color);
extern bool Scene_Splash_IsFinish(void);
extern void Scene_Splash_Stop(void); // тормозим сплэш вручную, костыль, чтобы небыло мерцаний между переключением сцен :(
extern void Scene_Update(float dt);
extern void Scene_Draw(SDL_Renderer *renderer);

extern void Scene_Intro_Init(void);
extern void Scene_Intro_Update(float dt);
extern void Scene_Intro_Draw(SDL_Renderer *renderer);
extern void Scene_Intro_Free(void);

extern void Scene_Menu_Init(void);
extern void Scene_Menu_Update(float dt);
extern void Scene_Menu_Draw(SDL_Renderer *renderer);
extern void Scene_Menu_Free(void);

extern void Scene_Options_Init(void);
extern void Scene_Options_Update(float dt);
extern void Scene_Options_Draw(SDL_Renderer *renderer);
extern void Scene_Options_Free(void);

extern bool Scene_Game_IsPause(void);
extern void Scene_Game_Pause(void);
extern void Scene_Game_Play(void);
extern void Scene_Game_SetLevel(int level);
extern int  Scene_Game_GetLevel(void);
extern void Scene_Game_NextLevel(void);
extern void Scene_Game_Init(void);
extern void Scene_Game_Update(float dt);
extern void Scene_Game_Draw(SDL_Renderer *renderer);
extern void Scene_Game_Free(void);

extern void Scene_End_Init(void);
extern void Scene_End_Update(float dt);
extern void Scene_End_Draw(SDL_Renderer *renderer);
extern void Scene_End_Free(void);

#endif
