process-spawn + pretty printer improvements (#1428)

* some jp support to fix some errors in the original game

* music fade toggle

* recognize `process-new` macros!!

* strip casts in this macro

* rename macro

* fix cast typecheck

* update source 1

* detect kernel stack case

* less boilerplate

* `manipy-spawn` special case

* pretty printer improvements

* revert dumb thing from earlier

* use shell detection on `send-event`

* fix some events

* remove unused argument

* detect `static-attack-info` and add `CondNoElse` to shell detect

* better `attack-info` detect

* support `process-spawn` in multi-lets

* detect `rand-float-gen` pt 1

* detect as return value

* detect in `countdown` and  `dotimes`

* oops this wasnt working

* fancier `send-event`s

* clang

* update source!!

* fix tests

* fine jeez

* uh okay

* fix some accidental regressions

* fix more regressions

* regression fixes

* fix big bug...

* extra safety!
This commit is contained in:
ManDude
2022-06-10 02:18:08 +01:00
committed by GitHub
parent ffd8ade4e1
commit 7ce58f709f
559 changed files with 35205 additions and 66104 deletions
+70 -1
View File
@@ -62,10 +62,79 @@ struct LetRewriteStats {
int set_vector = 0;
int set_vector2 = 0;
int send_event = 0;
int font_context_meth = 0;
int proc_new = 0;
int attack_info = 0;
int vector_dot = 0;
int rand_float_gen = 0;
int total() const {
return dotimes + countdown + abs + abs2 + unused + ja + case_no_else + case_with_else +
set_vector + set_vector2 + send_event;
set_vector + set_vector2 + send_event + font_context_meth + proc_new + attack_info +
vector_dot + rand_float_gen;
}
std::string print() const {
std::string out;
out += fmt::format("LET REWRITE STATS: {} total\n", total());
out += fmt::format(" dotimes: {}\n", dotimes);
out += fmt::format(" countdown: {}\n", countdown);
out += fmt::format(" abs: {}\n", abs);
out += fmt::format(" abs2: {}\n", abs2);
out += fmt::format(" ja: {}\n", ja);
out += fmt::format(" set_vector: {}\n", set_vector);
out += fmt::format(" set_vector2: {}\n", set_vector2);
out += fmt::format(" case_no_else: {}\n", case_no_else);
out += fmt::format(" case_with_else: {}\n", case_with_else);
out += fmt::format(" unused: {}\n", unused);
out += fmt::format(" send_event: {}\n", send_event);
// out += fmt::format(" font_context_meth: {}\n", font_context_meth);
out += fmt::format(" proc_new: {}\n", proc_new);
out += fmt::format(" attack_info: {}\n", attack_info);
out += fmt::format(" vector_dot: {}\n", vector_dot);
out += fmt::format(" rand_float_gen: {}\n", rand_float_gen);
return out;
}
LetRewriteStats operator+(const LetRewriteStats& other) {
LetRewriteStats result;
result.dotimes = dotimes + other.dotimes;
result.countdown = countdown + other.countdown;
result.abs = abs + other.abs;
result.abs2 = abs2 + other.abs2;
result.ja = ja + other.ja;
result.set_vector = set_vector + other.set_vector;
result.set_vector2 = set_vector2 + other.set_vector2;
result.case_no_else = case_no_else + other.case_no_else;
result.case_with_else = case_with_else + other.case_with_else;
result.unused = unused + other.unused;
result.send_event = send_event + other.send_event;
result.font_context_meth = font_context_meth + other.font_context_meth;
result.proc_new = proc_new + other.proc_new;
result.attack_info = attack_info + other.attack_info;
result.vector_dot = vector_dot + other.vector_dot;
result.rand_float_gen = rand_float_gen + other.rand_float_gen;
return result;
}
LetRewriteStats& operator+=(const LetRewriteStats& other) {
dotimes += other.dotimes;
countdown += other.countdown;
abs += other.abs;
abs2 += other.abs2;
ja += other.ja;
set_vector += other.set_vector;
set_vector2 += other.set_vector2;
case_no_else += other.case_no_else;
case_with_else += other.case_with_else;
unused += other.unused;
send_event += other.send_event;
font_context_meth += other.font_context_meth;
proc_new += other.proc_new;
attack_info += other.attack_info;
vector_dot += other.vector_dot;
rand_float_gen += other.rand_float_gen;
return *this;
}
};