mirror of
https://github.com/zenorogue/hyperrogue.git
synced 2024-11-23 21:07:17 +00:00
rogueviz:: added URLs to various visualizations
This commit is contained in:
parent
604083cb0e
commit
a86fb6cd4d
@ -569,6 +569,8 @@ auto hook = addHook(hooks_args, 100, readArgs)
|
||||
|
||||
[] (presmode mode) {
|
||||
slidecommand = "Banach-Tarski switch";
|
||||
slide_url(mode, 't', "Twitter link", "https://twitter.com/ZenoRogue/status/1001127253747658752");
|
||||
|
||||
if(mode == 3) {
|
||||
while(gamestack::pushed()) stop_game(), gamestack::pop();
|
||||
banachtarski::bmap = false;
|
||||
|
@ -350,7 +350,7 @@ int ah = addHook(hooks_args, 100, readArgs) +
|
||||
gmatrix0 = gmatrix;
|
||||
|
||||
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) {}
|
||||
});
|
||||
|
||||
auto add = [&] (string s, string lev, string text) {
|
||||
auto add = [&] (string s, string lev, string text, string youtube = "") {
|
||||
fifteen_slides.emplace_back(
|
||||
tour::slide{s, 100, LEGAL::NONE | QUICKGEO, text,
|
||||
[=] (presmode mode) {
|
||||
if(youtube != "")
|
||||
slide_url(mode, 'y', "YouTube link", youtube);
|
||||
string fname = "fifteen/" + lev + ".lev";
|
||||
if(!file_exists(fname)) {
|
||||
slide_error(mode, "file " + fname + " not found");
|
||||
@ -376,9 +378,9 @@ auto fifteen_hook =
|
||||
};
|
||||
|
||||
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("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("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.",
|
||||
|
||||
[] (tour::presmode mode) {
|
||||
slide_url(mode, 'p', "a paper about Grigorchuk group", "https://arxiv.org/pdf/math/0607384.pdf");
|
||||
if(mode == pmStart) {
|
||||
grigorchuk::grig_limit = 10000;
|
||||
gamestack::push();
|
||||
|
@ -109,12 +109,12 @@ auto hypcity_ah = arg::add3("-hypcity", enable)
|
||||
hypcity_slides.emplace_back(
|
||||
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"
|
||||
"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')!"
|
||||
,
|
||||
[] (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) {
|
||||
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",
|
||||
|
||||
[] (presmode mode) {
|
||||
slide_url(mode, 'y', "YouTube link", "https://youtu.be/3WejR74o6II");
|
||||
setCanvas(mode, '0');
|
||||
|
||||
slidecommand = "animation";
|
||||
|
@ -155,6 +155,7 @@ tour::slide *gen_noniso_demo() {
|
||||
slide{"Non-isotropic geometry demo", 999, LEGAL::NONE | QUICKSKIP,
|
||||
"This is a presentation of non-isotropic geometries.",
|
||||
[] (presmode mode) {
|
||||
slide_url(mode, 'p', "paper about non-isotropic geometries", "https://arxiv.org/abs/2002.09533");
|
||||
if(mode == pmStart) {
|
||||
stop_game();
|
||||
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"
|
||||
,
|
||||
[] (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');
|
||||
using namespace tour;
|
||||
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."
|
||||
,
|
||||
[] (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);
|
||||
if(!ply::staircase.available()) return;
|
||||
if(mode == pmStart) {
|
||||
@ -1004,6 +1005,7 @@ slide dmv_slides[] = {
|
||||
"(the animation is not included with RogueViz)"
|
||||
,
|
||||
[] (presmode mode) {
|
||||
slide_url(mode, 'i', "Instagram link", "https://www.instagram.com/p/B756GCynErw/");
|
||||
empty_screen(mode);
|
||||
// show_picture(mode, "rogueviz/nil/emty-ring.png");
|
||||
// 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."
|
||||
,
|
||||
[] (presmode mode) {
|
||||
slide_url(mode, 'y', "YouTube link", "https://www.youtube.com/watch?v=DurXAhFrmkE");
|
||||
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!"
|
||||
,
|
||||
[] (presmode mode) {
|
||||
slide_url(mode, 'y', "YouTube link", "https://www.youtube.com/watch?v=mxvUAcgN3go");
|
||||
setCanvas(mode, '0');
|
||||
if(mode == pmStart) {
|
||||
stop_game();
|
||||
|
@ -323,7 +323,10 @@ slide *gen_rvtour_mixed() {
|
||||
rvslides_mixed.emplace_back(slide{
|
||||
"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.",
|
||||
[] (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);
|
||||
|
@ -215,7 +215,9 @@ auto msc =
|
||||
"Here we see random walk in various geometries.\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.", [] {
|
||||
set_geometry(gEuclid);
|
||||
|
@ -143,8 +143,9 @@ namespace rogueviz {
|
||||
inline hookset<void(string, vector<slide>&)> hooks_build_rvtour;
|
||||
slide *gen_rvtour();
|
||||
|
||||
template<class T> function<void(presmode)> roguevizslide(char c, const T& t) {
|
||||
return [c,t] (presmode mode) {
|
||||
template<class T, class U> function<void(presmode)> roguevizslide(char c, const T& t, const U& f = [] (presmode mode) {}) {
|
||||
return [c,t,f] (presmode mode) {
|
||||
f(mode);
|
||||
patterns::canvasback = 0x101010;
|
||||
setCanvas(mode, c);
|
||||
if(mode == 1 || mode == pmGeometryStart) t();
|
||||
|
@ -242,7 +242,10 @@ auto hchook = addHook(hooks_drawcell, 100, draw_snow)
|
||||
"\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."
|
||||
,
|
||||
[] (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.", [] {
|
||||
set_geometry(gCubeTiling);
|
||||
|
@ -250,6 +250,7 @@ int phooks = arg::add3("-stair", enable)
|
||||
if(mode == pmStart) staircase::make_staircase();
|
||||
slidecommand = "staircase menu";
|
||||
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.",
|
||||
|
||||
[] (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');
|
||||
|
||||
if((mode == pmStop || mode == pmGeometry) && rug::rugged) rug::close();
|
||||
|
Loading…
Reference in New Issue
Block a user