1
0
mirror of https://github.com/zenorogue/hyperrogue.git synced 2025-01-20 14:13:02 +00:00

rulegen-tests improved

This commit is contained in:
Zeno Rogue 2021-11-23 10:25:16 +01:00
parent a98d9cb699
commit 914f2b9a57

View File

@ -167,7 +167,7 @@ void irradiate() {
cleanup_protomap(); cleanup_protomap();
} }
void move_to(cellwalker cw) { void move_to(cellwalker cw) {
cwt = cw; cwt = cw;
centerover = cwt.at; centerover = cwt.at;
View = Id; View = Id;
@ -470,7 +470,7 @@ void print_rules() {
for(auto r: ts.rules) for(auto r: ts.rules)
print(hlog, " ", rule_name(r)); print(hlog, " ", rule_name(r));
if(ts.giver.at) if(ts.giver.at)
print(hlog, " ", get_aid(ts.giver)); print(hlog, " ", ts.giver);
else else
print(hlog, " (no giver)"); print(hlog, " (no giver)");
@ -490,7 +490,7 @@ void restart_game_on(hrmap *m) {
bool add_header = false; bool add_header = false;
bool add_labels = true; bool add_labels = true;
string test_stats = "gsmctTlAhf"; string test_stats = "gsmTPcuQthlpf"; // "gsmctTlAhf";
pair<int,int> longest_shortcut() { pair<int,int> longest_shortcut() {
int res = 0; int res = 0;
@ -764,8 +764,8 @@ void test_current(string tesname) {
// for(auto& sh: shortcuts) println(hlog, sh.first, " : ", isize(sh.second), " shortcuts (CSV)"); // for(auto& sh: shortcuts) println(hlog, sh.first, " : ", isize(sh.second), " shortcuts (CSV)");
/*if(status == "ACC")*/ print_rules();
if(status != "ACC") treestates = alt_treestates; if(status != "ACC") treestates = alt_treestates;
if(status == "ACC") print_rules();
/* for(auto& a: analyzers) /* for(auto& a: analyzers)
println(hlog, "analyzer ", a.first, " size is ", isize(a.second.spread)); */ println(hlog, "analyzer ", a.first, " size is ", isize(a.second.spread)); */
fflush(stdout); fflush(stdout);
@ -837,6 +837,7 @@ void set_arcm(eVariation v, string symbol) {
bool set_general(const string& s) { bool set_general(const string& s) {
stop_game(); stop_game();
arb::current.name = s;
if(s[0] == 'X') { if(s[0] == 'X') {
int a, b, c, d; int a, b, c, d;
sscanf(s.c_str()+2, "%d%d%d%d", &a, &b, &c, &d); sscanf(s.c_str()+2, "%d%d%d%d", &a, &b, &c, &d);
@ -906,6 +907,58 @@ void test_from_file(string list) {
} }
} }
void rulecat(string list) {
set_dir(list);
vector<string> filenames;
std::ifstream is("devmods/rulegen-tests/" + list + ".lst");
string s;
while(getline(is, s)) {
while(s != "" && s[0] == ' ') s = s.substr(1);
if(s != "" && s[0] != '#') filenames.push_back(s);
}
for(const string& s: filenames) {
string cat1;
/*
if(s[0] == 'X' && s[4] == '1')
cat1 = "regular";
else if(s[0] == 'X' && s[4] == '0')
cat1 = "bitruncated";
else if(s[0] == 'X' && s[4] == '5' && s[6] == 1 && s[7] == 0)
cat1 = "regular"; */
if(0) ;
else if(s[0] == 'X')
cat1 = "variations";
/*
else if(s[0] == 'P' && is_reg(s))
cat1 = "regular";
else if(s[0] == 'D' && is_reg(s))
cat1 = "regular";
else if(s[0] == 'B' && is_reg(s))
cat1 = "bitruncated";
*/
else if(s[0] == 'P')
cat1 = "archimedean";
else if(s[0] == 'D')
cat1 = "lavasz";
else if(s[0] == 'B')
cat1 = "archibi";
else {
int i = 0;
while(s[i] != '/') i++;
i++;
int i1 = i;
while(s[i] != '/') i++;
cat1 = s.substr(i1, i-i1);
if(cat1 == "multitile" && s.substr(i+1, 9) == "polyforms")
cat1 = "polyforms";
}
printf("CSV;%s;%s\n", cat1.c_str(), s.c_str());
}
}
void label_all(int i, int mode) { void label_all(int i, int mode) {
queue<tcell*> to_label; queue<tcell*> to_label;
auto m = dynamic_cast<hrmap_testproto*> (currentmap); auto m = dynamic_cast<hrmap_testproto*> (currentmap);
@ -989,6 +1042,11 @@ int testargs() {
shift(); shift();
test_from_file(args()); test_from_file(args());
} }
else if(argis("-rulecat")) {
PHASEFROM(3);
shift();
rulecat(args());
}
else if(argis("-trv")) { else if(argis("-trv")) {
shift(); test_rotate_val = argi(); shift(); test_rotate_val = argi();
} }