Advertisement
waelwindows92

MainCS

Jan 27th, 2018
349
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 4.27 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Data.SqlTypes;
  4. using System.IO;
  5. using System.Linq;
  6. using System.Runtime.InteropServices;
  7. using BinarySerialization;
  8. using DIVALib.ImageUtils;
  9.  
  10. namespace TXP2DDS
  11. {
  12.     class Program
  13.     {
  14.         static void Main(string[] args)
  15.         {
  16.             //var dir = @"D:\QuickBMS\nez_txp\CLOUD.txp";
  17.             var dir = @"D:\QuickBMS\nez_txp";
  18.             //var dir = @"D:\QuickBMS\nez_txp\mikitm001_tex.bin";
  19.             //var dir = @"D:\QuickBMS\nez_txp\mikitm001_tex_tex06.dds";
  20.             //var dir = args[0];
  21.  
  22.             /* */
  23.             if (File.GetAttributes(dir).HasFlag(FileAttributes.Directory))
  24.             {
  25.                 var ddsPaths = new List<string>();
  26.                 foreach (var filePath in Directory.EnumerateFiles(dir))
  27.                 {
  28.                     using (var file = new FileStream(filePath, FileMode.Open))
  29.                     {
  30.                         switch (Path.GetExtension(filePath))
  31.                         {
  32.                             case ".bin":
  33.                             case ".txp":
  34.                                 TxpToDds(file, filePath);
  35.                                 break;
  36.                             case ".dds":
  37.                                 ddsPaths.Add(filePath);
  38.                                 break;
  39.                         }
  40.                     }
  41.                 }
  42.                 if (ddsPaths.Count > 0) DdsToTxpAtlas(ddsPaths);
  43.             }
  44.             else
  45.             {
  46.                 using (var file = new FileStream(dir, FileMode.Open))
  47.                 {
  48.                     switch (Path.GetExtension(dir))
  49.                     {
  50.                         case ".bin":
  51.                         case ".txp":
  52.                             TxpToDds(file, dir);
  53.                             break;
  54.                         case ".dds":
  55.                             DdsToTxp(file, dir);
  56.                             break;
  57.                     }
  58.                 }
  59.             }
  60.            
  61.             //var serializer = new BinarySerializer();
  62.         }
  63.  
  64.         private static void OnMemberDeserializing(object sender, MemberSerializingEventArgs e)
  65.         {
  66.             Console.CursorLeft = e.Context.Depth * 4;
  67.             Console.WriteLine($"D -Start: {e.MemberName} @ {e.Offset}");
  68.         }
  69.  
  70.         private static void OnMemberDeserialized(object sender, MemberSerializedEventArgs e)
  71.         {
  72.             Console.CursorLeft = e.Context.Depth * 4;
  73.             var value = e.Value ?? "null";
  74.             Console.WriteLine($"D-End: {e.MemberName} ({value}) @ {e.Offset}");
  75.         }
  76.  
  77.         public static void TxpToDds(Stream s, string path)
  78.         {
  79.             var serializer = new BinarySerializer();
  80.             var atlas = serializer.Deserialize<TxpTextureAtlas>(s);
  81.             atlas.SetTextures(s);
  82.             var ddsTex = (List<DdsFile>) atlas;
  83.             var i = 0;
  84.             var texPath = $"{path.Substring(0, path.Length - 4)}_tex";
  85.             foreach (var tex in ddsTex)
  86.             {
  87.                 using (var save = new FileStream($"{texPath}{i++:00}.dds", FileMode.Create)) serializer.Serialize(save, tex);
  88.             }
  89.         }
  90.  
  91.         public static void DdsToTxp(Stream s, string path)
  92.         {
  93.             var serializer = new BinarySerializer();
  94.             var dds = serializer.Deserialize<DdsFile>(s);
  95.             dds.SetMipMaps();
  96.             using (var file = new FileStream(Path.ChangeExtension(path, "dds"), FileMode.Create)) serializer.Serialize(file, dds.ToTxp());
  97.         }
  98.  
  99.         public static void DdsToTxpAtlas(List<string> ddsFiles)
  100.         {
  101.             var atlas = new TxpTextureAtlas();
  102.             var serializer = new BinarySerializer();
  103.             foreach (var path in ddsFiles)
  104.             {
  105.                 using (var ddsFile = new FileStream(path, FileMode.Open))
  106.                 {
  107.                     var dds = serializer.Deserialize<DdsFile>(ddsFile);
  108.                     dds.SetMipMaps();
  109.                     atlas.Textures.Add(dds.ToTxp());
  110.                 }
  111.             }
  112.             atlas.TextureCount = atlas.Textures.Count;
  113.             atlas.SetTextureOffsets();
  114.             using (var txpFile = new FileStream(Path.ChangeExtension(ddsFiles[0], "txp"), FileMode.Create)) serializer.Serialize(txpFile, atlas);
  115.         }
  116.     }
  117. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement