1
0
mirror of https://github.com/zenorogue/hyperrogue.git synced 2024-11-27 14:37:16 +00:00

rogueviz::snow:: o-key menu

This commit is contained in:
Zeno Rogue 2020-04-07 17:16:03 +02:00
parent 58510299de
commit 357117ce35

View File

@ -18,6 +18,8 @@
namespace rogueviz {
namespace snow {
ld snow_lambda = 0;
color_t snow_color = 0xFFFFFFFF;
@ -146,19 +148,16 @@ void snow_slide(vector<tour::slide>& v, string title, string desc, reaction_t t)
tour::slide{cap + title, 18, LEGAL::NONE | QUICKGEO, desc,
[t] (presmode mode) {
println(hlog, "mode=", mode, " land = ", dnameof(firstland));
setCanvas(mode, '0');
if(mode == pmKey) {
using namespace anims;
println(hlog, "key pressed");
tour::slide_backup(ma, ma == maTranslation ? maNone : maTranslation);
tour::slide_backup<ld>(shift_angle, 0);
tour::slide_backup<ld>(movement_angle, 90);
}
if(mode == pmStart) {
println(hlog, "im pmStart, mode=", mode, " land = ", dnameof(firstland));
stop_game();
tour::slide_backup(mapeditor::drawplayer, false);
tour::slide_backup<ld>(snow_lambda, 1);
@ -167,18 +166,45 @@ void snow_slide(vector<tour::slide>& v, string title, string desc, reaction_t t)
t();
start_game();
playermoved = false;
println(hlog, "in pmStart II, mode=", mode, " land = ", dnameof(firstland));
}
}}
);
}
void show() {
cmode = sm::SIDE | sm::MAYDARK;
gamescreen(0);
dialog::init(XLAT("snowballs"), 0xFFFFFFFF, 150, 0);
dialog::addSelItem("lambda", fts(snow_lambda), 'l');
dialog::add_action([]() {
dialog::editNumber(snow_lambda, 0, 100, 1, 10, "lambda", "snowball density");
dialog::reaction = [] { matrices_at.clear(); };
});
dialog::addSelItem("size", fts(snow_shape), 's');
dialog::add_action([]() {
snow_shape = (1 + snow_shape) % 3;
});
dialog::addBack();
dialog::display();
}
named_functionality o_key() {
if(snow_lambda) return named_dialog("snowballs", show);
return named_functionality();
}
auto hchook = addHook(hooks_drawcell, 100, draw_snow)
+ addHook(clearmemory, 40, [] () {
matrices_at.clear();
})
+ addHook(hooks_o_key, 80, o_key)
#if CAP_COMMANDLINE
+ addHook(hooks_args, 100, [] {
using namespace arg;
@ -207,13 +233,14 @@ auto hchook = addHook(hooks_drawcell, 100, draw_snow)
else return 1;
return 0;
})
#endif
+ addHook(rvtour::hooks_build_rvtour, 140, [] (vector<tour::slide>& v) {
v.push_back(tour::slide{
cap+"intro", 10, tour::LEGAL::NONE | tour::QUICKSKIP,
"Non-Euclidean visualizations usually show some regular constructions. Could we visualize the geometries themselves? Let's distribute the snowballs randomly."
"\n\n"
"You can use mouse to look in different directions. Press 5 to turn the automatic movement on or off."
"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) {}
});
@ -278,3 +305,4 @@ auto hchook = addHook(hooks_drawcell, 100, draw_snow)
});
}
}