diff --git a/rogueviz/ads/ds-game.cpp b/rogueviz/ads/ds-game.cpp index 85f045a6..f9b9277d 100644 --- a/rogueviz/ads/ds-game.cpp +++ b/rogueviz/ads/ds-game.cpp @@ -17,6 +17,8 @@ void set_default_keys(); vector> rocks; +bool disable_ds_gen; + struct rock_generator { ld cshift; @@ -190,10 +192,12 @@ struct rock_generator { } void add_until(ld t) { + if(disable_ds_gen) return; while(cshift < t) add_random(); } void add_rsrc_until(ld t) { + if(disable_ds_gen) return; while(cshift < t) { ld rapidity = rand_range(0, 3); ld step = rand_range(.2, .5); diff --git a/rogueviz/ads/tour.cpp b/rogueviz/ads/tour.cpp index 203af368..c3f12b2d 100644 --- a/rogueviz/ads/tour.cpp +++ b/rogueviz/ads/tour.cpp @@ -126,6 +126,8 @@ slide relhell_tour[] = { "Such effects can be also observed in this slide, although you still need to wait for a long time or move very fast. They will be more pronounced in Relative Hell, and in the later slides.", [] (presmode mode) { setCanvas(mode, &ccolor::plain, [] { + add_ds_cleanup(); + rogueviz::on_cleanup_or_next([] { lps_enable(nullptr); }); ads_game::run_ds_game_std(); const ld sca = 100; tour::slide_backup(ds_simspeed, M_PI / 10 / sca * 5); @@ -149,10 +151,6 @@ slide relhell_tour[] = { rockgen.cshift = 10; }); - if(mode == pmStart) { - add_ds_cleanup(); - rogueviz::on_cleanup_or_next([] { lps_enable(nullptr); }); - } } }, @@ -164,6 +162,8 @@ slide relhell_tour[] = { "the previous slide.", [] (presmode mode) { setCanvas(mode, &ccolor::plain, [] { + rogueviz::on_cleanup_or_next([] { lps_enable(nullptr); }); + add_ds_cleanup(); ads_game::run_ds_game_std(); const ld sca = 100; tour::slide_backup(ds_simspeed, M_PI / 10 / sca * 5); @@ -194,10 +194,6 @@ slide relhell_tour[] = { rockgen.cshift = 10; }); - if(mode == pmStart) { - add_ds_cleanup(); - rogueviz::on_cleanup_or_next([] { lps_enable(nullptr); }); - } } }, @@ -206,6 +202,8 @@ slide relhell_tour[] = { "Try to accelerate, then return to the yellow star. Your clock will be different than the clock of the star.", [] (presmode mode) { setCanvas(mode, &ccolor::plain, [] { + rogueviz::on_cleanup_or_next([] { lps_enable(nullptr); }); + add_ds_cleanup(); ads_game::run_ds_game_std(); const ld sca = 100; tour::slide_backup(ds_simspeed, M_PI / 10 / sca * 5); @@ -215,16 +213,14 @@ slide relhell_tour[] = { tour::slide_backup(pconf.scale, sca); tour::slide_backup(texture_off, true); tour::slide_backup(view_proper_times, true); + tour::slide_backup(time_scale, 0.15); + tour::slide_backup(disable_ds_gen, true); dynamicval fs(future_shown, -10); ds_restart_scaled(); tour::slide_backup(invincibility_pt, HUGE_VAL); rockgen.cshift = 10; }); - if(mode == pmStart) { - add_ds_cleanup(); - rogueviz::on_cleanup_or_next([] { lps_enable(nullptr); }); - } } }, @@ -317,12 +313,10 @@ slide relhell_tour[] = { [] (presmode mode) { setCanvas(mode, &ccolor::plain, [] { - ads_game::run_ds_game_std(); - }); - if(mode == pmStart) { add_ds_cleanup(); rogueviz::on_cleanup_or_next([] { lps_enable(nullptr); }); - } + ads_game::run_ds_game_std(); + }); } }, @@ -385,6 +379,7 @@ slide relhell_tour[] = { [] (presmode mode) { setCanvas(mode, &ccolor::plain, [] { + rogueviz::on_cleanup_or_next([] { lps_enable(nullptr); }); ads_game::run_ads_game_std(); /* disable everything */ tour::slide_backup(pconf.alpha, 1); @@ -433,6 +428,7 @@ slide relhell_tour[] = { [] (presmode mode) { setCanvas(mode, &ccolor::plain, [] { + rogueviz::on_cleanup_or_next([] { lps_enable(nullptr); }); ads_game::run_ads_game_std(); /* disable everything */ tour::slide_backup(pconf.alpha, 0); @@ -462,6 +458,7 @@ slide relhell_tour[] = { [] (presmode mode) { setCanvas(mode, &ccolor::plain, [] { + rogueviz::on_cleanup_or_next([] { lps_enable(nullptr); }); ads_game::run_ads_game_std(); tour::slide_backup(pconf.alpha, 1); rv_hook(hooks_pre_ads_start, 100, [] { @@ -483,6 +480,7 @@ slide relhell_tour[] = { [] (presmode mode) { setCanvas(mode, &ccolor::plain, [] { + rogueviz::on_cleanup_or_next([] { lps_enable(nullptr); }); ads_game::run_ads_game_std(); }); }