diff --git a/rogueviz/ads/ads-game.cpp b/rogueviz/ads/ads-game.cpp index 91895fac..da9ea750 100644 --- a/rogueviz/ads/ads-game.cpp +++ b/rogueviz/ads/ads-game.cpp @@ -20,7 +20,8 @@ #define CAP_ARCM 0 #define CAP_HISTORY 0 #define CAP_STARTANIM 0 -#include "../hyper.cpp" +#include "../../hyper.cpp" +#include "../presentation.cpp" namespace rogueviz { std::vector cleanup; } @@ -369,15 +370,18 @@ auto shot_hooks = #ifdef RELHELL auto hook1= addHook(hooks_config, 100, [] { - lps_enable(&lps_relhell); + default_settings(); + set_config(); enable_canvas(); if(arg::curphase == 1) conffile = "relhell.ini"; - if(arg::curphase == 3) pushScreen(pick_the_game); + if(arg::curphase == 3) { showstartmenu = false; popScreenAll(); pushScreen(pick_the_game); } }); + +#else +auto hook2 = addHook(hooks_configfile, 300, default_settings); #endif -auto hook2 = addHook(hooks_configfile, 300, default_settings); } } diff --git a/rogueviz/ads/menu.cpp b/rogueviz/ads/menu.cpp index 3b750934..7449d104 100644 --- a/rogueviz/ads/menu.cpp +++ b/rogueviz/ads/menu.cpp @@ -270,6 +270,22 @@ void game_menu() { dialog::display(); } +void pick_the_game(); + +void may_subloop() { + #if RELHELL + mainloop(); + if(tour::on) tour::stop_tour(); + quitmainloop = false; + popScreenAll(); + stop_game(); + set_geometry(gEuclid); + pmodel = mdDisk; + start_game(); + pushScreen(pick_the_game); + #endif + } + void pick_the_game() { cmode = sm::NOSCR; clearMessages(); @@ -280,24 +296,28 @@ void pick_the_game() { dialog::addBreak(200); dialog::addBigItem("anti-de Sitter space", 'a'); - dialog::add_action([] { popScreen(); run_ads_game_std(); add_ads_cleanup(); clearMessages(); }); + dialog::add_action([] { popScreen(); run_ads_game_std(); add_ads_cleanup(); clearMessages(); may_subloop(); }); dialog::addInfo(XLAT("shoot asteroids, mine resources, collect gold")); dialog::addBreak(100); dialog::addBigItem("de Sitter space", 'd'); - dialog::add_action([] { popScreen(); run_ds_game_std(); add_ds_cleanup(); clearMessages(); }); + dialog::add_action([] { popScreen(); run_ds_game_std(); add_ds_cleanup(); clearMessages(); may_subloop(); }); dialog::addInfo(XLAT("avoid energy balls, but do not let the main star run away!")); dialog::addBreak(100); dialog::addBigItem("guided tour", 't'); - dialog::add_action(start_relhell_tour); + dialog::add_action([] { start_relhell_tour(); may_subloop(); }); dialog::addInfo(XLAT("but what exactly are these spaces?")); dialog::addBreak(100); + #if RELHELL + dialog::addBigItem("quit the game", 'q'); + #else dialog::addItem("not now", 'q'); + #endif dialog::add_action([] { quitmainloop = true; }); dialog::display();