Example #1
0
        private TagCompound AfterIO(TagCompound tag)
        {
            var stream = new MemoryStream();

            TagIO.ToStream(tag, stream);
            stream.Position = 0;
            return(TagIO.FromStream(stream));
        }
        /// <summary>
        /// Send the TagCompound in binary over the network to the client, make thing easier
        /// </summary>
        /// <param name="writer"></param>
        /// <param name="lightSend"></param>
        public sealed override void NetSend(BinaryWriter writer, bool lightSend)
        {
            MemoryStream stream = new MemoryStream(65536);

            EnergyContainer.WriteTagCompound(tag);
            TagIO.ToStream(tag, stream, true);
            writer.Write((ushort)stream.Length);
            writer.Write(stream.ToArray());
        }
Example #3
0
        public override void NetSend(BinaryWriter writer, bool lightSend)
        {
            MemoryStream memoryStream = new MemoryStream(65536);

            WriteDataToTagCompound();
            storage.WriteTagCompound(this.tag);
            TagIO.ToStream(this.tag, (Stream)memoryStream, true);
            writer.Write((ushort)memoryStream.Length);
            writer.Write(memoryStream.ToArray());
        }
Example #4
0
 public override void NetSend(BinaryWriter writer)
 {
     using (MemoryStream stream = new MemoryStream())
     {
         TagIO.ToStream(Save(), stream);
         byte[] data = stream.ToArray();
         writer.Write(data.Length);
         writer.Write(data);
     }
 }
Example #5
0
        public static string SaveTilesToBase64(Tile[,] tiles)
        {
            int oldX = Main.maxTilesX;
            int oldY = Main.maxTilesY;

            Tile[,] oldTiles = Main.tile;
            string base64result = "";

            try
            {
                Main.maxTilesX = tiles.GetLength(0);
                Main.maxTilesY = tiles.GetLength(1);
                Main.tile      = tiles;
                if (SaveTilesMethodInfo == null)
                {
                    SaveTilesMethodInfo = typeof(Main).Assembly.GetType("Terraria.ModLoader.IO.TileIO").GetMethod("SaveTiles", BindingFlags.Static | BindingFlags.NonPublic);
                }
                if (SaveWorldTilesVanillaMethodInfo == null)
                {
                    SaveWorldTilesVanillaMethodInfo = typeof(Main).Assembly.GetType("Terraria.IO.WorldFile").GetMethod("SaveWorldTiles", BindingFlags.Static | BindingFlags.NonPublic);
                }

                TagCompound ModTileData = (TagCompound)SaveTilesMethodInfo.Invoke(null, null);

                byte[] array = null;
                using (MemoryStream memoryStream = new MemoryStream(7000000))
                {
                    using (BinaryWriter binaryWriter = new BinaryWriter(memoryStream))
                    {
                        int rval = (int)SaveWorldTilesVanillaMethodInfo.Invoke(null, new object[] { binaryWriter });
                        array = memoryStream.ToArray();
                    }
                }

                TagCompound result = new TagCompound()
                {
                    ["d"] = new Point16(Main.maxTilesX, Main.maxTilesY),
                    ["v"] = array,
                    ["m"] = ModTileData,
                };
                MemoryStream ms = new MemoryStream();
                TagIO.ToStream(result, ms, true);
                base64result = Convert.ToBase64String(ms.ToArray());
            }
            catch { }
            Main.maxTilesX = oldX;
            Main.maxTilesY = oldY;
            Main.tile      = oldTiles;
            return(base64result);
        }