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); } }
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); }
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); }
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; }
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(); }
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); }
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); }
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); }
public override void HitWire(int i, int j, int type) { WireMod.GetDevice(i, j)?.OnHitWire(WireMod.GetDevicePin(i, j)); }
public WireMod() { Instance = this; }