evo/tools/waves_n20.py

140 lines
4.4 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

"""Волна N+20: vfbuild36 — 28 EF в agb.java (submit/submitPreview lambdas ×4).
Запуск: python3 tools/waves_n20.py"""
import os, sys
ROOT = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
JAVA = os.path.join(ROOT, "src/main/java")
p = os.path.join(JAVA, "defpackage/agb.java")
L = open(p, encoding="utf-8", errors="replace").read().splitlines()
ok = True
def edit(ln, old, new):
global ok
i = ln - 1
if i < len(L) and old in L[i]:
L[i] = L[i].replace(old, new, 1)
elif i < len(L) and new in L[i]:
pass
else:
ok = False
print(f"MISS {ln}: {old!r} got {(L[i] if i < len(L) else '<oob>').strip()!r}")
def insert_before(ln, anchor_prev, anchor_next, lines):
global ok
ip = ln - 1
prev_ok = anchor_prev in L[ip - 1]
next_ok = anchor_next in L[ip]
done = any(s.strip() in "\n".join(L[ip : ip + 8]) for s in (lines[0].strip(),))
if prev_ok and next_ok and not done:
L[ip:ip] = lines
elif done or (prev_ok and next_ok):
pass
else:
ok = False
print(
f"INSERT-MISS {ln}: prev={L[ip - 1].strip()[:50]!r} next={L[ip].strip()[:50]!r}"
)
# --- line edits, descending ---
# block4 (case 987243760, f-suffix)
edit(321, "var18,", "var18f,")
edit(318, "var11 * 1.14F", "var11f * 1.14F")
edit(317, "var10,", "var10f,")
edit(316, "var9,", "var9f,")
edit(315, "var16,", "var16f,")
edit(314, "var14,", "var14f,")
edit(313, "var12,", "var12f,")
# block3 (case -1818595167, g-suffix — тот же switch, чтобы не было redefinition)
edit(256, "var18,", "var18g,")
edit(253, "var11,", "var11g,")
edit(252, "var10,", "var10g,")
edit(251, "var9,", "var9g,")
edit(250, "var16,", "var16g,")
edit(249, "var14,", "var14g,")
edit(248, "var12,", "var12g,")
# block2 (while-body после switch, f-suffix)
edit(208, "var7,", "var7f,")
edit(205, "var16 * 1.14F", "var16f * 1.14F")
edit(204, "var15,", "var15f,")
edit(203, "var14,", "var14f,")
edit(202, "var12,", "var12f,")
edit(201, "var10,", "var10f,")
edit(200, "var8,", "var8f,")
# block1 (case -1757856855, f-suffix)
edit(172, "var7,", "var7f,")
edit(169, "var16,", "var16f,")
edit(168, "var15,", "var15f,")
edit(167, "var14,", "var14f,")
edit(166, "var12,", "var12f,")
edit(165, "var10,", "var10f,")
edit(164, "var8,", "var8f,")
# --- inserts, descending by line ---
# insert B: before line306 (case 987243760, f)
insert_before(
306,
"var18 = 15728880;",
"var1.submitCustomGeometry(",
[
" final double var12f = var12;",
" final double var14f = var14;",
" final double var16f = var16;",
" final Direction var9f = var9;",
" final float var10f = var10;",
" final float var11f = var11;",
" final int var18f = var18;",
],
)
# insert A: before line241 (case -1818595167, g)
insert_before(
241,
"case -1818595167:",
"var1.submitCustomGeometry(",
[
" final double var12g = var12;",
" final double var14g = var14;",
" final double var16g = var16;",
" final Direction var9g = var9;",
" final float var10g = var10;",
" final float var11g = var11;",
" final int var18g = var18;",
],
)
# insert2: before line193 (while-body, f)
insert_before(
193,
"var16 = var4.size();",
"var1.submitCustomGeometry(",
[
" final int var7f = var7;",
" final double var8f = var8;",
" final double var10f = var10;",
" final double var12f = var12;",
" final Direction var14f = var14;",
" final float var15f = var15;",
" final float var16f = var16;",
],
)
# insert1: before line157 (case -1757856855, f)
insert_before(
157,
"case -1757856855:",
"var1.submitCustomGeometry(",
[
" final int var7f = var7;",
" final double var8f = var8;",
" final double var10f = var10;",
" final double var12f = var12;",
" final Direction var14f = var14;",
" final float var15f = var15;",
" final float var16f = var16;",
],
)
open(p, "w", encoding="utf-8").write("\n".join(L) + "\n")
print("OK" if ok else "PROBLEMS")
sys.exit(0 if ok else 1)