mirror of
				https://github.com/zenorogue/hyperrogue.git
				synced 2025-10-31 05:52:59 +00:00 
			
		
		
		
	rulegen:: tests:: new features
This commit is contained in:
		| @@ -103,6 +103,9 @@ reaction_t clear_debug = [] {}; | |||||||
|  |  | ||||||
| map<tcell*,int> sprawl_shown; | map<tcell*,int> sprawl_shown; | ||||||
|  |  | ||||||
|  | vector<twalker> old_sprawl, cur_sprawl; | ||||||
|  | int old_sprawl_id; | ||||||
|  |  | ||||||
| int total_analyzers(); | int total_analyzers(); | ||||||
|  |  | ||||||
| void cleanup_protomap() { | void cleanup_protomap() { | ||||||
| @@ -167,9 +170,34 @@ void move_to(cellwalker cw) { | |||||||
|  |  | ||||||
| void move_to(twalker dw) { | void move_to(twalker dw) { | ||||||
|   auto m = dynamic_cast<hrmap_testproto*> (currentmap); |   auto m = dynamic_cast<hrmap_testproto*> (currentmap); | ||||||
|  |   ufind(dw); | ||||||
|   move_to(cellwalker(m->clone(dw.at)->c7, dw.spin, dw.mirrored)); |   move_to(cellwalker(m->clone(dw.at)->c7, dw.spin, dw.mirrored)); | ||||||
|   } |   } | ||||||
|  |  | ||||||
|  | void sprawl(tcell *c) { | ||||||
|  |   auto [d, id] = get_code(c); | ||||||
|  |   twalker cw(c, d); | ||||||
|  |   cur_sprawl = spread(get_analyzer(cw), cw); | ||||||
|  |   println(hlog, "sprawl result = ", cur_sprawl); | ||||||
|  |   println(hlog, "code = ", treestates[id].code); | ||||||
|  |   sprawl_shown.clear(); | ||||||
|  |   for(int i=0; i<isize(cur_sprawl); i++) sprawl_shown[cur_sprawl[i].at] = i; | ||||||
|  |   if(isize(cur_sprawl) == isize(old_sprawl) && old_sprawl_id < isize(treestates)) { | ||||||
|  |     auto& oldcode = treestates[old_sprawl_id].code.second; | ||||||
|  |     auto& newcode = treestates[id].code.second; | ||||||
|  |     int q = isize(cur_sprawl); | ||||||
|  |     debuglist = {}; | ||||||
|  |     for(int i=0; i<q; i++) | ||||||
|  |       if(oldcode[i] != newcode[i]) { | ||||||
|  |         println(hlog, "index: ", i, " old: ", oldcode[i], " new: ", newcode[i], " at ", old_sprawl[i], " vs ", cur_sprawl[i]); | ||||||
|  |         debuglist.push_back(old_sprawl[i]); | ||||||
|  |         debuglist.push_back(cur_sprawl[i]); | ||||||
|  |         } | ||||||
|  |     } | ||||||
|  |   old_sprawl = cur_sprawl; | ||||||
|  |   old_sprawl_id = id; | ||||||
|  |   } | ||||||
|  |  | ||||||
| void debug_menu() { | void debug_menu() { | ||||||
|   cmode = sm::SIDE | sm::MAYDARK; |   cmode = sm::SIDE | sm::MAYDARK; | ||||||
|   gamescreen(0); |   gamescreen(0); | ||||||
| @@ -178,13 +206,7 @@ void debug_menu() { | |||||||
|    |    | ||||||
|   dialog::addItem("sprawl", 's'); |   dialog::addItem("sprawl", 's'); | ||||||
|   dialog::add_action([m] { |   dialog::add_action([m] { | ||||||
|     tcell *c = m->counterpart[centerover->master]; |     sprawl(m->counterpart[centerover->master]); | ||||||
|     auto [d, id] = get_code(c); |  | ||||||
|     twalker cw(c, d); |  | ||||||
|     auto res = spread(get_analyzer(cw), cw); |  | ||||||
|     println(hlog, "sprawl result = ", res); |  | ||||||
|     sprawl_shown.clear(); |  | ||||||
|     for(int i=0; i<isize(res); i++) sprawl_shown[res[i].at] = i; |  | ||||||
|     }); |     }); | ||||||
|  |  | ||||||
|   dialog::addItem("parent_dir", 'p'); |   dialog::addItem("parent_dir", 'p'); | ||||||
| @@ -234,6 +256,19 @@ void debug_menu() { | |||||||
|     dialog::display(); |     dialog::display(); | ||||||
|     }); |     }); | ||||||
|    |    | ||||||
|  |   dialog::addItem("furthest", 'f'); | ||||||
|  |   dialog::add_action([m] {  | ||||||
|  |     auto *c = first_tcell; | ||||||
|  |     tcell *furthest = c; | ||||||
|  |     while(c) { | ||||||
|  |       if(c->unified_to.at == c) | ||||||
|  |         if(c->dist < MYSTERY && c->dist > furthest->dist) furthest = c; | ||||||
|  |       c = c->next; | ||||||
|  |       } | ||||||
|  |     println(hlog, "furthest in distance = ", furthest->dist); | ||||||
|  |     move_to(furthest); | ||||||
|  |     }); | ||||||
|  |    | ||||||
|   dialog::addItem("print rules", 'P'); |   dialog::addItem("print rules", 'P'); | ||||||
|   dialog::add_action(print_rules); |   dialog::add_action(print_rules); | ||||||
|  |  | ||||||
| @@ -246,6 +281,9 @@ void debug_menu() { | |||||||
|   dialog::addItem("irradiate", 'i'); |   dialog::addItem("irradiate", 'i'); | ||||||
|   dialog::add_action(irradiate); |   dialog::add_action(irradiate); | ||||||
|  |  | ||||||
|  |   dialog::addItem("irradiate x10", 'I'); | ||||||
|  |   dialog::add_action([] { for(int i=0; i<10; i++) irradiate(); }); | ||||||
|  |  | ||||||
|   dialog::addItem("name", 'n'); |   dialog::addItem("name", 'n'); | ||||||
|   dialog::add_action([m] { println(hlog, "name = ", index_pointer(m->counterpart[cwt.at->master])); }); |   dialog::add_action([m] { println(hlog, "name = ", index_pointer(m->counterpart[cwt.at->master])); }); | ||||||
|  |  | ||||||
| @@ -921,6 +959,10 @@ int testargs() { | |||||||
|     shift(); move_to(treestates[argi()].giver); |     shift(); move_to(treestates[argi()].giver); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|  |   else if(argis("-origin-id")) { | ||||||
|  |     shift(); origin_id = argi(); | ||||||
|  |     } | ||||||
|  |      | ||||||
|   else if(argis("-dseek")) { |   else if(argis("-dseek")) { | ||||||
|     shift(); |     shift(); | ||||||
|     int i = argi(); |     int i = argi(); | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user
	 Zeno Rogue
					Zeno Rogue