mirror of
				https://github.com/zenorogue/hyperrogue.git
				synced 2025-10-31 14:02:59 +00:00 
			
		
		
		
	rogueviz:: random-walk:: fixed with rv_hook
This commit is contained in:
		| @@ -37,8 +37,6 @@ bool draw_rwalk(cell *c, const shiftmatrix& V) { | |||||||
|   return false; |   return false; | ||||||
|   } |   } | ||||||
|  |  | ||||||
| bool do_walkers; |  | ||||||
|  |  | ||||||
| bool in_video; | bool in_video; | ||||||
|  |  | ||||||
| ld sim_speed = 5; | ld sim_speed = 5; | ||||||
| @@ -48,8 +46,6 @@ int branch_each = 50000; | |||||||
| ld step_size = 0.02; | ld step_size = 0.02; | ||||||
|  |  | ||||||
| bool advance_walkers(int delta) { | bool advance_walkers(int delta) { | ||||||
|   if(!do_walkers) return false; |  | ||||||
|  |  | ||||||
|   if(walkers.empty()) { |   if(walkers.empty()) { | ||||||
|     walkers.emplace_back(rwalker{currentmap->gamestart(), Id, Id, 0xFFFFFFFF, 0}); |     walkers.emplace_back(rwalker{currentmap->gamestart(), Id, Id, 0xFFFFFFFF, 0}); | ||||||
|     } |     } | ||||||
| @@ -94,34 +90,25 @@ bool advance_walkers(int delta) { | |||||||
|   return false; |   return false; | ||||||
|   } |   } | ||||||
|  |  | ||||||
|  | void enable(); | ||||||
|  |  | ||||||
| int args() { | int args() { | ||||||
|   using namespace arg; |   using namespace arg; | ||||||
|             |             | ||||||
|   if(0) ; |   if(0) ; | ||||||
|   else if(argis("-rwalk")) { |   else if(argis("-rwalk")) { | ||||||
|     do_walkers = true; |     enable(); | ||||||
|     } |     } | ||||||
|   else if(argis("-rwparam")) { |   else if(argis("-rwparam")) { | ||||||
|     shift_arg_formula(sim_speed); |     shift_arg_formula(sim_speed); | ||||||
|     shift_arg_formula(step_size); |     shift_arg_formula(step_size); | ||||||
|     shift(); branch_each = argi(); |     shift(); branch_each = argi(); | ||||||
|     } |     } | ||||||
|   else if(argis("-rwalk-off")) { |  | ||||||
|     do_walkers = false; |  | ||||||
|     } |  | ||||||
|  |  | ||||||
|   else return 1; |   else return 1; | ||||||
|   return 0; |   return 0; | ||||||
|   } |   } | ||||||
|  |  | ||||||
| bool pres_handleKey(int sym, int uni) { |  | ||||||
|   if((cmode & sm::NORMAL)) |  | ||||||
|     if(sym == 'x') { |  | ||||||
|       return true; |  | ||||||
|       } |  | ||||||
|   return false; |  | ||||||
|   } |  | ||||||
|  |  | ||||||
| void show() { | void show() { | ||||||
|   cmode = sm::SIDE | sm::MAYDARK; |   cmode = sm::SIDE | sm::MAYDARK; | ||||||
|   gamescreen(0); |   gamescreen(0); | ||||||
| @@ -162,7 +149,7 @@ void show() { | |||||||
|   } |   } | ||||||
|  |  | ||||||
| void o_key(o_funcs& v) { | 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/"; | 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(); |       stop_game(); | ||||||
|       t(); |       t(); | ||||||
|       start_game(); |       start_game(); | ||||||
|       do_walkers = true; |  | ||||||
|       } |  | ||||||
|  |  | ||||||
|     if(mode == pmStop) { |  | ||||||
|       do_walkers = false; |  | ||||||
|       } |       } | ||||||
|  |  | ||||||
|     if(mode == pmKey) { |     if(mode == pmKey) { | ||||||
| @@ -196,18 +178,19 @@ void rw_slide(vector<tour::slide>& v, string title, string desc, reaction_t t) { | |||||||
|     ); |     ); | ||||||
|   } |   } | ||||||
|  |  | ||||||
|  | void enable() { | ||||||
| auto msc =  |   rv_hook(hooks_drawcell, 100, draw_rwalk); | ||||||
|   addHook(hooks_args, 100, args) |   rv_hook(shmup::hooks_turn, 100, advance_walkers); | ||||||
| + addHook(hooks_drawcell, 100, draw_rwalk) |   rv_hook(hooks_o_key, 80, o_key); | ||||||
| + addHook(shmup::hooks_turn, 100, advance_walkers) |   rv_hook(hooks_clearmemory, 40, [] () { | ||||||
| + addHook(hooks_handleKey, 0, pres_handleKey) |  | ||||||
| + addHook(hooks_o_key, 80, o_key) |  | ||||||
| + addHook(hooks_clearmemory, 40, [] () { |  | ||||||
|     drawn.clear(); |     drawn.clear(); | ||||||
|     walkers.clear(); |     walkers.clear(); | ||||||
|     total_time = 0; |     total_time = 0; | ||||||
|     }) |     }); | ||||||
|  |   } | ||||||
|  |  | ||||||
|  | auto msc =  | ||||||
|  |   addHook(hooks_args, 100, args) | ||||||
| + addHook(pres::hooks_build_rvtour, 180, [] (string s, vector<tour::slide>& v) { | + addHook(pres::hooks_build_rvtour, 180, [] (string s, vector<tour::slide>& v) { | ||||||
|   if(s != "mixed") return; |   if(s != "mixed") return; | ||||||
|   v.push_back(tour::slide{ |   v.push_back(tour::slide{ | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user
	 Zeno Rogue
					Zeno Rogue