Пример #1
0
        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);
        }
Пример #2
0
        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);
            }
        }