Add ControllerTest Overlay and support not loading new state if previous loaded

This commit is contained in:
2024-01-03 20:38:43 -06:00
parent 9564768295
commit 493765adbb
8 changed files with 57 additions and 21 deletions

View File

@@ -26,11 +26,13 @@ struct StateChange {
bool contains_state() const {
return this->main;
}
auto operator<=>(const StateChange&) const = default;
};
static const Menu::SimpleMenu::Entry MenuEntries[] = {
{"Menu 1"},
{"Menu 2"},
{"Controller Test"},
{"GPU Test"},
{"Menu 3"},
{"Menu 4"},
{"Menu 5"}
@@ -41,14 +43,24 @@ static const Menu::SimpleMenu::Entry MenuEntries[] = {
static object::Paco paco;
static Menu::SimpleMenu menu;
static StateChange state_changer;
static StateChange old_state_changer;
static void setup() {
Assets::Main::load();
FontWriter::setup();
paco.setup();
menu.setup([](uint32_t selection) {
state_changer.asset_load = Assets::Overlay::load_gpu_test;
state_changer.main = GPUTest::main;
switch(selection) {
case 0:
state_changer.asset_load = Assets::Overlay::load_controller_test;
state_changer.main = ControllerTest::main;
break;
case 1:
state_changer.asset_load = Assets::Overlay::load_gpu_test;
state_changer.main = GPUTest::main;
break;
}
},MenuEntries);
}
@@ -92,18 +104,19 @@ namespace LoadingScene {
}
static void run() {
update();
GPU::swap_buffers_vsync(1);
render();
GPU::swap_buffers_vsync(1);
if(old_state_changer != state_changer) {
printf("Loading new state...\n");
update();
GPU::swap_buffers_vsync(1);
render();
GPU::swap_buffers_vsync(1);
old_state_changer = state_changer;
}
printf("End of execution!\n");
state_changer.asset_load();
state_changer.main();
printf("Done in state!\n");
while(true);
state_changer.clear();
}
}