diff --git a/rogueviz/highdim-demo.cpp b/rogueviz/highdim-demo.cpp index df2de4bc..5540bb10 100644 --- a/rogueviz/highdim-demo.cpp +++ b/rogueviz/highdim-demo.cpp @@ -248,6 +248,7 @@ void sync(int mode, flagtype flags) { vid.use_smart_range = 2; crystal::view_coordinates = (flags & VC); smooth_scrolling = true; + tour::slide_backup(game_keys_scroll, true); } if(mode == pmKey && !(flags & NO_VC)) crystal::view_coordinates = !crystal::view_coordinates; @@ -404,6 +405,7 @@ auto explore_structure(int _shapeid) { if(mode == pmStart) { tour::slide_backup(mapeditor::drawplayer, false); tour::slide_backup(smooth_scrolling, true); + tour::slide_backup(game_keys_scroll, true); stop_game(); set_geometry(geometry == gCrystal534 ? gCrystal534 : gCrystal344); enable_canvas(); diff --git a/rogueviz/hypcity.cpp b/rogueviz/hypcity.cpp index 37d4a5cc..dc4ac19f 100644 --- a/rogueviz/hypcity.cpp +++ b/rogueviz/hypcity.cpp @@ -124,10 +124,8 @@ auto hypcity_ah = arg::add3("-hypcity", enable) geom3::switch_fpp(); } setCanvas(mode, '0'); - slide_backup(mapeditor::drawplayer, false); if(mode == pmStart) { slide_backup(canvas_default_wall, waInvisibleFloor); - slide_backup(smooth_scrolling, 1); if(dim == 2) slide_backup(vid.camera, 0); if(dim == 2) slide_backup(vid.depth, 0); slide_backup(context_fog, false); @@ -135,6 +133,7 @@ auto hypcity_ah = arg::add3("-hypcity", enable) start_game(); enable(); } + non_game_slide_scroll(mode); }}); }; diff --git a/rogueviz/intra-demos.cpp b/rogueviz/intra-demos.cpp index 9e0524bf..5fc1e2de 100644 --- a/rogueviz/intra-demos.cpp +++ b/rogueviz/intra-demos.cpp @@ -489,15 +489,12 @@ auto hooks = auto load = [] (string s, ld x, int y) { return [s, x, y] { slide_backup(vid.cells_drawn_limit, 100); - slide_backup(smooth_scrolling, true); slide_backup(ray::max_cells, 999999); slide_backup(walking::on, true); slide_backup(walking::eye_level, x); mapstream::loadMap(s); slide_backup(ray::fixed_map, true); slide_backup(ray::max_iter_intra, y); - slide_backup(mapeditor::drawplayer, false); - slide_backup(playermoved, false); #if CAP_VR slide_backup(vrhr::hsm, vrhr::eHeadset::holonomy); slide_backup(vrhr::eyes, vrhr::eEyes::truesim); @@ -518,6 +515,7 @@ auto hooks = slide_action(mode, 'r', "run this visualization", loader); slidecommand = "portal options"; if(mode == tour::pmKey) pushScreen(intra::show_portals); + rogueviz::pres::non_game_slide_scroll(mode); } }); }; diff --git a/rogueviz/noniso-honeycombs.cpp b/rogueviz/noniso-honeycombs.cpp index b6ec73d5..123595f9 100644 --- a/rogueviz/noniso-honeycombs.cpp +++ b/rogueviz/noniso-honeycombs.cpp @@ -12,8 +12,6 @@ auto geoslide(eGeometry g, char canvas, int jhole, int jblock) { using namespace tour; return [=] (presmode mode) { if(mode == pmStart) { - tour::slide_backup(mapeditor::drawplayer, false); - tour::slide_backup(smooth_scrolling, true); stop_game(); set_geometry(g); if(g == gSphere) { @@ -39,6 +37,7 @@ auto geoslide(eGeometry g, char canvas, int jhole, int jblock) { sightranges[gSol] = 4; } } + rogueviz::pres::non_game_slide_scroll(mode); if(mode == pmStop && jblock < 0) pmodel = mdGeodesic; slidecommand = "switch raycaster"; diff --git a/rogueviz/notknot.cpp b/rogueviz/notknot.cpp index fac3e6ff..025b1bdb 100644 --- a/rogueviz/notknot.cpp +++ b/rogueviz/notknot.cpp @@ -1400,6 +1400,7 @@ void nk_launch() { sightranges[geometry] = .5; ray::max_cells = 600000; smooth_scrolling = 1; + game_keys_scroll = true; camera_speed = 10; // panini_alpha = 1; // fov = 150; @@ -1438,19 +1439,18 @@ void portal_slideshow(tour::ss::slideshow_callback cb) { setCanvas(mode, '0'); if(youtube != "") slide_url(mode, 'y', "YouTube link", youtube); + non_game_slide_scroll(mode); slide_action(mode, 'r', "run", [=] { slide_backup(margin); slide_backup(mapeditor::drawplayer); slide_backup(firstland); slide_backup(specialland); slide_backup(ray::max_cells, 600000); - slide_backup(smooth_scrolling, 1); slide_backup(camera_speed, 10); slide_backup(ray::exp_decay_poly, 30); slide_backup(ray::fixed_map, true); slide_backup(ray::max_iter_iso, 80); slide_backup(vid.cells_drawn_limit, 100); - slide_backup(mapeditor::drawplayer, false); #if CAP_VR slide_backup(vrhr::hsm); slide_backup(vrhr::eyes); diff --git a/rogueviz/playing-with-impossibility.cpp b/rogueviz/playing-with-impossibility.cpp index 65005a3d..2d94969d 100644 --- a/rogueviz/playing-with-impossibility.cpp +++ b/rogueviz/playing-with-impossibility.cpp @@ -819,7 +819,6 @@ slide dmv_slides[] = { ply_slide(mode, gCubeTiling, mdPerspective, false); if(!ply::staircase.available()) return; if(mode == pmStart) { - tour::slide_backup(smooth_scrolling, true); tour::slide_backup(sightranges[geometry], 200); tour::slide_backup(vid.cells_drawn_limit, 200); tour::slide_backup(camera_speed, 5); @@ -831,6 +830,7 @@ slide dmv_slides[] = { // tour::slide_backup(vid.fov, 120); } + non_game_slide_scroll(mode); if(mode == pmKey) { println(hlog, ggmatrix(currentmap->gamestart())); println(hlog, View); @@ -923,12 +923,10 @@ slide dmv_slides[] = { set_geometry(gNil); start_game(); rogueviz::rv_hook(hooks_drawcell, 100, rogueviz::nilcompass::draw_compass); - tour::slide_backup(smooth_scrolling, true); - tour::slide_backup(mapeditor::drawplayer, false); View = Id; shift_view(ztangent(.5)); - playermoved = false; } + non_game_slide_scroll(mode); if(mode == pmStart || mode == pmKey) rogueviz::nilcompass::zeroticks = ticks; } @@ -1205,15 +1203,13 @@ slide dmv_slides[] = { if(mode == pmStart) { stop_game(); set_geometry(gNil); - tour::slide_backup(mapeditor::drawplayer, false); rogueviz::cylon::enable(); - tour::slide_backup(smooth_scrolling, true); tour::on_restore(nilv::set_flags); tour::slide_backup(nilv::nilperiod, make_array(3, 3, 3)); nilv::set_flags(); start_game(); - playermoved = false; } + non_game_slide_scroll(mode); }}, {"3D model (geodesic)", 999, LEGAL::NONE | QUICKGEO, @@ -1263,15 +1259,13 @@ slide dmv_slides[] = { set_geometry(gNil); check_cgi(); cgi.require_shapes(); - tour::slide_backup(mapeditor::drawplayer, false); - tour::slide_backup(smooth_scrolling, true); start_game(); rogueviz::balls::initialize(1); rogueviz::balls::balls.resize(3); pmodel = mdEquidistant; - playermoved = false; View = cspin(1, 2, M_PI/2); } + non_game_slide_scroll(mode); } }, diff --git a/rogueviz/presentation.cpp b/rogueviz/presentation.cpp index 9d71e327..c555af08 100644 --- a/rogueviz/presentation.cpp +++ b/rogueviz/presentation.cpp @@ -87,6 +87,11 @@ void non_game_slide(presmode mode) { no_other_hud(mode); } +void non_game_slide_scroll(presmode mode) { + non_game_slide(mode); + slide_backup(smooth_scrolling, true); + } + void white_screen(presmode mode, color_t col) { if(mode == pmStart) { tour::slide_backup(backcolor, col); diff --git a/rogueviz/qtm.cpp b/rogueviz/qtm.cpp index e435f50d..a3b6d5f0 100644 --- a/rogueviz/qtm.cpp +++ b/rogueviz/qtm.cpp @@ -218,11 +218,11 @@ auto hooks = slide_backup(ray::max_cells, 32768); slide_backup(ray::fixed_map, true); #endif - slide_backup(smooth_scrolling, true); slide_backup(camera_speed, .1); enable(); start_game(); } + rogueviz::pres::non_game_slide_scroll(mode); if(mode == pmKey) edit_stretch(); }}); @@ -245,11 +245,11 @@ auto hooks = slide_backup(ray::fixed_map, true); slide_backup(ray::want_use, 2); #endif - slide_backup(smooth_scrolling, true); slide_backup(camera_speed, .1); enable(); start_game(); } + rogueviz::pres::non_game_slide_scroll(mode); if(mode == pmKey) edit_stretch(); }}); diff --git a/rogueviz/rogueviz.h b/rogueviz/rogueviz.h index 3f3c6c1b..454a40b9 100644 --- a/rogueviz/rogueviz.h +++ b/rogueviz/rogueviz.h @@ -230,6 +230,7 @@ function roguevizslide_action(char c, const T& t, const U& act) void compare_projections(presmode mode, eModel a, eModel b); void no_other_hud(presmode mode); void non_game_slide(presmode mode); + void non_game_slide_scroll(presmode mode); void white_screen(presmode mode, color_t col = 0xFFFFFFFF); void empty_screen(presmode mode, color_t col = 0xFFFFFFFF); void show_picture(presmode mode, string s); diff --git a/rogueviz/snow.cpp b/rogueviz/snow.cpp index f2f83fe0..6751315d 100644 --- a/rogueviz/snow.cpp +++ b/rogueviz/snow.cpp @@ -192,15 +192,13 @@ void snow_slide(vector& v, string title, string desc, reaction_t t) if(mode == pmStart) { stop_game(); - tour::slide_backup(mapeditor::drawplayer, false); tour::slide_backup(snow_lambda, 1); tour::slide_backup(snow_color, 0xC0C0C0FF); tour::slide_backup(snow_intense, true); - tour::slide_backup(smooth_scrolling, true); t(); start_game(); - playermoved = false; } + rogueviz::pres::non_game_slide_scroll(mode); }} ); } diff --git a/rogueviz/triangle.cpp b/rogueviz/triangle.cpp index fac15c65..33311f60 100644 --- a/rogueviz/triangle.cpp +++ b/rogueviz/triangle.cpp @@ -504,10 +504,8 @@ void slide_itri(tour::presmode mode, int id) { if(mode == pmStart) { stop_game(); set_geometry(gNil); - tour::slide_backup(mapeditor::drawplayer, false); tour::slide_backup(on, true); tour::slide_backup(net, id == 2 ? true : false); - tour::slide_backup(smooth_scrolling, true); tour::on_restore(nilv::set_flags); if(id == 0) tour::slide_backup(nilv::nilperiod, make_array(3, 3, 3)); @@ -524,6 +522,7 @@ void slide_itri(tour::presmode mode, int id) { playermoved = false; tour::on_restore(reset); } + rogueviz::pres::non_game_slide_scroll(mode); } string cap = "Impossible architecture in Nil/";