Implement a truly terrible bulk mod editing mode.

This commit is contained in:
Brant Martin
2019-02-25 13:59:13 -05:00
parent 642186678e
commit a673848089
2 changed files with 39 additions and 1 deletions

View File

@@ -25,6 +25,7 @@ using Torch.API.Managers;
using Torch.Server.ViewModels;
using Torch.Server.Annotations;
using Torch.Collections;
using Torch.Views;
namespace Torch.Server.Views
{
@@ -244,5 +245,40 @@ namespace Torch.Server.Views
else if( e.AddedCells.Count > 0)
ModList.SelectedItem = e.AddedCells[0].Item;
}
private void BulkButton_OnClick(object sender, RoutedEventArgs e)
{
var editor = new CollectionEditor();
//let's see just how poorly we can do this
var modList = ((MtObservableList<ModItemInfo>)DataContext).ToList();
var idList = modList.Select(m => m.PublishedFileId).ToList();
var tasks = new List<Task>();
//blocking
editor.Edit<ulong>(idList, "Mods");
modList.RemoveAll(m => !idList.Contains(m.PublishedFileId));
foreach (var id in idList)
{
if (!modList.Any(m => m.PublishedFileId == id))
{
var mod = new ModItemInfo(new MyObjectBuilder_Checkpoint.ModItem(id));
tasks.Add(Task.Run(mod.UpdateModInfoAsync));
modList.Add(mod);
}
}
_instanceManager.DedicatedConfig.Mods.Clear();
foreach (var mod in modList)
_instanceManager.DedicatedConfig.Mods.Add(mod);
if (tasks.Any())
Task.WaitAll(tasks.ToArray());
Dispatcher.Invoke(() =>
{
_instanceManager.DedicatedConfig.Save();
});
}
}
}