Ejemplo n.º 1
0
        private async void cmd6LandblocksParse_Click(object sender, EventArgs e)
        {
            cmd6LandblocksParse.Enabled = false;

            progressBarLandblocks.Style = ProgressBarStyle.Marquee;
            progressBarLandblocks.Value = 0;

            await Task.Run(() =>
            {
                var landblockInstances = landBlockData.ConvertToACE();
                LandblockSQLWriter.WriteFiles(landblockInstances, Settings.Default["OutputFolder"] + "\\6 LandBlockExtendedData\\SQL\\", weenieNames);
            });

            progressBarLandblocks.Style = ProgressBarStyle.Continuous;
            progressBarLandblocks.Value = 100;

            cmd6LandblocksParse.Enabled = true;
        }
Ejemplo n.º 2
0
        public static bool json2sql_landblock(FileInfo fi, string[] lines = null, DirectoryInfo outputFolder = null)
        {
            // read json into gdle spawnmap
            Landblock result = null;

            if (lines == null)
            {
                if (!GDLELoader.TryLoadLandblock(fi.FullName, out result))
                {
                    Console.WriteLine($"Failed to parse {fi.FullName}");
                    return(false);
                }
            }
            else
            {
                if (!GDLELoader.TryLoadLandblock(lines, out result))
                {
                    Console.WriteLine($"Failed to parse landblock");
                    return(false);
                }
            }

            // convert to sql landblock instances
            if (!GDLEConverter.TryConvert(result, out var landblockInstances, out var landblockInstanceLinks))
            {
                Console.WriteLine($"Failed to convert {fi.FullName}");
                return(false);
            }

            // link up instances
            // TODO: move this to TryConvert
            foreach (var link in landblockInstanceLinks)
            {
                var parent = landblockInstances.FirstOrDefault(i => i.Guid == link.ParentGuid);
                if (parent == null)
                {
                    Console.WriteLine($"Couldn't find parent guid for {link.ParentGuid:X8}");
                    continue;
                }
                parent.LandblockInstanceLink.Add(link);

                var child = landblockInstances.FirstOrDefault(i => i.Guid == link.ChildGuid);
                if (child == null)
                {
                    Console.WriteLine($"Couldn't find child guid for {link.ChildGuid:X8}");
                    continue;
                }
                child.IsLinkChild = true;
            }

            // output to sql
            try
            {
                if (LandblockSQLWriter == null)
                {
                    LandblockSQLWriter             = new LandblockSQLWriter();
                    LandblockSQLWriter.WeenieNames = IDToString.Reader.GetIDToNames("WeenieName.txt");
                }

                foreach (var landblockInstance in landblockInstances)
                {
                    if (landblockInstance.LastModified == DateTime.MinValue)
                    {
                        landblockInstance.LastModified = DateTime.UtcNow;
                    }
                }

                foreach (var landblockInstanceLink in landblockInstanceLinks)
                {
                    if (landblockInstanceLink.LastModified == DateTime.MinValue)
                    {
                        landblockInstanceLink.LastModified = DateTime.UtcNow;
                    }
                }

                StreamWriter sqlFile      = null;
                string       sqlFilename  = null;
                MemoryStream memoryStream = null;

                if (lines == null)
                {
                    sqlFilename = LandblockSQLWriter.GetDefaultFileName(landblockInstances[0]);

                    var sqlFolder = outputFolder ?? fi.Directory;

                    sqlFile = new StreamWriter(sqlFolder.FullName + Path.DirectorySeparatorChar + sqlFilename);
                }
                else
                {
                    memoryStream = new MemoryStream();
                    sqlFile      = new StreamWriter(memoryStream);
                }

                LandblockSQLWriter.CreateSQLDELETEStatement(landblockInstances, sqlFile);
                sqlFile.WriteLine();

                LandblockSQLWriter.CreateSQLINSERTStatement(landblockInstances, sqlFile);

                sqlFile.Close();

                if (lines != null)
                {
                    Output = memoryStream.ToString();
                    return(true);
                }

                Console.WriteLine($"Converted {fi.FullName} to {fi.DirectoryName}{Path.DirectorySeparatorChar}{sqlFilename}");
            }
            catch (Exception e)
            {
                Console.WriteLine(e);
                Console.WriteLine($"Failed to convert {fi.FullName}");
                return(false);
            }

            return(true);
        }