#pragma once

#include <charcoal/Application.h>
#include <charcoal/Scene.h>

#include "MyBasicScene.h"
#include "MySimple2DScene.h"
#include "MySimple3DScene.h"
#include "MySimpleCubeScene.h"
#include "MyBuiltinCubeScene.h"
#include "MyBuiltinTexturedScene.h"
#include "MyBuiltinLitScene.h"
#include "MyPongScene.h"
#include "MyTextTestScene.h"

using namespace charcoal;

class MyApplication : public Application
{
public:
	MyApplication(int width = -1, int height = -1);

protected:
	void init() override;

	void update(float delta_time, clock_t clock) override;

	void prerender() override;

	void render() override;

	void close() override;

private:
	void swap_scene(Scene* scene);

	Scene* m_p_current_scene = nullptr;
	MyBasicScene m_basic_scene;
	MySimple2DScene m_simple_2d_scene;
	MySimple3DScene m_simple_3d_scene;
	MySimpleCubeScene m_simple_cube_scene;
	MyBuiltinCubeScene m_builtin_basic_cube_scene;
	MyBuiltinTexturedScene m_builtin_textured_scene;
	MyBuiltinLitScene m_builtin_lit_scene;
	MyPongScene m_pong_scene;
	MyTextTestScene m_text_test_scene;
};