"""Волна 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 '').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)