kdmxp192 icon

JSON to ACE converter

kdmxp192 | PRO | 01/17/19 01:27:08 AM UTC | 0 ⭐ | 251 👁️ | Never ⏰ | []
C# |

7.71 KB

|

None

|

0 👍

/

0 👎

using System;
using System.IO;
using System.Collections.Generic;
 
namespace JSONtoACEConverter
{
    class Program
    {
        static void EnsureDirectoryExists(string filePath)
        {
            FileInfo fi = new FileInfo(filePath);
            if (!fi.Directory.Exists)
                Directory.CreateDirectory(fi.DirectoryName);
        }
 
        static void Main(string[] args)
        {
            if (args != null && args.Length > 0)
            {
                if (!args[0].Contains(".json"))
                {
                    FileInfo fileInfo = new FileInfo(args[0]);
                    if (fileInfo.Directory.Exists)
                    {
                        if (ACE.Adapter.Lifestoned.LifestonedLoader.TryLoadWeenies(args[0], out List<Lifestoned.DataModel.Gdle.Weenie> gdleResults))
                        {
                            foreach (var gdleResult in gdleResults)
                            {
                                if (ACE.Adapter.Lifestoned.LifestonedConverter.TryConvert(gdleResult, out ACE.Database.Models.World.Weenie aceResult))
                                {
                                    var weenieSQLWriter = new ACE.Database.SQLFormatters.World.WeenieSQLWriter();
 
                                    string folderName = weenieSQLWriter.GetDefaultSubfolder(aceResult);
                                    string fileName = weenieSQLWriter.GetDefaultFileName(aceResult);
 
                                    var substring = fileName.Substring(6);
 
                                    string name = substring;
                                    int charLocation = substring.IndexOf(".", StringComparison.Ordinal);
 
                                    if (charLocation > 0)
                                        name = substring.Substring(0, charLocation);
 
                                    var classID = aceResult.ClassId.ToString("00000");
 
                                    EnsureDirectoryExists(folderName);
 
                                    using (StreamWriter outputFile = new StreamWriter(Path.Combine(folderName, fileName)))
                                    {
                                        // Create the file header
                                        outputFile.WriteLine("--");
                                        outputFile.WriteLine("--Current Database: `ace_world`");
                                        outputFile.WriteLine("--");
                                        outputFile.WriteLine();
                                        outputFile.WriteLine("USE `ace_world`;");
                                        outputFile.WriteLine();
 
                                        outputFile.WriteLine($"/* Weenie - {name} ({classID}) */");
 
                                        weenieSQLWriter.CreateSQLDELETEStatement(aceResult, outputFile);
 
                                        outputFile.WriteLine();
 
                                        weenieSQLWriter.CreateSQLINSERTStatement(aceResult, outputFile);
 
                                        outputFile.WriteLine();
                                    }
                                }
                                else
                                    Console.WriteLine($"JSON data conversion failed for {gdleResult.Name}.");
                            }
                        }
                        else
                            Console.WriteLine("JSON files loading failed.");
                    }
                    else
                        Console.WriteLine("Invalid Path.");
                }
                else
                {
                    if (File.Exists(args[0]))
                    {
                        string result;
 
                        switch(args[0])
                        {
                            case "worldspawn.json":
                                result = GDLEWorldSpawnDataConverter(args[0]);
                                if (result != null)
                                    Console.WriteLine(result);
                                break;
                            case "events.json":
                                break;
                            case "quests.json":
                                break;
                            case "spells.json":
                                break;
                            case "recipes.json":
                                break;
                            default:
                                result = WeenieDataConverter(args[0]);
                                if (result != null)
                                    Console.WriteLine(result);
                                break;
                        }
                    }
                    else
                        Console.WriteLine("Supplied file failed to open.");
                }
            }
            else
                Console.WriteLine("No input provided.");
        }
 
        static string WeenieDataConverter(string file)
        {
            if (ACE.Adapter.Lifestoned.LifestonedLoader.TryLoadWeenie(file, out Lifestoned.DataModel.Gdle.Weenie gdleResult))
            {
                if (ACE.Adapter.Lifestoned.LifestonedConverter.TryConvert(gdleResult, out ACE.Database.Models.World.Weenie aceResult))
                {
                    var weenieSQLWriter = new ACE.Database.SQLFormatters.World.WeenieSQLWriter();
 
                    string folderName = weenieSQLWriter.GetDefaultSubfolder(aceResult);
                    string fileName = weenieSQLWriter.GetDefaultFileName(aceResult);
 
                    var substring = fileName.Substring(6);
 
                    string name = substring;
                    int charLocation = substring.IndexOf(".", StringComparison.Ordinal);
 
                    if (charLocation > 0)
                        name = substring.Substring(0, charLocation);
 
                    var classID = aceResult.ClassId.ToString("00000");
 
                    EnsureDirectoryExists(folderName);
 
                    using (StreamWriter outputFile = new StreamWriter(Path.Combine(folderName, fileName)))
                    {
                        // Create the file header
                        outputFile.WriteLine("--");
                        outputFile.WriteLine("--Current Database: `ace_world`");
                        outputFile.WriteLine("--");
                        outputFile.WriteLine();
                        outputFile.WriteLine("USE `ace_world`;");
                        outputFile.WriteLine();
 
                        outputFile.WriteLine($"/* Weenie - {name} ({classID}) */");
 
                        weenieSQLWriter.CreateSQLDELETEStatement(aceResult, outputFile);
 
                        outputFile.WriteLine();
 
                        weenieSQLWriter.CreateSQLINSERTStatement(aceResult, outputFile);
 
                        outputFile.WriteLine();
                    }
                }
                else
                    return "JSON data conversion failed.";
            }
            else
                return "JSON file load failed.";
 
            return null;
        }
 
        static string GDLEWorldSpawnDataConverter(string file)
        {
            if (ACE.Adapter.GDLE.GDLELoader.TryLoadWorldSpawnsConverted(file, out List<ACE.Database.Models.World.LandblockInstance> results, out List<ACE.Database.Models.World.LandblockInstanceLink> links))
            {
                var worldSpawnSQLWriter = new ACE.Database.SQLFormatters.World.LandblockInstanceWriter();
            }
            else
                return "JSON file load and conversion failed.";
 
            return null;
        }
    }
}

Comments