static void LoadTextures(PrismMap map, BinaryReader file) { #region VERSION 0+ if (map.fileStructureVersion >= 0) { int n = file.ReadInt32(); for (int i = 0; i < n; i++) { string name = file.ReadString(); int bitmapBytes = file.ReadInt32(); Bitmap bitmap = new Bitmap(new MemoryStream(file.ReadBytes(bitmapBytes))); PrismTexture set = new PrismTexture(name, bitmap); int tileN = file.ReadInt32(); for (int j = 0; j < tileN; j++) { string tileName = file.ReadString(); RectangleF rect = new RectangleF(file.ReadSingle(), file.ReadSingle(), file.ReadSingle(), file.ReadSingle()); set.AddTile(new PrismTexture.Tile(tileName, rect, set)); } map.AddTexture(set); } } #endregion }
static void SaveTextures(PrismMap map, BinaryWriter file) { file.Write(map.Textures.Count); foreach (PrismTexture t in map.Textures) { file.Write(t.Name); byte[] imageData; ImageConverter converter = new ImageConverter(); imageData = (byte[])converter.ConvertTo(t.Bitmap, typeof(byte[])); file.Write(imageData.Length); file.Write(imageData); file.Write(t.Tiles.Count); foreach (PrismTexture.Tile tile in t.Tiles) { file.Write(tile.Name); file.Write(tile.UV.X); file.Write(tile.UV.Y); file.Write(tile.UV.Width); file.Write(tile.UV.Height); } } }
static void LoadLayers(PrismMap map, BinaryReader file) { #region VERSION 0+ { map.RootLayerNode.ReadFromBuffer(file, map); } #endregion }
public override void ReadFromBuffer(BinaryReader reader, PrismMap map) { int meshes = reader.ReadInt32(); for (int i = 0; i < meshes; i++) { PrismMesh mesh = new PrismMesh(reader, map); Meshes.Add(mesh); } }
public override void WriteToBuffer(BinaryWriter writer, PrismMap map) { writer.Write(true); writer.Write(Name); writer.Write(Meshes.Count); foreach (PrismMesh m in Meshes) { m.WriteToBuffer(writer, map); } }
public static PrismMap LoadMapFrom(string filename) { using (BinaryReader file = new BinaryReader(new FileStream(filename, FileMode.Open))) { PrismMap map = new PrismMap(file.ReadUInt32()); LoadTextures(map, file); LoadLayers(map, file); return(map); } }
public virtual void WriteToBuffer(BinaryWriter writer, PrismMap map) { if (parent != null) { writer.Write(false); writer.Write(name); } writer.Write(Nodes.Count); foreach (PrismLayerNode n in Nodes) { n.WriteToBuffer(writer, map); } }
public static void SaveMapTo(PrismMap map, string filename) { using (BinaryWriter file = new BinaryWriter(new FileStream(filename, FileMode.Create))) { //WRITE FILE STRUCTURE VERSION !!!!!!!!!!!!!!!!!! file.Write(map.fileStructureVersion); //---------------------------------------------- //SAVING STUFF SaveMapInfo(map, file); SaveTextures(map, file); SaveLayers(map, file); file.Flush(); } }
public void ReadFrombuffer(BinaryReader reader, PrismMap map) { int vertices = reader.ReadInt32(); vertexPosition = new Vector2[vertices]; vertexColor = new ColorHSL[vertices]; for (int i = 0; i < vertices; i++) { vertexPosition[i] = new Vector2(reader.ReadSingle(), reader.ReadSingle()); vertexColor[i] = new ColorHSL(reader.ReadSingle(), reader.ReadSingle(), reader.ReadSingle()); } if (reader.ReadBoolean()) { tile = map.Textures[reader.ReadInt32()].Tiles[reader.ReadInt32()]; } }
public void WriteToBuffer(BinaryWriter writer, PrismMap map) { writer.Write(vertexPosition.Length); for (int i = 0; i < vertexPosition.Length; i++) { writer.Write(vertexPosition[i].X); writer.Write(vertexPosition[i].Y); writer.Write(vertexColor[i].H); writer.Write(vertexColor[i].S); writer.Write(vertexColor[i].L); } writer.Write(Tile != null); if (Tile != null) { writer.Write(map.Textures.IndexOf(Tile.Texture)); writer.Write(Tile.Index); } }
public virtual void ReadFromBuffer(BinaryReader reader, PrismMap map) { int nodes = reader.ReadInt32(); for (int i = 0; i < nodes; i++) { bool isLayer = reader.ReadBoolean(); PrismLayerNode node; if (isLayer) { node = new PrismLayer(reader.ReadString(), this); } else { node = new PrismLayerNode(reader.ReadString(), this); } node.ReadFromBuffer(reader, map); } }
public PrismMesh(BinaryReader reader, PrismMap map) { ReadFrombuffer(reader, map); }
static void SaveLayers(PrismMap map, BinaryWriter file) { PrismLayerNode node = map.RootLayerNode; node.WriteToBuffer(file, map); }
static void SaveMapInfo(PrismMap map, BinaryWriter file) { //file.Write(map.fileStructureVersion); }