Terraria.Wiring.TripWire C# (CSharp) Method

TripWire() private static method

private static TripWire ( int left, int top, int width, int height ) : void
left int
top int
width int
height int
return void
        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;
            }
        }