150 lines
3.8 KiB
Python
150 lines
3.8 KiB
Python
"""Волна N+43: vfbuild79 — 22 EF в vp.java (renderCircles/renderTextures/renderRings,
|
|
по 2 лямбды на метод → суффиксы f/g в рамках одного switch).
|
|
Запуск: python3 tools/waves_n43.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/vp.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, new) # placeholder, replaced below
|
|
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 editg(ln, *names):
|
|
global ok
|
|
i = ln - 1
|
|
new = L[i]
|
|
for name in names:
|
|
new = re.sub(rf"\b{name}\b", name + "g", 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, suffix f = 1st lambda of method, g = 2nd) ---
|
|
# renderRings L2 (g)
|
|
editg(1205, "var6")
|
|
editg(1190, "var4")
|
|
# renderRings L1 (f)
|
|
edit(1127, "var4")
|
|
# renderTextures L2 (g)
|
|
editg(1045, "var6")
|
|
editg(1044, "var5")
|
|
editg(1038, "var8")
|
|
editg(1037, "var7")
|
|
editg(1009, "var9")
|
|
editg(1008, "var11")
|
|
# renderTextures L1 (f)
|
|
edit(964, "var11", "var9")
|
|
# renderCircles L2 (g)
|
|
editg(775, "var9", "var7")
|
|
# renderCircles L1 (f)
|
|
edit(732, "var11")
|
|
edit(731, "var11")
|
|
edit(720, "var4")
|
|
edit(719, "var6")
|
|
edit(718, "var5")
|
|
edit(711, "var11")
|
|
edit(695, "var9", "var7")
|
|
|
|
# --- inserts (descending) ---
|
|
insert_before(
|
|
1147,
|
|
"boolean var10 = this.ringGlowSetting.isEnabled();",
|
|
"var1.submitCustomGeometry(var2, textureLayer(RING_TEXTURE), (var6x, var7x) -> {",
|
|
[
|
|
"final long var4g = var4;",
|
|
"final float var6g = var6;",
|
|
],
|
|
)
|
|
insert_before(
|
|
1114,
|
|
"var4 = System.currentTimeMillis();",
|
|
"this.rings.removeIf(var2x -> {",
|
|
["final long var4f = var4;"],
|
|
)
|
|
insert_before(
|
|
996,
|
|
"var17 = textureLayer((Identifier)var16);",
|
|
"var1.submitCustomGeometry(var2, var17, (var10, var11x) -> {",
|
|
[
|
|
"final int var5g = var5;",
|
|
"final int var6g = var6;",
|
|
"final float var7g = var7;",
|
|
"final float var8g = var8;",
|
|
"final long var9g = var9;",
|
|
"final long var11g = var11;",
|
|
],
|
|
)
|
|
insert_before(
|
|
940,
|
|
"var11 = System.currentTimeMillis();",
|
|
"this.textures.removeIf(var4x -> {",
|
|
[
|
|
"final long var9f = var9;",
|
|
"final long var11f = var11;",
|
|
],
|
|
)
|
|
insert_before(
|
|
767,
|
|
"var11 = 48;",
|
|
"this.circles.removeIf(var4x -> {",
|
|
[
|
|
"final long var7g = var7;",
|
|
"final long var9g = var9;",
|
|
],
|
|
)
|
|
insert_before(
|
|
677,
|
|
"case 1353796141:",
|
|
"var2.submitCustomGeometry(var1, arj.positionColor(), (var10, var11x) -> {",
|
|
[
|
|
"final int var4f = var4;",
|
|
"final float var5f = var5;",
|
|
"final float var6f = var6;",
|
|
"final long var7f = var7;",
|
|
"final long var9f = var9;",
|
|
"final int var11f = var11;",
|
|
],
|
|
)
|
|
|
|
open(p, "w", encoding="utf-8").write("\n".join(L) + "\n")
|
|
print("OK" if ok else "PROBLEMS")
|
|
sys.exit(0 if ok else 1)
|