mirror of
https://github.com/Strongleong/ScrapModLoader.git
synced 2024-08-15 00:03:19 +00:00
Merge eabb4dca02
into 4f80b72603
This commit is contained in:
commit
f27d8938fc
3 changed files with 70 additions and 10 deletions
|
@ -6,6 +6,7 @@ using System.Windows;
|
||||||
using System.Windows.Controls;
|
using System.Windows.Controls;
|
||||||
using System.Windows.Documents;
|
using System.Windows.Documents;
|
||||||
using System.Windows.Input;
|
using System.Windows.Input;
|
||||||
|
using System.Text;
|
||||||
|
|
||||||
namespace ScrapModLoader
|
namespace ScrapModLoader
|
||||||
{
|
{
|
||||||
|
@ -21,6 +22,7 @@ namespace ScrapModLoader
|
||||||
public MainWindow()
|
public MainWindow()
|
||||||
{
|
{
|
||||||
modsLauncher = new ModsLauncher();
|
modsLauncher = new ModsLauncher();
|
||||||
|
modsLauncher.ModsLoaded += ModsLauncher_ModsLoaded;
|
||||||
InitializeComponent();
|
InitializeComponent();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -187,6 +189,22 @@ namespace ScrapModLoader
|
||||||
Close();
|
Close();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void ModsLauncher_ModsLoaded(ModLoadedEventArgs eventArgs)
|
||||||
|
{
|
||||||
|
if (eventArgs.UnsupportedMods.Count != 0)
|
||||||
|
{
|
||||||
|
StringBuilder unsupportedModsBuilder = new StringBuilder();
|
||||||
|
unsupportedModsBuilder.AppendLine("Next mod is unsupported and don't be loaded:");
|
||||||
|
unsupportedModsBuilder.AppendLine();
|
||||||
|
foreach (ScrapMod mod in eventArgs.UnsupportedMods)
|
||||||
|
{
|
||||||
|
unsupportedModsBuilder.AppendLine(mod.Name);
|
||||||
|
}
|
||||||
|
|
||||||
|
MessageBox.Show(unsupportedModsBuilder.ToString(), "Warning", MessageBoxButton.OK, MessageBoxImage.Warning);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private void ScraplandVersion_SelectionChanged(Object sender, SelectionChangedEventArgs e) =>
|
private void ScraplandVersion_SelectionChanged(Object sender, SelectionChangedEventArgs e) =>
|
||||||
modsLauncher.SelectedGameVersion = ScraplandVersion.SelectedIndex == 0 ? "1.0" : "1.1";
|
modsLauncher.SelectedGameVersion = ScraplandVersion.SelectedIndex == 0 ? "1.0" : "1.1";
|
||||||
}
|
}
|
||||||
|
|
24
ScrapModLoader/ModLoadedEventArgs.cs
Normal file
24
ScrapModLoader/ModLoadedEventArgs.cs
Normal file
|
@ -0,0 +1,24 @@
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Collections.ObjectModel;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
namespace ScrapModLoader
|
||||||
|
{
|
||||||
|
public class ModLoadedEventArgs : EventArgs
|
||||||
|
{
|
||||||
|
private List<ScrapMod> LoadedModsList { get; set; } = new List<ScrapMod>();
|
||||||
|
private List<ScrapMod> UnsupportedModsList { get; set; } = new List<ScrapMod>();
|
||||||
|
|
||||||
|
public ModLoadedEventArgs(IEnumerable<ScrapMod> loadedMods, IEnumerable<ScrapMod> unsupportedMods) : base()
|
||||||
|
{
|
||||||
|
LoadedModsList = loadedMods.ToList();
|
||||||
|
UnsupportedModsList = unsupportedMods.ToList();
|
||||||
|
}
|
||||||
|
|
||||||
|
public ReadOnlyCollection<ScrapMod> LoadedMods => LoadedModsList.AsReadOnly();
|
||||||
|
public ReadOnlyCollection<ScrapMod> UnsupportedMods => UnsupportedModsList.AsReadOnly();
|
||||||
|
}
|
||||||
|
}
|
|
@ -1,6 +1,7 @@
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Globalization;
|
using System.Globalization;
|
||||||
|
using System.Collections.ObjectModel;
|
||||||
using System.IO;
|
using System.IO;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
|
|
||||||
|
@ -20,6 +21,10 @@ namespace ScrapModLoader
|
||||||
public String LauncherVersion { get; set; } = "0.3";
|
public String LauncherVersion { get; set; } = "0.3";
|
||||||
public String SelectedGamePath { get; set; } = String.Empty;
|
public String SelectedGamePath { get; set; } = String.Empty;
|
||||||
|
|
||||||
|
public delegate void ModsLoadedHandler(ModLoadedEventArgs eventArgs);
|
||||||
|
|
||||||
|
public event ModsLoadedHandler? ModsLoaded;
|
||||||
|
|
||||||
public ModsLauncher()
|
public ModsLauncher()
|
||||||
{
|
{
|
||||||
|
|
||||||
|
@ -93,25 +98,38 @@ namespace ScrapModLoader
|
||||||
public void LoadMods()
|
public void LoadMods()
|
||||||
{
|
{
|
||||||
SelectedGamePath = SelectedGameVersion == "1.0" ? ScraplandPath : ScraplandRemasteredPath;
|
SelectedGamePath = SelectedGameVersion == "1.0" ? ScraplandPath : ScraplandRemasteredPath;
|
||||||
|
List<ScrapMod> loadedMods = new List<ScrapMod>();
|
||||||
|
List<ScrapMod> unsupportedMods = new List<ScrapMod>();
|
||||||
|
|
||||||
foreach (ScrapMod mod in Mods)
|
foreach (ScrapMod mod in Mods)
|
||||||
{
|
{
|
||||||
// TODO: Warning about not loading mods that not supports selected version
|
if (IsSupported(mod))
|
||||||
if (!mod.SupportedGameVersions.Contains(SelectedGameVersion) ||
|
|
||||||
Single.Parse(mod.RequiredLauncher, CultureInfo.InvariantCulture) < Single.Parse(LauncherVersion, CultureInfo.InvariantCulture))
|
|
||||||
continue;
|
|
||||||
|
|
||||||
if (mod.Checked)
|
|
||||||
{
|
{
|
||||||
if (!IsEnabled(mod))
|
if (mod.Checked)
|
||||||
Enable(mod);
|
{
|
||||||
|
if (!IsEnabled(mod))
|
||||||
|
Enable(mod);
|
||||||
|
|
||||||
|
loadedMods.Add(mod);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (IsEnabled(mod))
|
||||||
|
Disable(mod);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if (IsEnabled(mod))
|
unsupportedMods.Add(mod);
|
||||||
Disable(mod);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
ModsLoaded?.Invoke(new ModLoadedEventArgs(loadedMods, unsupportedMods));
|
||||||
|
}
|
||||||
|
|
||||||
|
public Boolean IsSupported(ScrapMod mod)
|
||||||
|
{
|
||||||
|
return mod.SupportedGameVersions.Contains(SelectedGameVersion) ||
|
||||||
|
Single.Parse(mod.RequiredLauncher, CultureInfo.InvariantCulture) < Single.Parse(LauncherVersion, CultureInfo.InvariantCulture);
|
||||||
}
|
}
|
||||||
|
|
||||||
private String ModPath(ScrapMod mod) =>
|
private String ModPath(ScrapMod mod) =>
|
||||||
|
|
Loading…
Reference in a new issue