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 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 results, out List links)) { var worldSpawnSQLWriter = new ACE.Database.SQLFormatters.World.LandblockInstanceWriter(); } else return "JSON file load and conversion failed."; return null; } } }