예제 #1
0
        public static void ReceiveCablePlacement(BinaryReader reader, int sender)
        {
            TagCompound tag      = TagIO.Read(reader);
            Point16     position = tag.Get <Point16>("Position");
            string      name     = tag.GetString("Name");

            Cable cable = new Cable();

            cable.SetDefaults(name);
            cable.position = position;
            cable.layer    = PTWorld.Instance.layer;
            cable.grid     = new CableGrid
            {
                energy = new EnergyStorage(cable.MaxIO * 2, cable.MaxIO),
                tiles  = new List <Cable> {
                    cable
                }
            };
            PTWorld.Instance.layer.Add(position, cable);

            cable.Merge();
            cable.Frame();

            foreach (Cable merge in Cable.sides.Select(x => x + position).Where(PTWorld.Instance.layer.ContainsKey).Select(x => PTWorld.Instance.layer[x]).Where(x => x.name == name))
            {
                merge.Frame();
            }

            if (Main.netMode == NetmodeID.Server)
            {
                SendCablePlacement(cable, sender);
            }
        }