Exemple #1
0
        public override void Load(TagCompound tag)
        {
            foreach (var device in tag.Get <List <Device> >("devices"))
            {
                if (WireMod.Debug)
                {
                    mod.Logger.Info($"Loading device \"{device.Name}\": X {device.LocationRect.X}, Y: {device.LocationRect.Y}");
                }

                WireMod.PlaceDevice(device, device.LocationRect.X, device.LocationRect.Y);
            }

            foreach (var conn in tag.GetList <TagCompound>("wires"))
            {
                var src  = WireMod.GetDevicePin(conn.Get <Point16>("src"));
                var dest = WireMod.GetDevicePin(conn.Get <Point16>("dest"));
                if (src == null || dest == null)
                {
                    continue;
                }

                var points = conn.GetList <Point16>("points").ToList();
                var wire   = new Wire(src, dest, points);

                src.Connect(dest, wire);
                dest.Connect(src, wire);
            }
        }
Exemple #2
0
        public void ReceiveConnect(BinaryReader reader, int from)
        {
            var srcX  = reader.ReadInt32();
            var srcY  = reader.ReadInt32();
            var destX = reader.ReadInt32();
            var destY = reader.ReadInt32();

            WireMod.Instance.Logger.Info($"{from} Received Connect: srcX {srcX}, srcY {srcY}, destX {destX}, destY {destY}");

            var src = WireMod.GetDevicePin(srcX, srcY);

            if (src == null)
            {
                WireMod.Instance.Logger.Error($"{from} Connect: No pin found at: x {srcX}, y {srcY}");
                return;
            }

            var dest = WireMod.GetDevicePin(destX, destY);

            if (dest == null)
            {
                WireMod.Instance.Logger.Error($"{from} Connect: No pin found at: x {srcX}, y {srcY}");
                return;
            }

            if (Main.netMode == NetmodeID.Server)
            {
                this.SendConnect(-1, from, srcX, srcY, destX, destY);
            }

            src.Connect(dest);
            dest.Connect(src);
        }
Exemple #3
0
        public void ReceivePlace(BinaryReader reader, int from)
        {
            var name  = reader.ReadString();
            var x     = reader.ReadInt32();
            var y     = reader.ReadInt32();
            var value = reader.ReadString();

            WireMod.Instance.Logger.Info($"{from} Received Place: name {name}, value {value}, x {x}, y {y}");

            var device = (Device)Activator.CreateInstance(Type.GetType("WireMod.Devices." + name) ?? throw new InvalidOperationException("Device not found!"));

            if (!WireMod.CanPlace(device, x, y))
            {
                WireMod.Instance.Logger.Error($"{from} Place: Cannot place device at: x {x}, y {y}");
            }

            if (Main.netMode == NetmodeID.Server)
            {
                SendPlace(-1, from, name, value, x, y);
            }

            device.LocationRect = new Rectangle(x - device.Origin.X, y - device.Origin.Y, device.Width, device.Height);
            device.Value        = value;
            WireMod.PlaceDevice(device, x, y);
        }
Exemple #4
0
        public void ReceiveChangeSetting(BinaryReader reader, int from)
        {
            var x     = reader.ReadInt32();
            var y     = reader.ReadInt32();
            var key   = reader.ReadString();
            var value = reader.ReadString();

            if (WireMod.Debug)
            {
                WireMod.Instance.Logger.Info($"{from} Received ChangeValue: x {x}, y {y}, value {value}");
            }

            if (Main.netMode == NetmodeID.Server)
            {
                this.SendChangeSetting(-1, from, x, y, key, value);
            }

            var device = WireMod.GetDevice(x, y);

            if (device == null)
            {
                if (WireMod.Debug)
                {
                    WireMod.Instance.Logger.Error($"{from} ChangeValue: No device found at: x {x}, y {y}");
                }
                return;
            }

            device.Settings[key] = value;
        }
Exemple #5
0
        public void ReceiveDisconnect(BinaryReader reader, int from)
        {
            var x = reader.ReadInt32();
            var y = reader.ReadInt32();

            if (WireMod.Debug)
            {
                WireMod.Instance.Logger.Info($"{from} Received Disconnect: x {x}, y {y}");
            }

            var src = WireMod.GetDevicePin(x, y);

            if (src == null)
            {
                if (WireMod.Debug)
                {
                    WireMod.Instance.Logger.Error($"{from} Disconnect: No pin found at: x {x}, y {y}");
                }
                return;
            }

            if (Main.netMode == NetmodeID.Server)
            {
                this.SendDisconnect(-1, from, x, y);
            }

            src.Disconnect();
        }
Exemple #6
0
        public void ReceiveRemove(BinaryReader reader, int from)
        {
            var x = reader.ReadInt32();
            var y = reader.ReadInt32();

            if (WireMod.Debug)
            {
                WireMod.Instance.Logger.Info($"{from} Received Remove: x {x}, y {y}");
            }

            if (!WireMod.Devices.Any(d => d.LocationRect.Intersects(new Rectangle(x, y, 1, 1))))
            {
                if (WireMod.Debug)
                {
                    WireMod.Instance.Logger.Error($"{from} Remove: No device found at: x {x}, y {y}");
                }
            }

            if (Main.netMode == NetmodeID.Server)
            {
                SendRemove(-1, from, x, y);
            }

            WireMod.RemoveDevice(x, y);
        }
Exemple #7
0
        public void ReceiveConnect(BinaryReader reader, int from)
        {
            var srcX  = reader.ReadInt32();
            var srcY  = reader.ReadInt32();
            var destX = reader.ReadInt32();
            var destY = reader.ReadInt32();

            var pointsCount = reader.ReadInt32();
            var points      = new List <Point16>();

            if (pointsCount > 0)
            {
                for (var i = 0; i < pointsCount; i++)
                {
                    var x = reader.ReadInt32();
                    var y = reader.ReadInt32();

                    points.Add(new Point16(x, y));
                }
            }

            if (WireMod.Debug)
            {
                WireMod.Instance.Logger.Info($"{from} Received Connect: srcX {srcX}, srcY {srcY}, destX {destX}, destY {destY}");
            }

            var src = WireMod.GetDevicePin(srcX, srcY);

            if (src == null)
            {
                if (WireMod.Debug)
                {
                    WireMod.Instance.Logger.Error($"{from} Connect: No pin found at: x {srcX}, y {srcY}");
                }
                return;
            }

            var dest = WireMod.GetDevicePin(destX, destY);

            if (dest == null)
            {
                if (WireMod.Debug)
                {
                    WireMod.Instance.Logger.Error($"{from} Connect: No pin found at: x {srcX}, y {srcY}");
                }
                return;
            }

            var wire = new Wire(src, dest, points);

            if (Main.netMode == NetmodeID.Server)
            {
                this.SendConnect(-1, from, srcX, srcY, destX, destY, wire);
            }

            src.Connect(dest, wire);
            dest.Connect(src, wire);
        }
Exemple #8
0
        public void ReceivePlace(BinaryReader reader, int from)
        {
            var name = reader.ReadString();
            var x    = reader.ReadInt32();
            var y    = reader.ReadInt32();

            if (WireMod.Debug)
            {
                WireMod.Instance.Logger.Info($"{from} Received Place: name {name}, x {x}, y {y}");
            }

            var device = (Device)Activator.CreateInstance(Type.GetType("WireMod.Devices." + name) ?? throw new InvalidOperationException("Device not found!"));

            if (!WireMod.CanPlace(device, x, y))
            {
                if (WireMod.Debug)
                {
                    WireMod.Instance.Logger.Error($"{from} Place: Cannot place device at: x {x}, y {y}");
                }
            }

            var settingCount = reader.ReadInt32();
            var settings     = new Dictionary <string, string>();

            for (var i = 0; i < settingCount; i++)
            {
                var key   = reader.ReadString();
                var value = reader.ReadString();

                settings.Add(key, value);
            }

            if (Main.netMode == NetmodeID.Server)
            {
                SendPlace(-1, from, name, settings, x, y);
            }

            device.SetLocation(x - device.Origin.X, y - device.Origin.Y);
            device.Settings = settings;
            WireMod.PlaceDevice(device, x, y);
        }
Exemple #9
0
 public override void HitWire(int i, int j, int type)
 {
     WireMod.GetDevice(i, j)?.OnHitWire(WireMod.GetDevicePin(i, j));
 }
Exemple #10
0
 public WireMod()
 {
     Instance = this;
 }