private void CompileTweakFiles(Cp77Project cp77Proj)
        {
            try
            {
                Directory.Delete(cp77Proj.PackedTweakDirectory, true);
            }
            catch (Exception e)
            {
                _loggerService.Error(e);
            }

            var tweakFiles = Directory.GetFiles(cp77Proj.TweakDirectory, "*.tweak", SearchOption.AllDirectories);

            foreach (var f in tweakFiles)
            {
                var text         = File.ReadAllText(f);
                var folder       = Path.GetDirectoryName(Path.GetRelativePath(cp77Proj.TweakDirectory, f));
                var outDirectory = Path.Combine(cp77Proj.PackedTweakDirectory, folder);
                if (!Directory.Exists(outDirectory))
                {
                    Directory.CreateDirectory(outDirectory);
                }
                var filename = Path.GetFileNameWithoutExtension(f) + ".bin";
                var outPath  = Path.Combine(outDirectory, filename);

                try
                {
                    if (!Serialization.Deserialize(text, out var dict))
                    {
                        continue;
                    }
                    var db = new TweakDB();
                    //flats
                    foreach (var(key, value) in dict.Flats)
                    {
                        db.Add(key, value);
                    }
                    //groups
                    foreach (var(key, value) in dict.Groups)
                    {
                        db.Add(key, value);
                    }

                    db.Save(outPath);
                }
                catch (Exception e)
                {
                    _loggerService.Error(e);
                    continue;
                }
            }
        }
Beispiel #2
0
        /// <summary>
        /// Converts .tweak files in paths provided into TweakDB .bin files.
        /// </summary>
        /// <param name="path">Folder with .tweak files (defaults to current directory)</param>
        /// <param name="outpath">Folder to export .bin files (defaults to current directory)</param>
        /// <param name="keep">Keep existing .bin folder, if specified</param>
        public void TweakTask(string path, string outpath, bool keep)
        {
            if (string.IsNullOrEmpty(path))
            {
                path = @".\";
            }
            try
            {
                if (string.IsNullOrEmpty(outpath))
                {
                    outpath = @".\";
                }
                else
                {
                    if (keep)
                    {
                        if (!Directory.Exists(outpath))
                        {
                            Directory.CreateDirectory(outpath);
                        }
                    }
                    else
                    {
                        if (Directory.Exists(outpath))
                        {
                            Directory.Delete(outpath, true);
                        }
                        Directory.CreateDirectory(outpath);
                    }
                }
            }
            catch (Exception e)
            {
                _loggerService.Error(e);
                return;
            }
            var tweakFiles = Directory.GetFiles(path, "*.tweak", SearchOption.AllDirectories);

            foreach (var f in tweakFiles)
            {
                var text     = File.ReadAllText(f);
                var filename = Path.GetFileNameWithoutExtension(f) + ".bin";
                var outFile  = Path.Combine(outpath, filename);

                try
                {
                    if (!Serialization.Deserialize(text, out var dict))
                    {
                        continue;
                    }
                    var db = new TweakDB();
                    //flats
                    foreach (var(key, value) in dict.Flats)
                    {
                        db.Add(key, value);
                    }
                    //groups
                    foreach (var(key, value) in dict.Groups)
                    {
                        db.Add(key, value);
                    }

                    db.Save(outFile);
                    _loggerService.Success($"Converted {f} to {outFile}.");
                }
                catch (Exception e)
                {
                    _loggerService.Error(e);
                    continue;
                }
            }
        }