Skip to content
This repository has been archived by the owner on Oct 16, 2024. It is now read-only.

Commit

Permalink
Full subverter support
Browse files Browse the repository at this point in the history
  • Loading branch information
misandrie committed Nov 24, 2023
1 parent e1a5c84 commit 7204778
Show file tree
Hide file tree
Showing 6 changed files with 74 additions and 8 deletions.
7 changes: 5 additions & 2 deletions Marsey/MarseyPatcher.cs
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
using System.Reflection;
using System.Threading;
using HarmonyLib;
using Marsey.Subversion;

namespace Marsey;

Expand All @@ -23,18 +24,20 @@ public class MarseyPatcher
public static void Boot(Assembly? robClientAssembly)
{
if (robClientAssembly == null) throw new Exception("Robust.Client was null.");

Utility.SetupFlags();

GameAssemblyManager.Init(new Harmony(MarseyVars.Identifier));

if (Subverse.InitSubverter()) Subverse.PatchSubverter();

GameAssemblyManager.GetGameAssemblies(out var clientAss, out var robustSharedAss, out var clientSharedAss);

PatchAssemblyManager.SetAssemblies(robClientAssembly, clientAss, robustSharedAss, clientSharedAss);

FileHandler.LoadAssemblies(new []{"Marsey", "Enabled"});

PatchAssemblyManager.InitLogger();
PatchAssemblyManager.InitLogger(PatchAssemblyManager.GetPatchList());

GameAssemblyManager.PatchProc(PatchAssemblyManager.GetPatchList());
}
Expand Down
4 changes: 2 additions & 2 deletions Marsey/PatchAssemblyManager.cs
Original file line number Diff line number Diff line change
Expand Up @@ -81,9 +81,9 @@ public static void InitAssembly(Assembly assembly, bool subverter = false)
/// Executed only by the loader.
/// MarseyLogger example can be found in the BasePatch MarseyPatch example.
/// </summary>
public static void InitLogger()
public static void InitLogger(List<MarseyPatch> patches)
{
foreach (MarseyPatch patch in _patchAssemblies)
foreach (MarseyPatch patch in patches)
{
Assembly assembly = patch.Asm;

Expand Down
39 changes: 39 additions & 0 deletions Marsey/Subversion/Subverse.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
using System.Collections.Generic;

namespace Marsey.Subversion;

public static class Subverse
{
private static MarseyPatch? _subverter = null;

public static bool InitSubverter()
{
if (_subverter != null)
return true;

Subverter.LoadSubverts();
List<MarseyPatch> patches = Subverter.GetSubverterPatches();
foreach (MarseyPatch p in patches)
{
if (p.Name == "Subverter")
{
AssignSubverter(p);
PatchAssemblyManager.InitLogger(patches);
patches.RemoveAll(p => p.Name == "Subverter");
return true;
}
}

return false;
}

private static void AssignSubverter(MarseyPatch subverter)
{
_subverter = subverter;
}

public static void PatchSubverter()
{
if (_subverter != null) GameAssemblyManager.PatchProc(new List<MarseyPatch>() { _subverter });
}
}
2 changes: 1 addition & 1 deletion Marsey/Subversion/Subverter.cs
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ public static void AddSubvert(MarseyPatch patch)
_subverterPatches.Add(patch);
}

public static void SubversionPatch()
public static void SubversionPatcher()
{

}
Expand Down
27 changes: 25 additions & 2 deletions SS14.Launcher/ViewModels/MainWindowTabs/PatchesTabViewModel.cs
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ namespace SS14.Launcher.ViewModels.MainWindowTabs
public class PatchesTabViewModel : MainWindowTabViewModel
{
public override string Name => "Plugins";

public bool SubverterPresent { get; set; }
public ObservableCollection<MarseyPatch> MarseyPatches { get; } = new ObservableCollection<MarseyPatch>();
public ObservableCollection<MarseyPatch> SubverterPatches { get; } = new ObservableCollection<MarseyPatch>();

Expand All @@ -25,6 +25,7 @@ public class PatchesTabViewModel : MainWindowTabViewModel

public PatchesTabViewModel()
{
SubverterPresent = Subverse.InitSubverter();
OpenMarseyPatchDirectoryCommand = new RelayCommand(() => OpenPatchDirectory("Marsey"));
OpenSubverterPatchDirectoryCommand = new RelayCommand(() => OpenPatchDirectory("Subversion"));
LoadPatches();
Expand All @@ -33,8 +34,9 @@ public PatchesTabViewModel()
private void LoadPatches()
{
FileHandler.LoadAssemblies();
Subverter.LoadSubverts();
LoadPatchList(PatchAssemblyManager.GetPatchList(), MarseyPatches, "marseypatches");
if (!SubverterPresent) return;
//Subverter.LoadSubverts();
LoadPatchList(Subverter.GetSubverterPatches(), SubverterPatches, "subverterpatches");
}

Expand Down Expand Up @@ -70,4 +72,25 @@ public class PathToFileNameConverter : IValueConverter
{
return value;
}
}

public class BooleanToVisibilityConverter : IValueConverter
{
public object? Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
if (value is bool booleanValue)
{
return booleanValue;
}
throw new InvalidOperationException("Invalid boolean value");
}

public object? ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
if (value is bool visibilityValue)
{
return visibilityValue;
}
throw new InvalidOperationException("Invalid visibility value");
}
}
3 changes: 2 additions & 1 deletion SS14.Launcher/Views/MainWindowTabs/PatchesTabView.xaml
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
x:Class="SS14.Launcher.Views.MainWindowTabs.PatchesTabView"
Name="PatchesTab">
<UserControl.Resources>
<global:BooleanToVisibilityConverter x:Key="BooleanToVisibilityConverter"/>
<global:PathToFileNameConverter x:Key="PathToFileNameConverter"/>
</UserControl.Resources>

Expand Down Expand Up @@ -40,7 +41,7 @@
</ScrollViewer>
</TabItem>

<TabItem Header="Subverter">
<TabItem Header="Subverter" IsVisible="{Binding SubverterPresent, Converter={StaticResource BooleanToVisibilityConverter}}">
<ScrollViewer HorizontalScrollBarVisibility="Disabled">
<StackPanel>
<TextBlock Margin="4, 0" Text="Plugins" Classes="NanoHeadingMedium" />
Expand Down

0 comments on commit 7204778

Please sign in to comment.