Skip to content

Commit

Permalink
feat: toggleable level
Browse files Browse the repository at this point in the history
  • Loading branch information
Clazex committed Nov 23, 2021
1 parent 01df30a commit 28025e0
Show file tree
Hide file tree
Showing 20 changed files with 32 additions and 25 deletions.
2 changes: 1 addition & 1 deletion GodSeekerPlus/GodSeekerPlus.csproj
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<AssemblyTitle>GodSeekerPlus</AssemblyTitle>
<Version>0.12.0</Version>
<Version>0.12.1</Version>
<Description>A Hollow Knight mod to enhance your Godhome experience</Description>
<Authors>Clazex</Authors>
<Copyright>Copyright © 2021 Clazex</Copyright>
Expand Down
4 changes: 3 additions & 1 deletion GodSeekerPlus/Lang/en.json
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
{
"RequireRestart": "Requires a restart to take effect.",
"ToggleableLevel/AnyTime": "",
"ToggleableLevel/ReloadSave": "Reload the save to apply change",
"ToggleableLevel/RestartGame": "Restart the game to apply change",
"Modules/CarefreeMelodyFix": "Carefree Melody Fix",
"Modules/CompleteLowerDifficulty": "Complete Lower Difficulty",
"Modules/DoorDefaultBegin": "Door Default Begin",
Expand Down
4 changes: 3 additions & 1 deletion GodSeekerPlus/Lang/zh.json
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
{
"RequireRestart": "需重启以生效。",
"ToggleableLevel/AnyTime": "",
"ToggleableLevel/ReloadSave": "重新加载存档以生效",
"ToggleableLevel/RestartGame": "重启游戏以生效",
"Modules/CarefreeMelodyFix": "无忧旋律修复",
"Modules/CompleteLowerDifficulty": "完成较低难度",
"Modules/DoorDefaultBegin": "门默认开始",
Expand Down
2 changes: 1 addition & 1 deletion GodSeekerPlus/Menu.cs
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ List<MenuEntry> IMenuMod.GetMenuData(MenuEntry? _) => ModuleHelper
.Map(name => new MenuEntry(
L11nUtil.Localize($"Modules/{name}"),
States,
moduleManager.Modules[name].Toggleable ? "" : L11nUtil.Localize("RequireRestart"),
L11nUtil.Localize($"ToggleableLevel/{moduleManager.Modules[name].ToggleableLevel}"),
(val) => moduleManager.Modules[name].Enabled = Convert.ToBoolean(val),
() => Convert.ToInt32(moduleManager.Modules[name].Enabled)
))
Expand Down
2 changes: 1 addition & 1 deletion GodSeekerPlus/Modules/CarefreeMelodyFix.cs
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
namespace GodSeekerPlus.Modules;

[Module(toggleable = true, defaultEnabled = true)]
[Module(toggleableLevel = ToggleableLevel.AnyTime, defaultEnabled = true)]
internal sealed class CarefreeMelodyFix : Module {
private protected override void Load() =>
ModHooks.CharmUpdateHook += WatchAndFixCarefreeMelody;
Expand Down
2 changes: 1 addition & 1 deletion GodSeekerPlus/Modules/CompleteLowerDifficulty.cs
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
namespace GodSeekerPlus.Modules;

[Module(toggleable = true, defaultEnabled = true)]
[Module(toggleableLevel = ToggleableLevel.AnyTime, defaultEnabled = true)]
internal sealed class CompleteLowerDifficulty : Module {
private protected override void Load() {
}
Expand Down
2 changes: 1 addition & 1 deletion GodSeekerPlus/Modules/DoorDefaultBegin.cs
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@

namespace GodSeekerPlus.Modules;

[Module(toggleable = true, defaultEnabled = true)]
[Module(toggleableLevel = ToggleableLevel.AnyTime, defaultEnabled = true)]
internal sealed class DoorDefaultBegin : Module {
private protected override void Load() =>
On.BossDoorChallengeUI.ShowSequence += OverrideOrig;
Expand Down
2 changes: 1 addition & 1 deletion GodSeekerPlus/Modules/FastDreamWarp.cs
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
namespace GodSeekerPlus.Modules;

[Module(toggleable = true, defaultEnabled = true)]
[Module(toggleableLevel = ToggleableLevel.ReloadSave, defaultEnabled = true)]
internal sealed class FastDreamWarp : Module {
private protected override void Load() =>
On.PlayMakerFSM.OnEnable += ModifyDreamNailFSM;
Expand Down
2 changes: 1 addition & 1 deletion GodSeekerPlus/Modules/FastSuperDash.cs
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
namespace GodSeekerPlus.Modules;

[Module(toggleable = true, defaultEnabled = true)]
[Module(toggleableLevel = ToggleableLevel.ReloadSave, defaultEnabled = true)]
internal sealed class FastSuperDash : Module {
private protected override void Load() =>
On.PlayMakerFSM.OnEnable += ModifySuperDashFSM;
Expand Down
2 changes: 1 addition & 1 deletion GodSeekerPlus/Modules/ForceArriveAnimation.cs
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
namespace GodSeekerPlus.Modules;

[Module(toggleable = true, defaultEnabled = false)]
[Module(toggleableLevel = ToggleableLevel.AnyTime, defaultEnabled = false)]
internal sealed class ForceArriveAnimation : Module {
private static readonly string[] scenes = {
"GG_Vengefly",
Expand Down
2 changes: 1 addition & 1 deletion GodSeekerPlus/Modules/ForceOvercharm.cs
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
namespace GodSeekerPlus.Modules;

[Module(toggleable = true, defaultEnabled = false)]
[Module(toggleableLevel = ToggleableLevel.AnyTime, defaultEnabled = false)]
internal sealed class ForceOvercharm : Module {
private protected override void Load() =>
ModHooks.CharmUpdateHook += DoOvercharm;
Expand Down
2 changes: 1 addition & 1 deletion GodSeekerPlus/Modules/FrameRateLimit.cs
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

namespace GodSeekerPlus.Modules;

[Module(toggleable = true, defaultEnabled = false)]
[Module(toggleableLevel = ToggleableLevel.AnyTime, defaultEnabled = false)]
internal sealed class FrameRateLimit : Module {
private int time = default;

Expand Down
2 changes: 1 addition & 1 deletion GodSeekerPlus/Modules/GreyPrinceEnterShort.cs
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
namespace GodSeekerPlus.Modules;

[Module(toggleable = true, defaultEnabled = true)]
[Module(toggleableLevel = ToggleableLevel.AnyTime, defaultEnabled = true)]
internal sealed class GreyPrinceEnterShort : Module {
private protected override void Load() =>
On.PlayMakerFSM.OnEnable += ModifyGPFSM;
Expand Down
2 changes: 1 addition & 1 deletion GodSeekerPlus/Modules/HalveDamage.cs
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
namespace GodSeekerPlus.Modules;

[Module(toggleable = true, defaultEnabled = false)]
[Module(toggleableLevel = ToggleableLevel.AnyTime, defaultEnabled = false)]
internal sealed class HalveDamage : Module {
private protected override void Load() =>
ModHooks.TakeHealthHook += MakeDamageHalved;
Expand Down
2 changes: 1 addition & 1 deletion GodSeekerPlus/Modules/MemorizeBindings.cs
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@

namespace GodSeekerPlus.Modules;

[Module(toggleable = true, defaultEnabled = true)]
[Module(toggleableLevel = ToggleableLevel.AnyTime, defaultEnabled = true)]
internal sealed class MemorizeBindings : Module {
private protected override void Load() {
On.BossDoorChallengeUI.ShowSequence += ApplyBindingStates;
Expand Down
9 changes: 3 additions & 6 deletions GodSeekerPlus/Modules/Module.cs
Original file line number Diff line number Diff line change
Expand Up @@ -11,17 +11,14 @@ internal abstract class Module {

private bool Loaded { get; set; } = false;

internal bool Toggleable =>
GetType().GetCustomAttribute<ModuleAttribute>().toggleable;
internal ToggleableLevel ToggleableLevel =>
GetType().GetCustomAttribute<ModuleAttribute>().toggleableLevel;

internal bool Enabled {
get => GodSeekerPlus.Instance.GlobalSettings.modules[Name];
set {
GodSeekerPlus.Instance.GlobalSettings.modules[Name] = value;

if (Toggleable) {
Update();
}
Update();
}
}

Expand Down
8 changes: 7 additions & 1 deletion GodSeekerPlus/Modules/ModuleAttribute.cs
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,12 @@ namespace GodSeekerPlus.Modules;

[AttributeUsage(AttributeTargets.Class)]
internal sealed class ModuleAttribute : Attribute {
public bool toggleable;
public ToggleableLevel toggleableLevel;
public bool defaultEnabled;
}

internal enum ToggleableLevel {
AnyTime,
ReloadSave,
RestartGame
}
2 changes: 1 addition & 1 deletion GodSeekerPlus/Modules/UnlockEternalOrdeal.cs
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
namespace GodSeekerPlus.Modules;

[Module(toggleable = true, defaultEnabled = true)]
[Module(toggleableLevel = ToggleableLevel.AnyTime, defaultEnabled = true)]
internal sealed class UnlockEternalOrdeal : Module {
private protected override void Load() =>
ModHooks.AfterSavegameLoadHook += SetOrdealUnlocked;
Expand Down
2 changes: 1 addition & 1 deletion GodSeekerPlus/Modules/UnlockRadiance.cs
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
namespace GodSeekerPlus.Modules;

[Module(toggleable = true, defaultEnabled = true)]
[Module(toggleableLevel = ToggleableLevel.AnyTime, defaultEnabled = true)]
internal sealed class UnlockRadiance : Module {
private const string scene = "Radiance Boss Scene";

Expand Down
2 changes: 1 addition & 1 deletion GodSeekerPlus/Modules/UnlockRadiant.cs
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
namespace GodSeekerPlus.Modules;

[Module(toggleable = true, defaultEnabled = true)]
[Module(toggleableLevel = ToggleableLevel.AnyTime, defaultEnabled = true)]
internal sealed class UnlockRadiant : Module {
private protected override void Load() =>
On.BossChallengeUI.Setup += UnlockTier3;
Expand Down

0 comments on commit 28025e0

Please sign in to comment.