public static void WriteFont(Stream mainStream, Stream lstStream, Stream bitmapStream) { BinaryWriter binaryWriter = new BinaryWriter(mainStream); StreamReader streamReader = new StreamReader(lstStream, Encoding.UTF8); int num = int.Parse(streamReader.ReadLine()); binaryWriter.Write(num); for (int i = 0; i < num; i++) { string[] data = streamReader.ReadLine().Split('\t'); binaryWriter.Write(char.Parse(data[0])); binaryWriter.Write(float.Parse(data[1])); binaryWriter.Write(float.Parse(data[2])); binaryWriter.Write(float.Parse(data[3])); binaryWriter.Write(float.Parse(data[4])); binaryWriter.Write(float.Parse(data[5])); binaryWriter.Write(float.Parse(data[6])); binaryWriter.Write(float.Parse(data[7])); } binaryWriter.Write(float.Parse(streamReader.ReadLine())); string[] floatItem = streamReader.ReadLine().Split('\t'); binaryWriter.Write(float.Parse(floatItem[0])); binaryWriter.Write(float.Parse(floatItem[1])); binaryWriter.Write(float.Parse(streamReader.ReadLine())); binaryWriter.Write(char.Parse(streamReader.ReadLine())); Texture2DHandler.WriteTexture2D(mainStream, bitmapStream); }
public Stream Load(string fileName, string typeName) { try { MemoryStream memoryStream = new MemoryStream(); FileStream fileStream; switch (typeName) { case "System.String": fileStream = File.OpenRead(fileName + ".txt"); TextHandler.WriteText(memoryStream, fileStream); break; case "System.Xml.Linq.XElement": fileStream = File.OpenRead(fileName + ".xml"); TextHandler.WriteText(memoryStream, fileStream); break; case "Engine.Media.StreamingSource": fileStream = File.OpenRead(fileName + ".ogg"); fileStream.CopyTo(memoryStream); break; case "Engine.Graphics.Model": fileStream = File.OpenRead(fileName + ".dae"); ModelHandler.WriteModel(memoryStream, fileStream); //fileStream.CopyTo(memoryStream); break; case "Engine.Graphics.Shader": fileStream = File.OpenRead(fileName + ".shader"); fileStream.CopyTo(memoryStream); break; case "Engine.Audio.SoundBuffer": fileStream = File.OpenRead(fileName + ".wav"); SoundHandler.WriteSound(memoryStream, fileStream); break; case "Engine.Graphics.Texture2D": fileStream = File.OpenRead(fileName + ".png"); Texture2DHandler.WriteTexture2D(memoryStream, fileStream); break; case "Engine.Media.BitmapFont": try { fileStream = File.OpenRead(fileName + ".lst"); } catch { fileStream = File.OpenRead(fileName + ".font"); fileStream.CopyTo(memoryStream); break; } FileStream bitmapStream = File.OpenRead(fileName + ".png"); FontHandler.WriteFont(memoryStream, fileStream, bitmapStream); bitmapStream.Dispose(); break; default: throw new Exception("发现不能识别的文件 :" + fileName + "\n文件类型 :" + typeName); } fileStream.Dispose(); memoryStream.Position = 0L; return(memoryStream); } catch (Exception e) { throw new Exception("文件写入错误 :" + fileName + "\t类型 :" + typeName + "\n具体错误信息 :" + e.Message); } }