Skip to content

Commit 5538ea1

Browse files
committed
feat(Compatibility): Update compatibility targets and handling for STS2 API version 0.107.0
- Updated compatibility branch label in `RitsuLibFramework.cs` to reflect the new version 0.107.0. - Modified project file `STS2-RitsuLib.csproj` to include 0.107.0 in compatibility targets and latest API compatibility. - Adjusted various patches in the Lifecycle and Combat modules to accommodate changes in method signatures and functionality for version 0.107.0. - Enhanced runtime reflection handling in `RuntimeReflectionSpinePreviewExample.cs` to utilize new animation name retrieval methods. - Updated compatibility definitions in `RitsuLib.CompatDefines.targets` to include the new version, ensuring proper conditional compilation.
1 parent 546d125 commit 5538ea1

8 files changed

Lines changed: 60 additions & 22 deletions

File tree

Combat/HandSize/MaxHandSizePatchInstaller.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -126,7 +126,7 @@ internal static void EnsurePatched()
126126
"[MaxHandSize] RitsuLib hand-size patch set installed (compat 0.104.0 profile).");
127127
#else
128128
RitsuLibFramework.Logger.Info(
129-
"[MaxHandSize] RitsuLib hand-size patch set installed (0.105.1 profile).");
129+
"[MaxHandSize] RitsuLib hand-size patch set installed (modern profile).");
130130
#endif
131131
}
132132
}

Lifecycle/Patches/LoadRunScreenStartRunMissingCharacterPatches.cs

Lines changed: 26 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
using HarmonyLib;
22
using MegaCrit.Sts2.Core.Commands;
3+
using MegaCrit.Sts2.Core.Entities.Multiplayer;
34
using MegaCrit.Sts2.Core.Helpers;
45
using MegaCrit.Sts2.Core.Logging;
56
using MegaCrit.Sts2.Core.Models;
@@ -97,8 +98,10 @@ private static async Task StartRunAsync(NMultiplayerLoadGameScreen screen)
9798
var runState = RunState.FromSerializable(lobby.Run);
9899
#if !STS2_AT_LEAST_0_104_0
99100
RunManager.Instance.SetUpSavedMultiPlayer(runState, lobby);
100-
#else
101+
#elif !STS2_AT_LEAST_0_107_0
101102
await RunManager.Instance.SetUpSavedMultiPlayer(runState, lobby);
103+
#else
104+
await RunManager.Instance.SetUpSavedMultiplayer(runState, lobby);
102105
#endif
103106
await game.LoadRun(runState, lobby.Run.PreFinishedRoom);
104107
CleanUpLobby(screen, false);
@@ -107,8 +110,14 @@ private static async Task StartRunAsync(NMultiplayerLoadGameScreen screen)
107110

108111
private static void CleanUpLobby(NMultiplayerLoadGameScreen screen, bool disconnectSession)
109112
{
113+
#if !STS2_AT_LEAST_0_107_0
110114
var m = AccessTools.DeclaredMethod(typeof(NMultiplayerLoadGameScreen), "CleanUpLobby");
111115
m.Invoke(screen, [disconnectSession]);
116+
#else
117+
var m = AccessTools.DeclaredMethod(typeof(NMultiplayerLoadGameScreen), "CleanUpLobby",
118+
[typeof(bool), typeof(NetError)]);
119+
m.Invoke(screen, [disconnectSession, NetError.Quit]);
120+
#endif
112121
}
113122
}
114123

@@ -193,8 +202,10 @@ private static async Task StartRunAsync(NCustomRunLoadScreen screen)
193202
var runState = RunState.FromSerializable(lobby.Run);
194203
#if !STS2_AT_LEAST_0_104_0
195204
RunManager.Instance.SetUpSavedMultiPlayer(runState, lobby);
196-
#else
205+
#elif !STS2_AT_LEAST_0_107_0
197206
await RunManager.Instance.SetUpSavedMultiPlayer(runState, lobby);
207+
#else
208+
await RunManager.Instance.SetUpSavedMultiplayer(runState, lobby);
198209
#endif
199210
await game.LoadRun(runState, lobby.Run.PreFinishedRoom);
200211
CleanUpLobby(screen, false);
@@ -203,8 +214,13 @@ private static async Task StartRunAsync(NCustomRunLoadScreen screen)
203214

204215
private static void CleanUpLobby(NCustomRunLoadScreen screen, bool disconnectSession)
205216
{
217+
#if !STS2_AT_LEAST_0_107_0
206218
AccessTools.DeclaredMethod(typeof(NCustomRunLoadScreen), "CleanUpLobby")
207219
.Invoke(screen, [disconnectSession]);
220+
#else
221+
AccessTools.DeclaredMethod(typeof(NCustomRunLoadScreen), "CleanUpLobby", [typeof(bool), typeof(NetError)])
222+
.Invoke(screen, [disconnectSession, NetError.Quit]);
223+
#endif
208224
}
209225
}
210226

@@ -292,8 +308,10 @@ private static async Task StartRunAsync(NDailyRunLoadScreen screen)
292308
var runState = RunState.FromSerializable(lobby.Run);
293309
#if !STS2_AT_LEAST_0_104_0
294310
RunManager.Instance.SetUpSavedMultiPlayer(runState, lobby);
295-
#else
311+
#elif !STS2_AT_LEAST_0_107_0
296312
await RunManager.Instance.SetUpSavedMultiPlayer(runState, lobby);
313+
#else
314+
await RunManager.Instance.SetUpSavedMultiplayer(runState, lobby);
297315
#endif
298316
await game.LoadRun(runState, lobby.Run.PreFinishedRoom);
299317
CleanUpLobby(screen, false);
@@ -302,7 +320,12 @@ private static async Task StartRunAsync(NDailyRunLoadScreen screen)
302320

303321
private static void CleanUpLobby(NDailyRunLoadScreen screen, bool disconnectSession)
304322
{
323+
#if !STS2_AT_LEAST_0_107_0
305324
AccessTools.DeclaredMethod(typeof(NDailyRunLoadScreen), "CleanUpLobby").Invoke(screen, [disconnectSession]);
325+
#else
326+
AccessTools.DeclaredMethod(typeof(NDailyRunLoadScreen), "CleanUpLobby", [typeof(bool), typeof(NetError)])
327+
.Invoke(screen, [disconnectSession, NetError.Quit]);
328+
#endif
306329
}
307330
}
308331
}

Lifecycle/Patches/NMainMenuContinueRunMissingCharacterPatch.cs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -92,8 +92,10 @@ private static async Task ContinueRunAsync(NMainMenu menu, SerializableRun seria
9292

9393
#if !STS2_AT_LEAST_0_104_0
9494
RunManager.Instance.SetUpSavedSinglePlayer(runState, serializableRun);
95-
#else
95+
#elif !STS2_AT_LEAST_0_107_0
9696
await RunManager.Instance.SetUpSavedSinglePlayer(runState, serializableRun);
97+
#else
98+
await RunManager.Instance.SetUpSavedSingleplayer(runState, serializableRun);
9799
#endif
98100
Log.Info($"Continuing run with character: {serializableRun.Players[0].CharacterId}");
99101
SfxCmd.Play(runState.Players[0].Character.CharacterTransitionSfx);

RitsuLibFramework.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -437,10 +437,10 @@ private static void ConfirmExternalFrameworkInterop()
437437

438438
private static string GetCompatBranchLabel()
439439
{
440-
#if STS2_AT_LEAST_0_106_1
440+
#if STS2_AT_LEAST_0_107_0
441+
return "0.107.0";
442+
#elif STS2_AT_LEAST_0_106_1
441443
return "0.106.1";
442-
#elif STS2_AT_LEAST_0_105_1
443-
return "0.105.1";
444444
#elif STS2_AT_LEAST_0_103_2
445445
return "0.103.2";
446446
#else

RunData/Patches/RunSavedDataPatches.cs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -316,7 +316,11 @@ internal sealed class RunSavedDataStartRunLobbyCleanUpPatch : IPatchMethod
316316

317317
public static ModPatchTarget[] GetTargets()
318318
{
319+
#if !STS2_AT_LEAST_0_107_0
319320
return [new(typeof(StartRunLobby), nameof(StartRunLobby.CleanUp), [typeof(bool)])];
321+
#else
322+
return [new(typeof(StartRunLobby), nameof(StartRunLobby.CleanUp), [typeof(bool), typeof(NetError)])];
323+
#endif
320324
}
321325

322326
// ReSharper disable once InconsistentNaming

STS2-RitsuLib.csproj

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
<Project Sdk="Godot.NET.Sdk/4.5.1">
22
<PropertyGroup Label="Compatibility (STS2 API, signatures, defines)">
3-
<RitsuLibCompatTargets>0.106.1;0.105.1;0.103.2</RitsuLibCompatTargets>
4-
<RitsuLibLatestApiCompat>0.106.1</RitsuLibLatestApiCompat>
3+
<RitsuLibCompatTargets>0.107.0;0.106.1;0.103.2</RitsuLibCompatTargets>
4+
<RitsuLibLatestApiCompat>0.107.0</RitsuLibLatestApiCompat>
55
<Sts2ApiCompat Condition="'$(Sts2ApiCompat)' == ''">$(RitsuLibLatestApiCompat)</Sts2ApiCompat>
66
<Sts2ApiSignatureDir Condition="'$(Sts2ApiSignatureRoot)' != ''">$(Sts2ApiSignatureRoot)\$(Sts2ApiCompat)</Sts2ApiSignatureDir>
77
<Sts2DataDir Condition="'$(Sts2ApiSignatureRoot)' != ''">$(Sts2ApiSignatureDir)</Sts2DataDir>

Settings/ModSettings/Mirrors/RuntimeReflection/RuntimeReflectionSpinePreviewExample.cs

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,14 @@
11
using Godot;
2-
using MegaCrit.Sts2.Core.Bindings.MegaSpine;
32
using MegaCrit.Sts2.Core.Models;
43
using MegaCrit.Sts2.Core.Models.Characters;
54
using MegaCrit.Sts2.Core.Nodes.Combat;
65
using STS2RitsuLib.Data;
76
using STS2RitsuLib.Ui.Shell.Theme;
87
using STS2RitsuLib.Utils;
98
using STS2RitsuLib.Utils.Persistence;
9+
#if !STS2_AT_LEAST_0_107_0
10+
using MegaCrit.Sts2.Core.Bindings.MegaSpine;
11+
#endif
1012

1113
namespace STS2RitsuLib.Settings
1214
{
@@ -327,9 +329,14 @@ private static List<string> EnumerateAnimations(NCreatureVisuals visuals)
327329
if (data == null)
328330
return [];
329331

330-
var names = data.GetAnimations()
331-
.Select(animationObject => new MegaAnimation(Variant.From(animationObject)).GetName())
332-
.Where(name => !string.IsNullOrWhiteSpace(name)).ToList();
332+
var names =
333+
#if !STS2_AT_LEAST_0_107_0
334+
data.GetAnimations()
335+
.Select(animationObject => new MegaAnimation(Variant.From(animationObject)).GetName())
336+
#else
337+
data.GetAnimationNames()
338+
#endif
339+
.Where(name => !string.IsNullOrWhiteSpace(name)).ToList();
333340

334341
names.Sort(StringComparer.OrdinalIgnoreCase);
335342
return names;

build/RitsuLib.CompatDefines.targets

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -18,15 +18,16 @@
1818
-->
1919

2020
<PropertyGroup>
21-
<_RitsuLibSupportedApiVersions>0.103.2;0.105.1;0.106.1</_RitsuLibSupportedApiVersions>
22-
<_RitsuLibSupportedApiList>|0.103.2|0.105.1|0.106.1|</_RitsuLibSupportedApiList>
21+
<_RitsuLibSupportedApiVersions>0.103.2;0.106.1;0.107.0</_RitsuLibSupportedApiVersions>
22+
<_RitsuLibSupportedApiList>|0.103.2|0.106.1|0.107.0|</_RitsuLibSupportedApiList>
2323

24-
<_RitsuLib_AtLeast_0_103_2_HostList>|0.103.2|0.105.1|0.106.1|</_RitsuLib_AtLeast_0_103_2_HostList>
25-
<_RitsuLib_AtLeast_0_104_0_HostList>|0.105.1|0.106.1|</_RitsuLib_AtLeast_0_104_0_HostList>
26-
<_RitsuLib_AtLeast_0_105_0_HostList>|0.105.1|0.106.1|</_RitsuLib_AtLeast_0_105_0_HostList>
27-
<_RitsuLib_AtLeast_0_105_1_HostList>|0.105.1|0.106.1|</_RitsuLib_AtLeast_0_105_1_HostList>
28-
<_RitsuLib_AtLeast_0_106_0_HostList>|0.106.1|</_RitsuLib_AtLeast_0_106_0_HostList>
29-
<_RitsuLib_AtLeast_0_106_1_HostList>|0.106.1|</_RitsuLib_AtLeast_0_106_1_HostList>
24+
<_RitsuLib_AtLeast_0_103_2_HostList>|0.103.2|0.106.1|0.107.0|</_RitsuLib_AtLeast_0_103_2_HostList>
25+
<_RitsuLib_AtLeast_0_104_0_HostList>|0.106.1|0.107.0|</_RitsuLib_AtLeast_0_104_0_HostList>
26+
<_RitsuLib_AtLeast_0_105_0_HostList>|0.106.1|0.107.0|</_RitsuLib_AtLeast_0_105_0_HostList>
27+
<_RitsuLib_AtLeast_0_105_1_HostList>|0.106.1|0.107.0|</_RitsuLib_AtLeast_0_105_1_HostList>
28+
<_RitsuLib_AtLeast_0_106_0_HostList>|0.106.1|0.107.0|</_RitsuLib_AtLeast_0_106_0_HostList>
29+
<_RitsuLib_AtLeast_0_106_1_HostList>|0.106.1|0.107.0|</_RitsuLib_AtLeast_0_106_1_HostList>
30+
<_RitsuLib_AtLeast_0_107_0_HostList>|0.107.0|</_RitsuLib_AtLeast_0_107_0_HostList>
3031
</PropertyGroup>
3132

3233
<PropertyGroup>
@@ -36,6 +37,7 @@
3637
<DefineConstants Condition="$(_RitsuLib_AtLeast_0_105_1_HostList.Contains('|$(Sts2ApiCompat)|'))">$(DefineConstants);STS2_AT_LEAST_0_105_1</DefineConstants>
3738
<DefineConstants Condition="$(_RitsuLib_AtLeast_0_106_0_HostList.Contains('|$(Sts2ApiCompat)|'))">$(DefineConstants);STS2_AT_LEAST_0_106_0</DefineConstants>
3839
<DefineConstants Condition="$(_RitsuLib_AtLeast_0_106_1_HostList.Contains('|$(Sts2ApiCompat)|'))">$(DefineConstants);STS2_AT_LEAST_0_106_1</DefineConstants>
40+
<DefineConstants Condition="$(_RitsuLib_AtLeast_0_107_0_HostList.Contains('|$(Sts2ApiCompat)|'))">$(DefineConstants);STS2_AT_LEAST_0_107_0</DefineConstants>
3941
</PropertyGroup>
4042

4143
<Target Name="ValidateRitsuLibCompatTarget" BeforeTargets="CoreCompile">

0 commit comments

Comments
 (0)