diff --git a/demo/demo/main.cpp b/demo/demo/main.cpp index 03c32ba1789c27992272681037388578fc1e8dfe..e1802a3a01be8697f1797e18fe37ee74ccfc93ef 100644 --- a/demo/demo/main.cpp +++ b/demo/demo/main.cpp @@ -41,18 +41,39 @@ #include "GameScene.h" #include "rollball.hpp" +static void setup_menu(fggl::App& app) { + auto *menu = app.add_state<fggl::scenes::BasicMenu>("menu"); + + // add some menu items for the game states + menu->add("terrain", [&app]() { + auto* audio = app.service<fggl::audio::AudioService>(); + audio->play("click.ogg", false); + app.change_state("game"); + }); + + menu->add("rollball", [&app]() { + auto* audio = app.service<fggl::audio::AudioService>(); + audio->play("click.ogg", false); + app.change_state("rollball"); + }); + + menu->add("quit", [&app]() { + auto* audio = app.service<fggl::audio::AudioService>(); + audio->play("click.ogg", false); + app.running(false); + }); +} + int main(int argc, const char* argv[]) { // DAG initialisation test fggl::modules::Manager moduleManager; moduleManager.use<fggl::input::Generic>(); moduleManager.use<fggl::data::LocalStorage>(); - moduleManager.use<fggl::audio::NullAudio>(); moduleManager.use<fggl::gui::FreeType>(); - + moduleManager.use<fggl::audio::OpenAL>(); moduleManager.use<fggl::gfx::OpenGL4>(); moduleManager.use<fggl::display::GLFW>(); - moduleManager.resolve(); // create the application @@ -73,27 +94,8 @@ int main(int argc, const char* argv[]) { app.use<FGGL_MODULE_BULLET>(); #endif - // Add a basic main menu - auto *menu = app.add_state<fggl::scenes::BasicMenu>("menu"); - - // add some menu items for the game states - auto* audio = app.service<fggl::audio::AudioService>(); - menu->add("terrain", [&app, &audio]() { - audio->play("click.ogg", false); - app.change_state("game"); - }); - - menu->add("rollball", [&app, &audio]() { - audio->play("click.ogg", false); - app.change_state("rollball"); - }); - - menu->add("quit", [&app, &audio]() { - audio->play("click.ogg", false); - app.running(false); - }); - - // the game states themselves + // our test states + setup_menu(app); app.add_state<GameScene>("game"); app.add_state<demo::RollBall>("rollball");