mirror of
				https://github.com/zenorogue/hyperrogue.git
				synced 2025-10-31 05:52:59 +00:00 
			
		
		
		
	rogueviz:: added URLs to various visualizations
This commit is contained in:
		| @@ -569,6 +569,8 @@ auto hook = addHook(hooks_args, 100, readArgs) | |||||||
|       |       | ||||||
|     [] (presmode mode) { |     [] (presmode mode) { | ||||||
|       slidecommand = "Banach-Tarski switch"; |       slidecommand = "Banach-Tarski switch"; | ||||||
|  |       slide_url(mode, 't', "Twitter link", "https://twitter.com/ZenoRogue/status/1001127253747658752"); | ||||||
|  |  | ||||||
|       if(mode == 3) { |       if(mode == 3) { | ||||||
|         while(gamestack::pushed()) stop_game(), gamestack::pop(); |         while(gamestack::pushed()) stop_game(), gamestack::pop(); | ||||||
|         banachtarski::bmap = false; |         banachtarski::bmap = false; | ||||||
|   | |||||||
| @@ -350,7 +350,7 @@ int ah = addHook(hooks_args, 100, readArgs) + | |||||||
|       gmatrix0 = gmatrix; |       gmatrix0 = gmatrix; | ||||||
|  |  | ||||||
|       rogueviz::collatz::start(); |       rogueviz::collatz::start(); | ||||||
|       }) |       }, [] (presmode m) { slide_url(m, 'y', "YouTube link", "https://www.youtube.com/watch?v=NqPUwA_A0_k"); }) | ||||||
|     }); |     }); | ||||||
|     }); |     }); | ||||||
|    |    | ||||||
|   | |||||||
| @@ -350,10 +350,12 @@ auto fifteen_hook = | |||||||
|           [] (presmode mode) {} |           [] (presmode mode) {} | ||||||
|           }); |           }); | ||||||
|        |        | ||||||
|       auto add = [&] (string s, string lev, string text) { |       auto add = [&] (string s, string lev, string text, string youtube = "") { | ||||||
|         fifteen_slides.emplace_back( |         fifteen_slides.emplace_back( | ||||||
|           tour::slide{s, 100, LEGAL::NONE | QUICKGEO, text, |           tour::slide{s, 100, LEGAL::NONE | QUICKGEO, text, | ||||||
|             [=] (presmode mode) { |             [=] (presmode mode) { | ||||||
|  |               if(youtube != "") | ||||||
|  |                 slide_url(mode, 'y', "YouTube link", youtube); | ||||||
|               string fname = "fifteen/" + lev + ".lev"; |               string fname = "fifteen/" + lev + ".lev"; | ||||||
|               if(!file_exists(fname)) { |               if(!file_exists(fname)) { | ||||||
|                 slide_error(mode, "file " + fname + " not found"); |                 slide_error(mode, "file " + fname + " not found"); | ||||||
| @@ -376,9 +378,9 @@ auto fifteen_hook = | |||||||
|         }; |         }; | ||||||
|        |        | ||||||
|       add("15", "classic", "The original Fifteen puzzle."); |       add("15", "classic", "The original Fifteen puzzle."); | ||||||
|       add("15+4", "fifteen", "The 15+4 puzzle by Henry Segerman."); |       add("15+4", "fifteen", "The 15+4 puzzle by Henry Segerman.", "https://www.youtube.com/watch?v=Hc3yfuXiWe0"); | ||||||
|       add("15-4", "sphere11", "The 15-4 puzzle."); |       add("15-4", "sphere11", "The 15-4 puzzle."); | ||||||
|       add("coiled", "coiled", "Coiled fifteen puzzle by Henry Segerman."); |       add("coiled", "coiled", "Coiled fifteen puzzle by Henry Segerman.", "https://www.youtube.com/watch?v=rfAEgxNEOrQ"); | ||||||
|       add("Möbius band", "mobiusband", "Fifteen puzzle on a Möbius band."); |       add("Möbius band", "mobiusband", "Fifteen puzzle on a Möbius band."); | ||||||
|       add("Kite-and-dart", "kitedart", "Kite-and-dart puzzle."); |       add("Kite-and-dart", "kitedart", "Kite-and-dart puzzle."); | ||||||
|        |        | ||||||
|   | |||||||
| @@ -513,6 +513,7 @@ auto hook = addHook(hooks_args, 100, readArgsG) | |||||||
|       "See grigorchuk.cpp for more comments.", |       "See grigorchuk.cpp for more comments.", | ||||||
|  |  | ||||||
|       [] (tour::presmode mode) { |       [] (tour::presmode mode) { | ||||||
|  |         slide_url(mode, 'p', "a paper about Grigorchuk group", "https://arxiv.org/pdf/math/0607384.pdf"); | ||||||
|         if(mode == pmStart) { |         if(mode == pmStart) { | ||||||
|           grigorchuk::grig_limit = 10000; |           grigorchuk::grig_limit = 10000; | ||||||
|           gamestack::push(); |           gamestack::push(); | ||||||
|   | |||||||
| @@ -109,12 +109,12 @@ auto hypcity_ah = arg::add3("-hypcity", enable) | |||||||
|       hypcity_slides.emplace_back( |       hypcity_slides.emplace_back( | ||||||
|         slide{"Introduction", 999, LEGAL::NONE,  |         slide{"Introduction", 999, LEGAL::NONE,  | ||||||
|           "Here we put a 3D model of a city into various geometries. Don't forget to try changing RogueViz projection and view range settings!\n\n" |           "Here we put a 3D model of a city into various geometries. Don't forget to try changing RogueViz projection and view range settings!\n\n" | ||||||
|           "Model by Emile Johansson, downloaded from: https://sketchfab.com/3d-models/night-city-p2-82637933a7cb4fafadb0e2a79415c438\n\n" |  | ||||||
|           "Thanks to Nico Belmonte for the idea of using this model.\n\n" |  | ||||||
|           "Remember to try different projections (press '1')!" |           "Remember to try different projections (press '1')!" | ||||||
|           , |           , | ||||||
|           [] (presmode mode) {} |           [] (presmode mode) { | ||||||
|           }); |           slide_url(mode, 'm', "original model by Emile Johansson", "https://sketchfab.com/3d-models/night-city-p2-82637933a7cb4fafadb0e2a79415c438"); | ||||||
|  |           slide_url(mode, 't', "original Tweets by Nico Belmonte", "https://twitter.com/philogb/status/1375147728389476356"); | ||||||
|  |           }}); | ||||||
|        |        | ||||||
|       auto add = [&] (string s, string text, int dim, reaction_t setter) { |       auto add = [&] (string s, string text, int dim, reaction_t setter) { | ||||||
|         hypcity_slides.emplace_back( |         hypcity_slides.emplace_back( | ||||||
|   | |||||||
| @@ -284,6 +284,7 @@ auto hchook = | |||||||
|       "Move with mouse/arrows/PgUpDn. Press '5' to enable animation, 'o' to change ring size.\n\n", |       "Move with mouse/arrows/PgUpDn. Press '5' to enable animation, 'o' to change ring size.\n\n", | ||||||
|     |     | ||||||
|   [] (presmode mode) { |   [] (presmode mode) { | ||||||
|  |     slide_url(mode, 'y', "YouTube link", "https://youtu.be/3WejR74o6II"); | ||||||
|     setCanvas(mode, '0'); |     setCanvas(mode, '0'); | ||||||
|      |      | ||||||
|     slidecommand = "animation"; |     slidecommand = "animation"; | ||||||
|   | |||||||
| @@ -155,6 +155,7 @@ tour::slide *gen_noniso_demo() { | |||||||
|     slide{"Non-isotropic geometry demo", 999, LEGAL::NONE | QUICKSKIP,  |     slide{"Non-isotropic geometry demo", 999, LEGAL::NONE | QUICKSKIP,  | ||||||
|       "This is a presentation of non-isotropic geometries.", |       "This is a presentation of non-isotropic geometries.", | ||||||
|       [] (presmode mode) { |       [] (presmode mode) { | ||||||
|  |         slide_url(mode, 'p', "paper about non-isotropic geometries", "https://arxiv.org/abs/2002.09533"); | ||||||
|         if(mode == pmStart) { |         if(mode == pmStart) { | ||||||
|           stop_game(); |           stop_game(); | ||||||
|           set_geometry(gCubeTiling);           |           set_geometry(gCubeTiling);           | ||||||
|   | |||||||
| @@ -1489,6 +1489,11 @@ auto shot_hooks = addHook(hooks_initialize, 100, create_notknot) | |||||||
|         "Some experiments with weird portals. Press '5' to change between available experiments.\n" |         "Some experiments with weird portals. Press '5' to change between available experiments.\n" | ||||||
|         , |         , | ||||||
|         [] (tour::presmode mode) { |         [] (tour::presmode mode) { | ||||||
|  |           slide_url(mode, 'k', "knotted portal (YouTube)", "https://www.youtube.com/watch?v=eb2DhCcGH7U"); | ||||||
|  |           slide_url(mode, 'h', "self-hiding knot portal (YouTube)", "https://www.youtube.com/watch?v=vFLZ2NGtuGw"); | ||||||
|  |           slide_url(mode, 'n', "non-Euclidean portal in Nil (YouTube)", "https://www.youtube.com/watch?v=2K-v8tK68AE"); | ||||||
|  |           slide_url(mode, 's', "spherical portal (YouTube)", "https://www.youtube.com/watch?v=PerPeQFu5gw"); | ||||||
|  |           slide_url(mode, 'c', "Cat Portal in Solv (YouTube)", "https://www.youtube.com/watch?v=CGiSxC9B6i0"); | ||||||
|           setCanvas(mode, '0'); |           setCanvas(mode, '0'); | ||||||
|           using namespace tour; |           using namespace tour; | ||||||
|           if(mode == pmStart) { |           if(mode == pmStart) { | ||||||
|   | |||||||
| @@ -686,6 +686,7 @@ slide dmv_slides[] = { | |||||||
|     "This is a 3D model of Ascending and Descending by Lucian B. It is based on an optical illusion." |     "This is a 3D model of Ascending and Descending by Lucian B. It is based on an optical illusion." | ||||||
|     , |     , | ||||||
|     [] (presmode mode) { |     [] (presmode mode) { | ||||||
|  |       slide_url(mode, 'm', "link to the original model", "https://3dwarehouse.sketchup.com/model/3e6df6c24a95f583cefabc2ae69d584c/MC-Escher-Ascending-and-Descending"); | ||||||
|       ply_slide(mode, gCubeTiling, mdPerspective, false); |       ply_slide(mode, gCubeTiling, mdPerspective, false); | ||||||
|       if(!ply::staircase.available()) return; |       if(!ply::staircase.available()) return; | ||||||
|       if(mode == pmStart) { |       if(mode == pmStart) { | ||||||
| @@ -1004,6 +1005,7 @@ slide dmv_slides[] = { | |||||||
|     "(the animation is not included with RogueViz)" |     "(the animation is not included with RogueViz)" | ||||||
|     , |     , | ||||||
|     [] (presmode mode) { |     [] (presmode mode) { | ||||||
|  |       slide_url(mode, 'i', "Instagram link", "https://www.instagram.com/p/B756GCynErw/"); | ||||||
|       empty_screen(mode); |       empty_screen(mode); | ||||||
|       // show_picture(mode, "rogueviz/nil/emty-ring.png"); |       // show_picture(mode, "rogueviz/nil/emty-ring.png"); | ||||||
|       // show_animation(mode, "rogueviz/nil/emty-ring.mp4", 720, 900, 300, 30); |       // show_animation(mode, "rogueviz/nil/emty-ring.mp4", 720, 900, 300, 30); | ||||||
| @@ -1050,6 +1052,7 @@ slide dmv_slides[] = { | |||||||
|     "We have used the trick mentioned before to move into the Nil space. Here are the results." |     "We have used the trick mentioned before to move into the Nil space. Here are the results." | ||||||
|     , |     , | ||||||
|     [] (presmode mode) { |     [] (presmode mode) { | ||||||
|  |       slide_url(mode, 'y', "YouTube link", "https://www.youtube.com/watch?v=DurXAhFrmkE"); | ||||||
|       ply_slide(mode, gNil, mdGeodesic, true); |       ply_slide(mode, gNil, mdGeodesic, true); | ||||||
|       } |       } | ||||||
|     }, |     }, | ||||||
| @@ -1082,6 +1085,7 @@ slide dmv_slides[] = { | |||||||
|     "A perpetuum mobile in Nil as the final slide. That's all for today!" |     "A perpetuum mobile in Nil as the final slide. That's all for today!" | ||||||
|     , |     , | ||||||
|     [] (presmode mode) { |     [] (presmode mode) { | ||||||
|  |       slide_url(mode, 'y', "YouTube link", "https://www.youtube.com/watch?v=mxvUAcgN3go"); | ||||||
|       setCanvas(mode, '0'); |       setCanvas(mode, '0'); | ||||||
|       if(mode == pmStart) { |       if(mode == pmStart) { | ||||||
|         stop_game(); |         stop_game(); | ||||||
|   | |||||||
| @@ -323,7 +323,10 @@ slide *gen_rvtour_mixed() { | |||||||
|   rvslides_mixed.emplace_back(slide{ |   rvslides_mixed.emplace_back(slide{ | ||||||
|     "RogueViz", 999, LEGAL::ANY, |     "RogueViz", 999, LEGAL::ANY, | ||||||
|     "This presentation is mostly composed from various unsorted demos, mostly posted on Twitter and YouTube. Press Enter to continue, ESC to look at other functions of this presentation.", |     "This presentation is mostly composed from various unsorted demos, mostly posted on Twitter and YouTube. Press Enter to continue, ESC to look at other functions of this presentation.", | ||||||
|     [] (presmode mode) {} |     [] (presmode mode) { | ||||||
|  |       slide_url(mode, 'y', "YouTube link", "https://www.youtube.com/user/ZenoTheRogue"); | ||||||
|  |       slide_url(mode, 't', "Twitter link", "https://twitter.com/zenorogue/"); | ||||||
|  |       } | ||||||
|     }); |     }); | ||||||
|    |    | ||||||
|   callhooks(hooks_build_rvtour, "mixed", rvslides_mixed);  |   callhooks(hooks_build_rvtour, "mixed", rvslides_mixed);  | ||||||
|   | |||||||
| @@ -215,7 +215,9 @@ auto msc = | |||||||
|     "Here we see random walk in various geometries.\n" |     "Here we see random walk in various geometries.\n" | ||||||
|     "Press '5' to reset.\n" |     "Press '5' to reset.\n" | ||||||
|     , |     , | ||||||
|     [] (tour::presmode mode) {} |     [] (tour::presmode mode) { | ||||||
|  |       slide_url(mode, 'y', "YouTube link", "https://www.youtube.com/watch?v=sXNI_i6QZZY"); | ||||||
|  |       } | ||||||
|     }); |     }); | ||||||
|   rw_slide(v, "Euclidean plane", "In Euclidean plane, the random walk always returns to the neighborhood of the starting point with probability 1.", [] { |   rw_slide(v, "Euclidean plane", "In Euclidean plane, the random walk always returns to the neighborhood of the starting point with probability 1.", [] { | ||||||
|     set_geometry(gEuclid); |     set_geometry(gEuclid); | ||||||
|   | |||||||
| @@ -143,8 +143,9 @@ namespace rogueviz { | |||||||
|     inline hookset<void(string, vector<slide>&)> hooks_build_rvtour; |     inline hookset<void(string, vector<slide>&)> hooks_build_rvtour; | ||||||
|     slide *gen_rvtour(); |     slide *gen_rvtour(); | ||||||
|  |  | ||||||
| template<class T> function<void(presmode)> roguevizslide(char c, const T& t) { | template<class T, class U> function<void(presmode)> roguevizslide(char c, const T& t, const U& f = [] (presmode mode) {}) { | ||||||
|   return [c,t] (presmode mode) { |   return [c,t,f] (presmode mode) { | ||||||
|  |     f(mode); | ||||||
|     patterns::canvasback = 0x101010; |     patterns::canvasback = 0x101010; | ||||||
|     setCanvas(mode, c); |     setCanvas(mode, c); | ||||||
|     if(mode == 1 || mode == pmGeometryStart) t(); |     if(mode == 1 || mode == pmGeometryStart) t(); | ||||||
|   | |||||||
| @@ -242,7 +242,10 @@ auto hchook = addHook(hooks_drawcell, 100, draw_snow) | |||||||
|     "\n\n" |     "\n\n" | ||||||
|     "You can use mouse to look in different directions. Press 5 to turn the automatic movement on or off. Press 'o' to change density and shape." |     "You can use mouse to look in different directions. Press 5 to turn the automatic movement on or off. Press 'o' to change density and shape." | ||||||
|     , |     , | ||||||
|     [] (tour::presmode mode) {} |     [] (tour::presmode mode) { | ||||||
|  |       slide_url(mode, 'y', "YouTube link", "https://www.youtube.com/watch?v=leuleS9SpiA"); | ||||||
|  |       slide_url(mode, 't', "Twitter link", "https://twitter.com/ZenoRogue/status/1245367263936512001"); | ||||||
|  |       } | ||||||
|     }); |     }); | ||||||
|   snow_slide(v, "Euclidean geometry", "This is the Euclidean space. Looks a bit like space flight in some old video games.", [] { |   snow_slide(v, "Euclidean geometry", "This is the Euclidean space. Looks a bit like space flight in some old video games.", [] { | ||||||
|     set_geometry(gCubeTiling); |     set_geometry(gCubeTiling); | ||||||
|   | |||||||
| @@ -250,6 +250,7 @@ int phooks = arg::add3("-stair", enable) | |||||||
|       if(mode == pmStart) staircase::make_staircase(); |       if(mode == pmStart) staircase::make_staircase(); | ||||||
|       slidecommand = "staircase menu"; |       slidecommand = "staircase menu"; | ||||||
|       if(mode == pmKey) pushScreen(staircase::showMenu); |       if(mode == pmKey) pushScreen(staircase::showMenu); | ||||||
|  |       slide_url(mode, 'y', "YouTube link", "https://www.youtube.com/watch?v=HZNRo6mr5pk"); | ||||||
|       }} |       }} | ||||||
|       ); |       ); | ||||||
|     }) |     }) | ||||||
|   | |||||||
| @@ -288,6 +288,8 @@ auto hook = 0 | |||||||
|       "Press o to change the density.", |       "Press o to change the density.", | ||||||
|     |     | ||||||
|   [] (presmode mode) { |   [] (presmode mode) { | ||||||
|  |     slide_url(mode, 'y', "YouTube link", "https://www.youtube.com/watch?v=bKzibaNqEog"); | ||||||
|  |     slide_url(mode, 't', "Twitter link", "https://twitter.com/ZenoRogue/status/1247900522905886723"); | ||||||
|     setCanvas(mode, '0'); |     setCanvas(mode, '0'); | ||||||
|      |      | ||||||
|     if((mode == pmStop || mode == pmGeometry) && rug::rugged) rug::close(); |     if((mode == pmStop || mode == pmGeometry) && rug::rugged) rug::close(); | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user
	 Zeno Rogue
					Zeno Rogue