示例#1
0
        public static void Main(string[] args)
        {
            string filePath = args[0];
            //string palettePath = args[1];
            /*string fontPath = args[1];*/

            //Model model = ModelStorage.LoadFromFile(filePath);

            /*List<Model> models = new List<Model>();
             * string[] files = Directory.GetFiles(filePath);
             * for (int i = 0; i < files.Length; ++i)
             * {
             * if (Path.GetExtension(files[i]) != ".mod")
             *  continue;
             *
             * Model model = ModelStorage.LoadFromFile(files[i]);
             * if (model != null)
             *  models.Add(model);
             * }
             *
             * //int end = 0;
             *
             * string folderPath = args[1];
             * Directory.CreateDirectory(folderPath);
             *
             * for (int i = 0; i < models.Count; ++i)
             * {
             * string path = Path.Combine(folderPath, models[i].Name + ".mod");
             * ModelStorage.SaveToFile(path, models[i]);
             * }
             *
             * int end = 0;*/

            /*List<string> lines = new List<string>();
             * for (int i = 0; i < models.Count; ++i)
             * {
             * ModelBlock[] blocks = models[i].Blocks;
             * for (int j = 0; j < blocks.Length; ++j)
             * {
             *  List<ModelBlock> subBlocks = blocks[j].SubBlocks;
             *  for (int k = 0; k < subBlocks.Count; ++k)
             *  {
             *    if (subBlocks[k].Type != ModelBlock.BlockType.TxtV)
             *      continue;
             *
             *    string text = ((TxtVModelBlock)subBlocks[k]).Text;
             *    if (!string.IsNullOrEmpty(text))
             *    {
             *      text = text.Replace("\n", "\\n");
             *      lines.Add(text);
             *    }
             *  }
             * }
             * }
             *
             * File.WriteAllLines("extracted_text.txt", lines.ToArray());*/

            // menu.dat extraction

            /*MediaStorage media = MediaStorage.ReadFromFile(palettePath);
             * media.ExtractTo(Environment.CurrentDirectory);*/

            // media.dat extraction

            /*MediaStorage media = MediaStorage.ReadFromFile(filePath);
             * media.ExtractTo(Environment.CurrentDirectory);*/

            // clr parsing
            //Palette palette = PaletteStorage.LoadFromFile(filePath);
            //PaletteStorage.SaveToFile(filePath + ".new.clr", palette);

            // zft parsing
            //Font font = FontStorage.LoadFromFile(filePath);
            //FontStorage.SaveToFile(filePath + ".new.zft", font);

            // zim parsing
            //Texture texture = TextureStorage.LoadFromFile(filePath);
            //TextureStorage.SaveToFile(filePath + ".new.zim", texture);
            Entity entity = EntityStorage.LoadFromFile(filePath);

            EntityStorage.SaveToFile(filePath + ".new.zim", entity);

            //System.Drawing.Bitmap spriteImage = sprite.CreateBitmap(palette);
            //spriteImage.Save("test.bmp", System.Drawing.Imaging.ImageFormat.Bmp);

            /*for (int ii = 0; ii < (palette.Lookups.Length / palette.Entries.Length); ++ii)
             * {
             * ColorPalette bitmapPalette = font.Texture.Palette;
             * for (int j = 0; j < bitmapPalette.Entries.Length; ++j)
             * {
             *  int index = palette.Lookups[j + palette.Entries.Length * ii];
             *  int value = palette.Entries[index];
             *
             *  int red = (value & 0xFF);
             *  int green = ((value >> 8) & 0xFF);
             *  int blue = ((value >> 16) & 0xFF);
             *  int alpha = ((value >> 32) & 0xFF) == 0 ? 0 : 255;
             *
             *  System.Drawing.Color color = System.Drawing.Color.FromArgb(alpha, red, green, blue);
             *  bitmapPalette.Entries[j] = color;
             * }
             * font.Texture.Palette = bitmapPalette;
             *
             * Directory.CreateDirectory(string.Format("{0}", Path.GetFileNameWithoutExtension(fontPath)));
             * font.Texture.Save(string.Format("{0}/pal{1}.png", Path.GetFileNameWithoutExtension(fontPath), ii), ImageFormat.Png);
             * }*/

            // zim (sprite) parsing

            /*string[] sprites = Directory.GetFiles(Path.GetDirectoryName(filePath));
             * for (int i = 0; i < sprites.Length; ++i)
             * {
             * if (Path.GetExtension(sprites[i]) != ".zim")
             *  continue;
             *
             * Sprite sprite = ImageStorage.ReadFromFile(sprites[i]);
             * //Bitmap bitmap = sprite.CreateBitmap(palette);
             * //bitmap.Save(string.Format("{0}.bmp", Path.GetFileNameWithoutExtension(sprites[i])), ImageFormat.Bmp);
             * }*/
        }