Skip to content

Commit d2871d8

Browse files
committed
minor tweaks
1 parent 6b8499e commit d2871d8

File tree

10 files changed

+109
-142
lines changed

10 files changed

+109
-142
lines changed

SpeedrunTool/Source/Other/RespawnRestartSpeed.cs

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -13,14 +13,11 @@ public static class RespawnRestartSpeed {
1313
private const string StopFastRestartFlag = nameof(StopFastRestartFlag);
1414

1515
[Load]
16-
private static void Hook() {
16+
private static void Load() {
1717
using (new DetourConfigContext(new DetourConfig(id: "SpeedrunTool", after: ["*"])).Use()) {
1818
On.Monocle.Engine.Update += RespawnSpeed;
19-
}
20-
}
19+
}
2120

22-
[Load]
23-
private static void Load() {
2421
if (ModUtils.VanillaAssembly.GetType("Celeste.Level+<>c__DisplayClass150_0")?.GetMethodInfo("<GiveUp>b__0") is { } methodInfo) {
2522
methodInfo.ILHook(ModRestartMenu);
2623
}

SpeedrunTool/Source/SaveLoad/Implements/DynDataUtils.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
using MonoMod.Utils;
1+
using MonoMod.Utils;
22
using System.Collections.Generic;
33
using System.Runtime.CompilerServices;
44

SpeedrunTool/Source/SaveLoad/SaveLoadAction.cs

Lines changed: 1 addition & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -333,14 +333,7 @@ private static void InitActions() {
333333

334334
// mod support
335335
SupportModSessionAndSaveData();
336-
EasyMods.Support();
337-
PandorasBoxUtils.Support();
338-
SpringCollab2020Utils.Support();
339-
ExtendedVariantsUtils.Support();
340-
IsaGrabBagUtils.Support();
341-
SpirialisHelperUtils.Support();
342-
DeathTrackerHelperUtils.Support();
343-
BrokemiaHelperUtils.Support();
336+
ThirdParty.Support();
344337

345338
// 放最后,确保收集了所有克隆的 VirtualAssets 与 EventInstance
346339
contextOrder = Order_ExecuteAtLast;

SpeedrunTool/Source/SaveLoad/ThirdPartySupport/BrokemiaHelperUtils.cs

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,24 @@
11

22
using Celeste.Mod.SpeedrunTool.Utils;
3+
using System.Collections.Generic;
34

45
namespace Celeste.Mod.SpeedrunTool.SaveLoad.ThirdPartySupport;
56
internal static class BrokemiaHelperUtils {
67

78
internal static void Support() {
89
if (ModUtils.GetType("BrokemiaHelper", "BrokemiaHelper.PixelRendered.Vineinator") is { } vineinatorType &&
910
ModUtils.GetType("BrokemiaHelper", "BrokemiaHelper.PixelRendered.RWLizard") is { } lizardType) {
11+
Tracker.AddTypeToTracker(vineinatorType);
12+
Tracker.AddTypeToTracker(lizardType);
1013
SaveLoadAction.InternalSafeAdd(
1114
loadState: (_, level) => {
12-
foreach (Entity entity in level.Entities) {
13-
Type type = entity.GetType();
14-
if (type == vineinatorType || type == lizardType) {
15-
object pixelComponent = entity.GetFieldValue("pixelComponent");
16-
pixelComponent.SetFieldValue("textureChunks", null);
17-
pixelComponent.InvokeMethod("CommitChunks");
18-
}
15+
List<Entity> entities = level.Tracker.GetEntitiesTrackIfNeeded(vineinatorType);
16+
entities.AddRange(level.Tracker.GetEntitiesTrackIfNeeded(lizardType));
17+
18+
foreach (Entity entity in entities) {
19+
object pixelComponent = entity.GetFieldValue("pixelComponent");
20+
pixelComponent.SetFieldValue("textureChunks", null);
21+
pixelComponent.InvokeMethod("CommitChunks");
1922
}
2023
});
2124
}

SpeedrunTool/Source/SaveLoad/ThirdPartySupport/EasyMods.cs

Lines changed: 0 additions & 60 deletions
This file was deleted.

SpeedrunTool/Source/SaveLoad/ThirdPartySupport/IsaGrabBagUtils.cs

Lines changed: 0 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,7 @@
1-
using Celeste.Mod.SpeedrunTool.Utils;
2-
using System.Linq;
3-
41
namespace Celeste.Mod.SpeedrunTool.SaveLoad.ThirdPartySupport;
52
internal static class IsaGrabBagUtils {
63

74
internal static void Support() {
8-
// 解决 v1.6.0 之前的版本读档后影像残留在屏幕中
9-
if (ModUtils.GetModule("IsaGrabBag") is { } module && module.Metadata.Version < new Version(1, 6, 0) &&
10-
ModUtils.GetType("IsaGrabBag", "Celeste.Mod.IsaGrabBag.DreamSpinnerBorder") is { } borderType) {
11-
SaveLoadAction.InternalSafeAdd(
12-
loadState: (_, level) => level.Entities.FirstOrDefault(entity => entity.GetType() == borderType)?.Update()
13-
);
14-
}
15-
165
// 解决读档后冲进 DreamSpinner 会被刺死
176
SaveLoadAction.CloneModTypeFields("IsaGrabBag", "Celeste.Mod.IsaGrabBag.GrabBagModule", "ZipLineState", "playerInstance");
187
SaveLoadAction.CloneModTypeFields("IsaGrabBag", "Celeste.Mod.IsaGrabBag.BadelineFollower", "booster", "LookForBubble");

SpeedrunTool/Source/SaveLoad/ThirdPartySupport/MotionSmoothingFix.cs

Lines changed: 0 additions & 46 deletions
This file was deleted.
Lines changed: 81 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,81 @@
1+
using Celeste.Mod.SpeedrunTool.Utils;
2+
3+
namespace Celeste.Mod.SpeedrunTool.SaveLoad.ThirdPartySupport;
4+
5+
internal static class ThirdParty {
6+
7+
internal static void Support() {
8+
EasyMods.Support();
9+
ComplexModsSupport();
10+
}
11+
12+
private static void ComplexModsSupport() {
13+
PandorasBoxUtils.Support();
14+
SpringCollab2020Utils.Support();
15+
ExtendedVariantsUtils.Support();
16+
IsaGrabBagUtils.Support();
17+
SpirialisHelperUtils.Support();
18+
DeathTrackerHelperUtils.Support();
19+
BrokemiaHelperUtils.Support();
20+
}
21+
22+
23+
private static class EasyMods {
24+
25+
internal static void Support() {
26+
CommunalHelperSupport();
27+
CrystallineHelperSupport();
28+
MaxHelpingHandSupport();
29+
VivHelperSupport();
30+
XaphanHelperSupport();
31+
LocksmithHelperSupport();
32+
}
33+
34+
[Obsolete("these partially exist in CommunalHelper, we plan to remove it from SRT")]
35+
private static void CommunalHelperSupport() {
36+
37+
SaveLoadAction.CloneModTypeFields("CommunalHelper", "Celeste.Mod.CommunalHelper.DashStates.SeekerDash",
38+
"hasSeekerDash",
39+
"seekerDashAttacking",
40+
"seekerDashTimer",
41+
"seekerDashLaunched",
42+
"launchPossible");
43+
}
44+
private static void CrystallineHelperSupport() {
45+
SaveLoadAction.CloneModTypeFields("CrystallineHelper", "vitmod.VitModule", "timeStopScaleTimer", "timeStopType", "noMoveScaleTimer");
46+
SaveLoadAction.CloneModTypeFields("CrystallineHelper", "vitmod.TriggerTrigger", "collidedEntities");
47+
}
48+
private static void MaxHelpingHandSupport() {
49+
50+
SaveLoadAction.CloneModTypeFields("MaxHelpingHand", "Celeste.Mod.MaxHelpingHand.Effects.BlackholeCustomColors", "colorsMild");
51+
52+
}
53+
private static void VivHelperSupport() {
54+
if (ModUtils.GetAssembly("VivHelper") is not { }) {
55+
return;
56+
}
57+
58+
SaveLoadAction.CloneModTypeFields("VivHelper", "VivHelper.Entities.RefillCancel", "inSpace", "DashRefillRestrict", "DashRestrict", "StaminaRefillRestrict", "p");
59+
SaveLoadAction.CloneModTypeFields("VivHelper", "VivHelper.Entities.SpeedPowerup", "Store", "Launch");
60+
SaveLoadAction.CloneModTypeFields("VivHelper", "VivHelper.Entities.BooMushroom", "color", "mode");
61+
SaveLoadAction.CloneModTypeFields("VivHelper", "VivHelper.Entities.Boosters.BoostFunctions", "dyn");
62+
SaveLoadAction.CloneModTypeFields("VivHelper", "VivHelper.Entities.Boosters.OrangeBoost", "timer");
63+
SaveLoadAction.CloneModTypeFields("VivHelper", "VivHelper.Entities.Boosters.PinkBoost", "timer");
64+
SaveLoadAction.CloneModTypeFields("VivHelper", "VivHelper.Entities.Boosters.WindBoost", "timer");
65+
SaveLoadAction.CloneModTypeFields("VivHelper", "VivHelper.Entities.ExplodeLaunchModifier", "DisableFreeze", "DetectFreeze", "bumperWrapperType");
66+
SaveLoadAction.CloneModTypeFields("VivHelper", "VivHelper.Entities.Blockout", "alphaFade");
67+
SaveLoadAction.CloneModTypeFields("VivHelper", "VivHelper.MoonHooks", "FloatyFix");
68+
SaveLoadAction.CloneModTypeFields("VivHelper", "VivHelper.HelperEntities", "AllUpdateHelperEntity");
69+
SaveLoadAction.CloneModTypeFields("VivHelper", "VivHelper.Module__Extensions__Etc.TeleportV2Hooks", "HackedFocusPoint");
70+
}
71+
private static void XaphanHelperSupport() {
72+
SaveLoadAction.CloneModTypeFields("XaphanHelper", "Celeste.Mod.XaphanHelper.Upgrades.SpaceJump", "jumpBuffer");
73+
}
74+
private static void LocksmithHelperSupport() {
75+
SaveLoadAction.CloneModTypeFields("LocksmithHelper", "Celeste.Mod.LocksmithHelper.Entities.Key", "Inventory");
76+
}
77+
}
78+
79+
}
80+
81+

SpeedrunTool/Source/SpeedrunToolMenu.cs

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,11 +11,14 @@ namespace Celeste.Mod.SpeedrunTool;
1111

1212
public static class SpeedrunToolMenu {
1313
private static readonly Regex RegexFormatName = new(@"([a-z])([A-Z])", RegexOptions.Compiled);
14-
private static List<EaseInSubMenu> options;
14+
private static List<EaseInSubMenu> options;
15+
16+
public static void Create(TextMenu menu, bool inGame, EventInstance snapshot) {
17+
// basically same as EverestModule.CreateModMenuSectionHeader
18+
menu.Add(new TextMenu.SubHeader(DialogIds.SpeedrunTool.DialogCleanOrNull() + " | v." + SpeedrunToolModule.Instance.Metadata.VersionString));
1519

16-
public static void Create(TextMenu menu, bool inGame, EventInstance snapshot) {
1720
menu.OnClose += () => options = null;
18-
menu.Add(new TextMenu.OnOff(Dialog.Clean(DialogIds.Enabled), ModSettings.Enabled).Change(value => {
21+
menu.Add(new OnOffSearchExt(Dialog.Clean(DialogIds.Enabled), ModSettings.Enabled, "speedrun tool").Change(value => {
1922
ModSettings.Enabled = value;
2023
foreach (EaseInSubMenu item in options) {
2124
item.FadeVisible = value;
@@ -29,6 +32,14 @@ public static void Create(TextMenu menu, bool inGame, EventInstance snapshot) {
2932
foreach (EaseInSubMenu item in options) {
3033
menu.Add(item);
3134
}
35+
}
36+
37+
private class OnOffSearchExt(string label, bool on, string searchLabel) : TextMenu.OnOff(label, on) {
38+
39+
public string SearchRawLabel = searchLabel;
40+
41+
// 使得 OuiModOptions.AddSearchBox 哪怕在中文环境下也能用 speedrun tool 搜到 SRT
42+
public override string SearchLabel() => SearchRawLabel;
3243
}
3344

3445
private static IEnumerable<KeyValuePair<TEnum, string>> CreateEnumerableOptions<TEnum>()

SpeedrunTool/Source/SpeedrunToolModule.cs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,6 @@ public override void LoadSettings() {
6060
}
6161

6262
public override void CreateModMenuSection(TextMenu menu, bool inGame, EventInstance snapshot) {
63-
CreateModMenuSectionHeader(menu, inGame, snapshot);
6463
SpeedrunToolMenu.Create(menu, inGame, snapshot);
6564
}
6665
}

0 commit comments

Comments
 (0)