Add app:scene_manager interface

This commit is contained in:
Nikita Lisitsa 2021-07-02 11:35:08 +03:00
parent 3e38bb2672
commit 585fff7683
2 changed files with 23 additions and 3 deletions

View file

@ -1,6 +1,7 @@
#pragma once
#include <psemek/app/scene.hpp>
#include <psemek/app/scene_manager.hpp>
#include <psemek/util/pimpl.hpp>
@ -12,7 +13,7 @@ namespace psemek::app
{
struct app
: scene_base
: scene_base, scene_manager
{
struct options
{
@ -36,8 +37,8 @@ namespace psemek::app
void poll_events();
void run();
void push_scene(std::unique_ptr<scene> s);
std::unique_ptr<scene> pop_scene();
void push_scene(std::unique_ptr<scene> s) override;
std::unique_ptr<scene> pop_scene() override;
void show_cursor(bool show);
void vsync(bool on);

View file

@ -0,0 +1,19 @@
#pragma once
#include <psemek/app/scene.hpp>
#include <memory>
namespace psemek::app
{
struct scene_manager
{
virtual void push_scene(std::unique_ptr<scene>) = 0;
virtual std::unique_ptr<scene> pop_scene() = 0;
virtual ~scene_manager() {}
};
}