xm_player/src/scene/scene.cpp
2025-07-03 14:02:40 -05:00

38 lines
808 B
C++

#include "graphics.hpp"
#include "scene/scene.hpp"
#include "scene/tracker/scene.hpp"
#include "scene/logo/scene.hpp"
#include "scene/emulator/scene.hpp"
namespace scene {
const scene scenes[] = {
[id::tracker] = tracker::scene,
[id::logo] = logo::scene,
[id::emulator] = emulator::scene,
};
const scene * current_scene = nullptr;
void scene_init(int scene_id)
{
current_scene = &scenes[scene_id];
graphics_scene_init(&current_scene->opb_size);
printf("scene init\n");
if (current_scene->init != nullptr) {
printf("current_scene init\n");
current_scene->init();
}
}
void transition()
{
assert(current_scene->done != nullptr);
int scene_id = current_scene->done();
if (scene_id >= 0) {
scene_init(scene_id);
}
}
}