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()); }
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()); }
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); } }
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); }