88 lines
2.3 KiB
Python
88 lines
2.3 KiB
Python
|
|
|
||
|
|
import os
|
||
|
|
|
||
|
|
path = "src/generation/CrystalSpiresGenerator.js"
|
||
|
|
with open(path, "r", encoding="utf-8") as f:
|
||
|
|
lines = f.readlines()
|
||
|
|
|
||
|
|
# Locate connectVerticalLevels
|
||
|
|
start_idx = -1
|
||
|
|
for i, line in enumerate(lines):
|
||
|
|
if "connectVerticalLevels(spires) {" in line:
|
||
|
|
start_idx = i
|
||
|
|
break
|
||
|
|
|
||
|
|
if start_idx == -1:
|
||
|
|
print("Error: connectVerticalLevels not found")
|
||
|
|
exit(1)
|
||
|
|
|
||
|
|
# Inject logs UNCOMMENTED
|
||
|
|
new_code = """ connectVerticalLevels(spires) {
|
||
|
|
console.log("Running connectVerticalLevels...");
|
||
|
|
spires.forEach((s, sIdx) => {
|
||
|
|
const sortedPlats = [...s.platforms].sort((a, b) => a.y - b.y);
|
||
|
|
console.log(`Spire ${sIdx} has ${sortedPlats.length} platforms.`);
|
||
|
|
|
||
|
|
for (let i = 0; i < sortedPlats.length - 1; i++) {
|
||
|
|
const pA = sortedPlats[i];
|
||
|
|
const pB = sortedPlats[i + 1];
|
||
|
|
|
||
|
|
const dy = pB.y - pA.y;
|
||
|
|
console.log(`Spire ${sIdx} Pair ${i}->${i+1}: dy=${dy}`);
|
||
|
|
|
||
|
|
if (dy > 18) {
|
||
|
|
console.log(" Skipped: Too far");
|
||
|
|
continue;
|
||
|
|
}
|
||
|
|
|
||
|
|
const angleA = this.rng.next() * Math.PI * 2;
|
||
|
|
const angleB = angleA + Math.PI * 0.66; // 120 deg
|
||
|
|
|
||
|
|
const rA = pA.radius - 0.5; // Inset slightly
|
||
|
|
const rB = pB.radius - 0.5;
|
||
|
|
|
||
|
|
const start = {
|
||
|
|
x: pA.x + Math.cos(angleA) * rA,
|
||
|
|
y: pA.y,
|
||
|
|
z: pA.z + Math.sin(angleA) * rA,
|
||
|
|
};
|
||
|
|
|
||
|
|
const end = {
|
||
|
|
x: pB.x + Math.cos(angleB) * rB,
|
||
|
|
y: pB.y,
|
||
|
|
z: pB.z + Math.sin(angleB) * rB,
|
||
|
|
};
|
||
|
|
|
||
|
|
const success = this.buildBridge(start, end, { x: s.x, z: s.z }, 0.0);
|
||
|
|
console.log(` BuildBridge Result: ${success}`);
|
||
|
|
|
||
|
|
if (success) {
|
||
|
|
pA.connections.push(start);
|
||
|
|
pB.connections.push(end);
|
||
|
|
this.generatedAssets.bridges.push({
|
||
|
|
fromSpire: sIdx,
|
||
|
|
toSpire: sIdx, // Same Spire
|
||
|
|
fromPlatIdx: s.platforms.indexOf(pA),
|
||
|
|
toPlatIdx: s.platforms.indexOf(pB),
|
||
|
|
start,
|
||
|
|
end,
|
||
|
|
});
|
||
|
|
}
|
||
|
|
}
|
||
|
|
});
|
||
|
|
}
|
||
|
|
"""
|
||
|
|
|
||
|
|
end_idx = -1
|
||
|
|
for i in range(start_idx+1, len(lines)):
|
||
|
|
if "connectSpires(spires) {" in lines[i]:
|
||
|
|
end_idx = i - 1
|
||
|
|
break
|
||
|
|
|
||
|
|
final_lines = lines[:start_idx] + [new_code] + lines[end_idx+1:]
|
||
|
|
|
||
|
|
with open(path, "w", encoding="utf-8") as f:
|
||
|
|
f.writelines(final_lines)
|
||
|
|
|
||
|
|
print("Debug Instrumentation Complete")
|