126 lines
3.3 KiB
Python
126 lines
3.3 KiB
Python
"""Волна N+42: vfbuild75 — 42 EF в up.java (render, renderBlood, renderSoul ×2).
|
||
Запуск: python3 tools/waves_n42.py"""
|
||
|
||
import os, re, sys
|
||
|
||
ROOT = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
|
||
p = os.path.join(ROOT, "src/main/java/defpackage/up.java")
|
||
L = open(p, encoding="utf-8", errors="replace").read().splitlines()
|
||
ok = True
|
||
|
||
|
||
def edit(ln, *names):
|
||
global ok
|
||
i = ln - 1
|
||
new = L[i]
|
||
for name in names:
|
||
new = re.sub(rf"\b{name}\b", name + "f", new)
|
||
if new != L[i]:
|
||
L[i] = new
|
||
else:
|
||
ok = False
|
||
print(f"MISS {ln}: none of {names} in {L[i].strip()[:90]!r}")
|
||
|
||
|
||
def insert_before(ln, anchor_prev, anchor_next, decls):
|
||
global ok
|
||
ip = ln - 1
|
||
prev_ok = anchor_prev in L[ip - 1]
|
||
next_ok = anchor_next in L[ip]
|
||
done = decls[0] in "\n".join(L[max(0, ip - 12) : ip + 10])
|
||
if prev_ok and next_ok and not done:
|
||
line = L[ip]
|
||
indent = line[: len(line) - len(line.lstrip())]
|
||
L[ip:ip] = [indent + d for d in decls]
|
||
elif done:
|
||
pass
|
||
else:
|
||
ok = False
|
||
print(
|
||
f"INSERT-MISS {ln}: prev={L[ip - 1].strip()[:70]!r} next={L[ip].strip()[:70]!r}"
|
||
)
|
||
|
||
|
||
# --- edits (descending) ---
|
||
# Region D: renderSoul, 2nd lambda (drawBox)
|
||
edit(2958, "var14")
|
||
edit(2957, "var13")
|
||
for ln in (2956, 2955, 2954, 2953, 2952, 2951, 2950, 2949):
|
||
edit(ln, "var20")
|
||
# Region C: renderSoul, 1st lambda (emitBoltSegment)
|
||
edit(2881, "var15")
|
||
edit(2877, "var11")
|
||
edit(2875, "var6")
|
||
edit(2874, "var6")
|
||
edit(2873, "var6")
|
||
# Region B: renderBlood lambda
|
||
for ln, name in (
|
||
(2682, "var16"),
|
||
(2681, "var15"),
|
||
(2680, "var14"),
|
||
(2679, "var13"),
|
||
(2678, "var12"),
|
||
(2677, "var11"),
|
||
):
|
||
edit(ln, name)
|
||
# Region A: render lambda (drawBox ×2)
|
||
edit(2180, "var15")
|
||
edit(2179, "var10")
|
||
for ln in (2178, 2177, 2176, 2175, 2174):
|
||
edit(ln, "var16")
|
||
edit(2173, "var19")
|
||
edit(2172, "var18")
|
||
edit(2171, "var17")
|
||
edit(2166, "var17", "var18", "var19", "var16", "var10", "var15")
|
||
|
||
# --- inserts (descending) ---
|
||
insert_before(
|
||
2943,
|
||
"var2.translate(var20.centerXPx() * 0.0625F, var20.centerYPx() * 0.0625F, 0.0F);",
|
||
"var3.submitCustomGeometry(",
|
||
[
|
||
"final float var13f = var13;",
|
||
"final float var14f = var14;",
|
||
"final um var20f = var20;",
|
||
],
|
||
)
|
||
insert_before(
|
||
2843,
|
||
"var15 = var9;",
|
||
"var3.submitCustomGeometry(",
|
||
[
|
||
"final float var6f = var6;",
|
||
"final float var11f = var11;",
|
||
"final float var15f = var15;",
|
||
],
|
||
)
|
||
insert_before(
|
||
2617,
|
||
"case 1921332157:",
|
||
"var3.submitCustomGeometry(",
|
||
[
|
||
"final float var11f = var11;",
|
||
"final float var12f = var12;",
|
||
"final float var13f = var13;",
|
||
"final float var14f = var14;",
|
||
"final float var15f = var15;",
|
||
"final float var16f = var16;",
|
||
],
|
||
)
|
||
insert_before(
|
||
2162,
|
||
"var19 = var16.depthPx() * 0.0625F * 0.5F;",
|
||
"var3.submitCustomGeometry(",
|
||
[
|
||
"final int var10f = var10;",
|
||
"final int var15f = var15;",
|
||
"final um var16f = var16;",
|
||
"final float var17f = var17;",
|
||
"final float var18f = var18;",
|
||
"final float var19f = var19;",
|
||
],
|
||
)
|
||
|
||
open(p, "w", encoding="utf-8").write("\n".join(L) + "\n")
|
||
print("OK" if ok else "PROBLEMS")
|
||
sys.exit(0 if ok else 1)
|