private static void TripWire(int left, int top, int width, int height)
{
if (Main.netMode == 1)
return;
Wiring.running = true;
if (Wiring._wireList.Count != 0)
Wiring._wireList.Clear(true);
Point16 back;
for (int X = left; X < left + width; ++X)
{
for (int Y = top; Y < top + height; ++Y)
{
back = new Point16(X, Y);
Tile tile = Main.tile[X, Y];
if (tile != null && tile.k_HasWireFlags(k_WireFlags.WIRE_RED))
Wiring._wireList.PushBack(back);
}
}
Vector2[] vector2Array = new Vector2[6];
Wiring._teleport[0].X = -1f;
Wiring._teleport[0].Y = -1f;
Wiring._teleport[1].X = -1f;
Wiring._teleport[1].Y = -1f;
if (Wiring._wireList.Count > 0)
{
Wiring._numInPump = 0;
Wiring._numOutPump = 0;
Wiring.HitWire(Wiring._wireList, 1);
if (Wiring._numInPump > 0 && Wiring._numOutPump > 0)
Wiring.XferWater();
}
for (int X = left; X < left + width; ++X)
{
for (int Y = top; Y < top + height; ++Y)
{
back = new Point16(X, Y);
Tile tile = Main.tile[X, Y];
if (tile != null && tile.k_HasWireFlags(k_WireFlags.WIRE_GREEN))
Wiring._wireList.PushBack(back);
}
}
vector2Array[0] = Wiring._teleport[0];
vector2Array[1] = Wiring._teleport[1];
Wiring._teleport[0].X = -1f;
Wiring._teleport[0].Y = -1f;
Wiring._teleport[1].X = -1f;
Wiring._teleport[1].Y = -1f;
if (Wiring._wireList.Count > 0)
{
Wiring._numInPump = 0;
Wiring._numOutPump = 0;
Wiring.HitWire(Wiring._wireList, 2);
if (Wiring._numInPump > 0 && Wiring._numOutPump > 0)
Wiring.XferWater();
}
vector2Array[2] = Wiring._teleport[0];
vector2Array[3] = Wiring._teleport[1];
Wiring._teleport[0].X = -1f;
Wiring._teleport[0].Y = -1f;
Wiring._teleport[1].X = -1f;
Wiring._teleport[1].Y = -1f;
for (int X = left; X < left + width; ++X)
{
for (int Y = top; Y < top + height; ++Y)
{
back = new Point16(X, Y);
Tile tile = Main.tile[X, Y];
if (tile != null && tile.k_HasWireFlags(k_WireFlags.WIRE_BLUE))
Wiring._wireList.PushBack(back);
}
}
if (Wiring._wireList.Count > 0)
{
Wiring._numInPump = 0;
Wiring._numOutPump = 0;
Wiring.HitWire(Wiring._wireList, 3);
if (Wiring._numInPump > 0 && Wiring._numOutPump > 0)
Wiring.XferWater();
}
vector2Array[4] = Wiring._teleport[0];
vector2Array[5] = Wiring._teleport[1];
int index = 0;
while (index < 5)
{
Wiring._teleport[0] = vector2Array[index];
Wiring._teleport[1] = vector2Array[index + 1];
if ((double)Wiring._teleport[0].X >= 0.0 && (double)Wiring._teleport[1].X >= 0.0)
Wiring.Teleport();
index += 2;
}
}