Skip to content

Commit 33f02b6

Browse files
committed
Merge branch '118-localization'
2 parents 747e1c8 + 66c7708 commit 33f02b6

21 files changed

+361
-71
lines changed

LegendaryExplorer

Submodule LegendaryExplorer updated 24 files

MassEffectModManagerCore/MassEffectModManagerCore.csproj

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
<PublishReadyToRunShowWarnings>true</PublishReadyToRunShowWarnings>
1010
<UseWPF>true</UseWPF>
1111
<Platforms>x64</Platforms>
12-
<Version>7.0.2.120</Version>
12+
<Version>7.0.3.121</Version>
1313
<Copyright>ME3Tweaks 2012 - 2021</Copyright>
1414
<Authors>Mgamerz</Authors>
1515
<PackageId>MassEffectModManagerCore</PackageId>
@@ -59,7 +59,9 @@
5959
<None Remove="images\terminal.png" />
6060
<None Remove="images\unknown.png" />
6161
<None Remove="images\windowicon.png" />
62+
<None Remove="modmanager\asi\AutoTOC_LE-v2.0.asi" />
6263
<None Remove="modmanager\asi\BalanceChangesReplacer-v3.0.asi" />
64+
<None Remove="modmanager\asi\LE1AutoloadEnabler-v1.0.asi" />
6365
<None Remove="modmanager\asi\manifest.xml" />
6466
<None Remove="modmanager\asi\ME1-DLC-ModEnabler-v1.0.asi" />
6567
<None Remove="modmanager\asi\ME3Logger_truncating-v1.0.asi" />
@@ -128,7 +130,9 @@
128130
</ItemGroup>
129131

130132
<ItemGroup>
133+
<EmbeddedResource Include="modmanager\asi\AutoTOC_LE-v2.0.asi" />
131134
<EmbeddedResource Include="modmanager\asi\BalanceChangesReplacer-v3.0.asi" />
135+
<EmbeddedResource Include="modmanager\asi\LE1AutoloadEnabler-v1.0.asi" />
132136
<EmbeddedResource Include="modmanager\asi\manifest.xml" />
133137
</ItemGroup>
134138

MassEffectModManagerCore/modmanager/Utilities.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -535,7 +535,7 @@ private static int RunProcess(string exe, List<string> argsL, string argsS, bool
535535
argsStr = "";
536536
foreach (var arg in argsL)
537537
{
538-
if (arg != "") argsStr += " ";
538+
if (arg != "" && argsStr != "") argsStr += " ";
539539
if (arg.Contains(" "))
540540
{
541541
argsStr += $"\"{arg}\"";
@@ -1272,7 +1272,7 @@ internal static void RemoveCachedTarget(GameTarget target)
12721272
private const string ME1ASILoaderHash = "30660f25ab7f7435b9f3e1a08422411a";
12731273
private const string ME2ASILoaderHash = "a5318e756893f6232284202c1196da13";
12741274
private const string ME3ASILoaderHash = "1acccbdae34e29ca7a50951999ed80d5";
1275-
private const string LEASILoaderHash = "90b08d964c532be9d9158aeefc5cd812"; // Will need changed as game is updated // bink 2003 by d00t
1275+
private const string LEASILoaderHash = "39ee6dabd1ea26abf0facdd5eae300b7"; // Will need changed as game is updated // bink 2004 by d00t
12761276

12771277
internal static bool CheckIfBinkw32ASIIsInstalled(GameTarget target)
12781278
{

MassEffectModManagerCore/modmanager/asi/ASIManager.cs

Lines changed: 17 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -11,19 +11,17 @@
1111
using MassEffectModManagerCore.modmanager.objects;
1212
using LegendaryExplorerCore.Packages;
1313
using Microsoft.AppCenter.Analytics;
14+
using PropertyChanged;
1415
using Serilog;
1516

1617
namespace MassEffectModManagerCore.modmanager.asi
1718
{
1819
/// <summary>
1920
/// Backend for ASI Management
2021
/// </summary>
21-
public class ASIManager : INotifyPropertyChanged
22+
[AddINotifyPropertyChangedInterface]
23+
public class ASIManager
2224
{
23-
//Fody uses this property on weaving
24-
#pragma warning disable
25-
public event PropertyChangedEventHandler PropertyChanged;
26-
#pragma warning restore
2725
public static readonly string CachedASIsFolder = Directory.CreateDirectory(Path.Combine(Utilities.GetAppDataFolder(), @"CachedASIs")).FullName;
2826

2927
public static readonly string ManifestLocation = Path.Combine(CachedASIsFolder, @"manifest.xml");
@@ -105,7 +103,7 @@ private static void internalLoadManifest(bool forceLocal = false, bool overrideT
105103
/// </summary>
106104
public static void ExtractDefaultASIResources()
107105
{
108-
string[] defaultResources = { @"BalanceChangesReplacer-v3.0.asi", @"ME1-DLC-ModEnabler-v1.0.asi", @"ME3Logger_truncating-v1.0.asi", @"manifest.xml" };
106+
string[] defaultResources = { @"BalanceChangesReplacer-v3.0.asi", @"ME1-DLC-ModEnabler-v1.0.asi", @"ME3Logger_truncating-v1.0.asi", @"AutoTOC_LE-v2.0.asi", @"LE1AutoloadEnabler-v1.0.asi", @"manifest.xml" };
109107
foreach (var file in defaultResources)
110108
{
111109
var outfile = Path.Combine(CachedASIsFolder, file);
@@ -229,7 +227,9 @@ private static void ParseManifest(string xmlText, bool isStaged = false)
229227
Hash = (string)z.Element(@"hash"),
230228
SourceCodeLink = (string)z.Element(@"sourcecode"),
231229
DownloadLink = (string)z.Element(@"downloadlink"),
232-
Game = intToGame((int)e.Attribute(@"game")) // use e element to pull from outer group
230+
Game = intToGame((int)e.Attribute(@"game")), // use e element to pull from outer group
231+
_otherGroupsToDeleteOnInstallInternal = z.Element(@"autoremovegroups")?.Value,
232+
233233
}).ToList()
234234
}).ToList();
235235
foreach (var v in updateGroups)
@@ -260,6 +260,7 @@ private static void ParseManifest(string xmlText, bool isStaged = false)
260260
foreach (var m in v.Versions)
261261
{
262262
m.OwningMod = v;
263+
m.OtherGroupsToDeleteOnInstall.Remove(v.UpdateGroupId); // Ensure we don' delete ourself on install
263264
}
264265
}
265266

@@ -308,8 +309,9 @@ public static bool InstallASIToTarget(ASIModVersion asi, GameTarget target, bool
308309
}
309310
string finalPath = Path.Combine(destinationDirectory, destinationFilename);
310311

312+
var installedASIs = target.GetInstalledASIs();
311313
// Delete existing ASIs from the same group to ensure we don't install the same mod
312-
var existingSameGroupMods = target.GetInstalledASIs().OfType<KnownInstalledASIMod>().Where(x => x.AssociatedManifestItem.OwningMod == asi.OwningMod).ToList();
314+
var existingSameGroupMods = installedASIs.OfType<KnownInstalledASIMod>().Where(x => x.AssociatedManifestItem.OwningMod == asi.OwningMod).ToList();
313315
bool hasExistingVersionOfModInstalled = false;
314316
if (existingSameGroupMods.Any())
315317
{
@@ -326,9 +328,14 @@ public static bool InstallASIToTarget(ASIModVersion asi, GameTarget target, bool
326328
}
327329
}
328330

329-
if (hasExistingVersionOfModInstalled && !forceSource.HasValue) //Let app decide
331+
// Remove any conflicting ASIs
332+
foreach (var v in installedASIs.OfType<KnownInstalledASIMod>())
330333
{
331-
return true; // This asi was "Installed" (because it was already installed).
334+
if (asi.OtherGroupsToDeleteOnInstall.Contains(v.AssociatedManifestItem.OwningMod.UpdateGroupId))
335+
{
336+
// Delete tis other ASI
337+
v.Uninstall();
338+
}
332339
}
333340

334341
// Install the ASI

MassEffectModManagerCore/modmanager/asi/ASIMod.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,12 +31,14 @@ public class ASIMod
3131
/// </summary>
3232
public bool IsHidden { get; set; }
3333

34+
3435
/// <summary>
3536
/// Gets the latest version of the ASI
3637
/// </summary>
3738
/// <returns></returns>
3839
public ASIModVersion LatestVersion => Versions.MaxBy(x => x.Version);
3940

41+
4042
/// <summary>
4143
/// If any of the versions of this ASI match the given hash
4244
/// </summary>

MassEffectModManagerCore/modmanager/asi/ASIModVersion.cs

Lines changed: 29 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -5,13 +5,15 @@
55
using System.Windows.Media;
66
using MassEffectModManagerCore.modmanager.localizations;
77
using LegendaryExplorerCore.Packages;
8+
using PropertyChanged;
89

910
namespace MassEffectModManagerCore.modmanager.asi
1011
{
1112
/// <summary>
1213
/// Object containing information about a single version of an ASI mod in the ASI mod manifest
1314
/// </summary>
14-
public class ASIModVersion : INotifyPropertyChanged
15+
[AddINotifyPropertyChangedInterface]
16+
public class ASIModVersion
1517
{
1618
/// <summary>
1719
/// The direct download link to the ASI
@@ -55,10 +57,32 @@ public class ASIModVersion : INotifyPropertyChanged
5557
/// </summary>
5658
public ASIMod OwningMod { get; set; }
5759

58-
//Fody uses this property on weaving
59-
#pragma warning disable 67
60-
public event PropertyChangedEventHandler PropertyChanged;
61-
#pragma warning restore 67
60+
/// <summary>
61+
/// List of other groups to delete on install. This is for ASIs that have multiple differing update groups (like autoload)
62+
/// </summary>
63+
public List<int> OtherGroupsToDeleteOnInstall = new();
64+
65+
/// <summary>
66+
/// Internal hack to generate the OtherGroupsToDeleteOnInstall variable from text.
67+
/// </summary>
68+
public string _otherGroupsToDeleteOnInstallInternal
69+
{
70+
set
71+
{
72+
if (!string.IsNullOrWhiteSpace(value))
73+
{
74+
OtherGroupsToDeleteOnInstall.Clear();
75+
var split = value.Split(',');
76+
foreach (var v in split)
77+
{
78+
if (int.TryParse(v, out var asigroupid))
79+
{
80+
OtherGroupsToDeleteOnInstall.Add(asigroupid);
81+
}
82+
}
83+
}
84+
}
85+
}
6286

6387

6488
}
307 KB
Binary file not shown.
Binary file not shown.
1.5 KB
Binary file not shown.

MassEffectModManagerCore/modmanager/converters/GameToVisibilityConverter.cs

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,14 @@ public object Convert(object value, Type targetType, object parameter, CultureIn
4949
break;
5050
}
5151
}
52+
else if (splitparms[i] == "LEGame")
53+
{
54+
if (inverted ^ game.IsLEGame()) continue;
55+
}
56+
else if (splitparms[i] == "OTGame")
57+
{
58+
if (inverted ^ game.IsOTGame()) continue;
59+
}
5260

5361
// One of the above conditions did not register as true.
5462
return Visibility.Collapsed;

0 commit comments

Comments
 (0)