1
0
mirror of https://github.com/zenorogue/hyperrogue.git synced 2024-12-24 17:10:36 +00:00

rogueviz:: random-walk:: fixed with rv_hook

This commit is contained in:
Zeno Rogue 2021-04-07 18:01:35 +02:00
parent 02da8e78ec
commit 5403859b41

View File

@ -37,8 +37,6 @@ bool draw_rwalk(cell *c, const shiftmatrix& V) {
return false;
}
bool do_walkers;
bool in_video;
ld sim_speed = 5;
@ -48,8 +46,6 @@ int branch_each = 50000;
ld step_size = 0.02;
bool advance_walkers(int delta) {
if(!do_walkers) return false;
if(walkers.empty()) {
walkers.emplace_back(rwalker{currentmap->gamestart(), Id, Id, 0xFFFFFFFF, 0});
}
@ -94,34 +90,25 @@ bool advance_walkers(int delta) {
return false;
}
void enable();
int args() {
using namespace arg;
if(0) ;
else if(argis("-rwalk")) {
do_walkers = true;
enable();
}
else if(argis("-rwparam")) {
shift_arg_formula(sim_speed);
shift_arg_formula(step_size);
shift(); branch_each = argi();
}
else if(argis("-rwalk-off")) {
do_walkers = false;
}
else return 1;
return 0;
}
bool pres_handleKey(int sym, int uni) {
if((cmode & sm::NORMAL))
if(sym == 'x') {
return true;
}
return false;
}
void show() {
cmode = sm::SIDE | sm::MAYDARK;
gamescreen(0);
@ -162,7 +149,7 @@ void show() {
}
void o_key(o_funcs& v) {
if(do_walkers) v.push_back(named_dialog("random walk", show));
v.push_back(named_dialog("random walk", show));
}
string cap = "non-Euclidean random walk/";
@ -180,11 +167,6 @@ void rw_slide(vector<tour::slide>& v, string title, string desc, reaction_t t) {
stop_game();
t();
start_game();
do_walkers = true;
}
if(mode == pmStop) {
do_walkers = false;
}
if(mode == pmKey) {
@ -196,18 +178,19 @@ void rw_slide(vector<tour::slide>& v, string title, string desc, reaction_t t) {
);
}
auto msc =
addHook(hooks_args, 100, args)
+ addHook(hooks_drawcell, 100, draw_rwalk)
+ addHook(shmup::hooks_turn, 100, advance_walkers)
+ addHook(hooks_handleKey, 0, pres_handleKey)
+ addHook(hooks_o_key, 80, o_key)
+ addHook(hooks_clearmemory, 40, [] () {
void enable() {
rv_hook(hooks_drawcell, 100, draw_rwalk);
rv_hook(shmup::hooks_turn, 100, advance_walkers);
rv_hook(hooks_o_key, 80, o_key);
rv_hook(hooks_clearmemory, 40, [] () {
drawn.clear();
walkers.clear();
total_time = 0;
})
});
}
auto msc =
addHook(hooks_args, 100, args)
+ addHook(pres::hooks_build_rvtour, 180, [] (string s, vector<tour::slide>& v) {
if(s != "mixed") return;
v.push_back(tour::slide{