Exemplo n.º 1
0
        public bool SaveMergedMod(MergedMod mod)
        {
            try
            {
                var path = Path.Combine(_gameConfiguration.ModsDir, mod.FileName);

                var descPath = Path.Combine(_gameConfiguration.ModsDir, $"{mod.FileName}.mod");

                if (Directory.Exists(path))
                {
                    if (!_notificationService.RequestConfirmation("Overwrite existing mod?", "Overwrite mod"))
                    {
                        return(true);
                    }
                    foreach (var file in Directory.EnumerateFiles(path, "*.*", SearchOption.AllDirectories))
                    {
                        File.Delete(file);
                    }

                    Directory.Delete(path, true);
                    File.Delete(descPath);
                }

                var contents = string.Join(Environment.NewLine, mod.ToDescriptor());

                File.WriteAllText(descPath, contents);

                using (var saver = new DiskFileSaver(path))
                {
                    foreach (var modFile in mod.Files)
                    {
                        //var dir = Path.Combine(path, modFile.Directory);
                        //if (!Directory.Exists(dir))
                        //{
                        //    Directory.CreateDirectory(dir);
                        //}
                        //var fn = Path.Combine(path, modFile.Path);

                        modFile.Save(saver);
                    }
                }
            }
            catch (Exception ex)
            {
                Log.Error(ex, "Error saving mod!");
                return(false);
            }

            return(true);
        }
Exemplo n.º 2
0
        public ModMergeContext(IEnumerable <ModConflictDescriptor> source, Action <ModMergeContext> save)
        {
            Result = new MergedMod("Merge result", source);

            modFiles = Result.Files;

            LeftBefore  = ReactiveCommand.Create <ModFileToMerge>(DoBefore);
            LeftAfter   = ReactiveCommand.Create <ModFileToMerge>(DoAfter);
            RightBefore = ReactiveCommand.Create <ModFileToMerge>(DoBefore);
            RightAfter  = ReactiveCommand.Create <ModFileToMerge>(DoAfter);

            saveAction = save;
            Save       = ReactiveCommand.Create(DoSave, _canSave);

            _rootDirectory = ModDirectory.CreateRoot(Result.ToModConflictDescriptor());
        }
Exemplo n.º 3
0
 public bool SaveMergedMod(MergedMod mod)
 {
     return(_installedModManager.SaveMergedMod(mod));
 }