Remove colision from walls towers and gates
To be able to ACTUALLY place wire
This commit is contained in:
@@ -648,5 +648,56 @@ namespace InfectionFreeZone {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
// TODO: Add toggle for this
|
||||||
|
[HarmonyTranspiler]
|
||||||
|
[HarmonyPatch(typeof(ValidatableStructure), "Awake")]
|
||||||
|
public static IEnumerable<CodeInstruction> PostfixValidatableStructure(
|
||||||
|
IEnumerable<CodeInstruction> instructions) {
|
||||||
|
var codes = new List<CodeInstruction>(instructions);
|
||||||
|
int start = 0;
|
||||||
|
int start2 = 0;
|
||||||
|
int end = 0;
|
||||||
|
int end2 = 0;
|
||||||
|
for (var i = 0; i < codes.Count; i++) {
|
||||||
|
if (codes[i].opcode == OpCodes.Ldc_I4_5) {
|
||||||
|
Console.WriteLine($"Opcode is {codes[i].opcode} and operand is {codes[i].operand} at index {i}");
|
||||||
|
codes[i] = new CodeInstruction(OpCodes.Ldc_I4_2); // Array size after our deletion is 3 from 5
|
||||||
|
}
|
||||||
|
|
||||||
|
if (codes[i].opcode == OpCodes.Ldstr && codes[i].operand.ToString() == "Tower") {
|
||||||
|
Console.WriteLine($"Opcode is {codes[i].opcode} and operand is {codes[i].operand} at index {i}");
|
||||||
|
start2 = i - 2;
|
||||||
|
end2 = i + 2;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (codes[i].opcode == OpCodes.Ldstr && codes[i].operand.ToString() == "Farmland") {
|
||||||
|
Console.WriteLine($"Opcode is {codes[i].opcode} and operand is {codes[i].operand} at index {i}");
|
||||||
|
Console.WriteLine(
|
||||||
|
$"Opcode is {codes[i - 1].opcode} and operand is {codes[i - 1].operand} at index {i - 1}");
|
||||||
|
codes[i - 1].opcode =
|
||||||
|
OpCodes.Ldc_I4_1; // Because we deleted the previous element this one is now index 1 instead of 2
|
||||||
|
}
|
||||||
|
|
||||||
|
if (codes[i].opcode == OpCodes.Ldstr && codes[i].operand.ToString() == "Wall") {
|
||||||
|
Console.WriteLine($"Opcode is {codes[i].opcode} and operand is {codes[i].operand} at index {i}");
|
||||||
|
start = i - 2;
|
||||||
|
end = i + 6;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Console.WriteLine($"Start is {start} with opcode {codes[start].opcode} and operand {codes[start].operand}");
|
||||||
|
Console.WriteLine($"End is {end} with opcode {codes[end].opcode} and operand {codes[end].operand}");
|
||||||
|
codes.RemoveRange(start, end - start);
|
||||||
|
Console.WriteLine($"Removed {end - start} instructions");
|
||||||
|
|
||||||
|
Console.WriteLine(
|
||||||
|
$"Start2 is {start2} with opcode {codes[start2].opcode} and operand {codes[start2].operand}");
|
||||||
|
Console.WriteLine($"End2 is {end2} with opcode {codes[end2].opcode} and operand {codes[end2].operand}");
|
||||||
|
codes.RemoveRange(start2, end2 - start2);
|
||||||
|
Console.WriteLine($"Removed {end2 - start2} instructions");
|
||||||
|
|
||||||
|
return codes.AsEnumerable();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
Reference in New Issue
Block a user