kdmxp192

JSON to ACE converter

Jan 16th, 2019
273
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 7.71 KB | None | 0 0
  1. using System;
  2. using System.IO;
  3. using System.Collections.Generic;
  4.  
  5. namespace JSONtoACEConverter
  6. {
  7.     class Program
  8.     {
  9.         static void EnsureDirectoryExists(string filePath)
  10.         {
  11.             FileInfo fi = new FileInfo(filePath);
  12.             if (!fi.Directory.Exists)
  13.                 Directory.CreateDirectory(fi.DirectoryName);
  14.         }
  15.  
  16.         static void Main(string[] args)
  17.         {
  18.             if (args != null && args.Length > 0)
  19.             {
  20.                 if (!args[0].Contains(".json"))
  21.                 {
  22.                     FileInfo fileInfo = new FileInfo(args[0]);
  23.                     if (fileInfo.Directory.Exists)
  24.                     {
  25.                         if (ACE.Adapter.Lifestoned.LifestonedLoader.TryLoadWeenies(args[0], out List<Lifestoned.DataModel.Gdle.Weenie> gdleResults))
  26.                         {
  27.                             foreach (var gdleResult in gdleResults)
  28.                             {
  29.                                 if (ACE.Adapter.Lifestoned.LifestonedConverter.TryConvert(gdleResult, out ACE.Database.Models.World.Weenie aceResult))
  30.                                 {
  31.                                     var weenieSQLWriter = new ACE.Database.SQLFormatters.World.WeenieSQLWriter();
  32.  
  33.                                     string folderName = weenieSQLWriter.GetDefaultSubfolder(aceResult);
  34.                                     string fileName = weenieSQLWriter.GetDefaultFileName(aceResult);
  35.  
  36.                                     var substring = fileName.Substring(6);
  37.  
  38.                                     string name = substring;
  39.                                     int charLocation = substring.IndexOf(".", StringComparison.Ordinal);
  40.  
  41.                                     if (charLocation > 0)
  42.                                         name = substring.Substring(0, charLocation);
  43.  
  44.                                     var classID = aceResult.ClassId.ToString("00000");
  45.  
  46.                                     EnsureDirectoryExists(folderName);
  47.  
  48.                                     using (StreamWriter outputFile = new StreamWriter(Path.Combine(folderName, fileName)))
  49.                                     {
  50.                                         // Create the file header
  51.                                         outputFile.WriteLine("--");
  52.                                         outputFile.WriteLine("--Current Database: `ace_world`");
  53.                                         outputFile.WriteLine("--");
  54.                                         outputFile.WriteLine();
  55.                                         outputFile.WriteLine("USE `ace_world`;");
  56.                                         outputFile.WriteLine();
  57.  
  58.                                         outputFile.WriteLine($"/* Weenie - {name} ({classID}) */");
  59.  
  60.                                         weenieSQLWriter.CreateSQLDELETEStatement(aceResult, outputFile);
  61.  
  62.                                         outputFile.WriteLine();
  63.  
  64.                                         weenieSQLWriter.CreateSQLINSERTStatement(aceResult, outputFile);
  65.  
  66.                                         outputFile.WriteLine();
  67.                                     }
  68.                                 }
  69.                                 else
  70.                                     Console.WriteLine($"JSON data conversion failed for {gdleResult.Name}.");
  71.                             }
  72.                         }
  73.                         else
  74.                             Console.WriteLine("JSON files loading failed.");
  75.                     }
  76.                     else
  77.                         Console.WriteLine("Invalid Path.");
  78.                 }
  79.                 else
  80.                 {
  81.                     if (File.Exists(args[0]))
  82.                     {
  83.                         string result;
  84.  
  85.                         switch(args[0])
  86.                         {
  87.                             case "worldspawn.json":
  88.                                 result = GDLEWorldSpawnDataConverter(args[0]);
  89.                                 if (result != null)
  90.                                     Console.WriteLine(result);
  91.                                 break;
  92.                             case "events.json":
  93.                                 break;
  94.                             case "quests.json":
  95.                                 break;
  96.                             case "spells.json":
  97.                                 break;
  98.                             case "recipes.json":
  99.                                 break;
  100.                             default:
  101.                                 result = WeenieDataConverter(args[0]);
  102.                                 if (result != null)
  103.                                     Console.WriteLine(result);
  104.                                 break;
  105.                         }
  106.                     }
  107.                     else
  108.                         Console.WriteLine("Supplied file failed to open.");
  109.                 }
  110.             }
  111.             else
  112.                 Console.WriteLine("No input provided.");
  113.         }
  114.  
  115.         static string WeenieDataConverter(string file)
  116.         {
  117.             if (ACE.Adapter.Lifestoned.LifestonedLoader.TryLoadWeenie(file, out Lifestoned.DataModel.Gdle.Weenie gdleResult))
  118.             {
  119.                 if (ACE.Adapter.Lifestoned.LifestonedConverter.TryConvert(gdleResult, out ACE.Database.Models.World.Weenie aceResult))
  120.                 {
  121.                     var weenieSQLWriter = new ACE.Database.SQLFormatters.World.WeenieSQLWriter();
  122.  
  123.                     string folderName = weenieSQLWriter.GetDefaultSubfolder(aceResult);
  124.                     string fileName = weenieSQLWriter.GetDefaultFileName(aceResult);
  125.  
  126.                     var substring = fileName.Substring(6);
  127.  
  128.                     string name = substring;
  129.                     int charLocation = substring.IndexOf(".", StringComparison.Ordinal);
  130.  
  131.                     if (charLocation > 0)
  132.                         name = substring.Substring(0, charLocation);
  133.  
  134.                     var classID = aceResult.ClassId.ToString("00000");
  135.  
  136.                     EnsureDirectoryExists(folderName);
  137.  
  138.                     using (StreamWriter outputFile = new StreamWriter(Path.Combine(folderName, fileName)))
  139.                     {
  140.                         // Create the file header
  141.                         outputFile.WriteLine("--");
  142.                         outputFile.WriteLine("--Current Database: `ace_world`");
  143.                         outputFile.WriteLine("--");
  144.                         outputFile.WriteLine();
  145.                         outputFile.WriteLine("USE `ace_world`;");
  146.                         outputFile.WriteLine();
  147.  
  148.                         outputFile.WriteLine($"/* Weenie - {name} ({classID}) */");
  149.  
  150.                         weenieSQLWriter.CreateSQLDELETEStatement(aceResult, outputFile);
  151.  
  152.                         outputFile.WriteLine();
  153.  
  154.                         weenieSQLWriter.CreateSQLINSERTStatement(aceResult, outputFile);
  155.  
  156.                         outputFile.WriteLine();
  157.                     }
  158.                 }
  159.                 else
  160.                     return "JSON data conversion failed.";
  161.             }
  162.             else
  163.                 return "JSON file load failed.";
  164.  
  165.             return null;
  166.         }
  167.  
  168.         static string GDLEWorldSpawnDataConverter(string file)
  169.         {
  170.             if (ACE.Adapter.GDLE.GDLELoader.TryLoadWorldSpawnsConverted(file, out List<ACE.Database.Models.World.LandblockInstance> results, out List<ACE.Database.Models.World.LandblockInstanceLink> links))
  171.             {
  172.                 var worldSpawnSQLWriter = new ACE.Database.SQLFormatters.World.LandblockInstanceWriter();
  173.             }
  174.             else
  175.                 return "JSON file load and conversion failed.";
  176.  
  177.             return null;
  178.         }
  179.     }
  180. }
Advertisement
Add Comment
Please, Sign In to add comment