Skip to content

Commit

Permalink
Fixed a problem with input being accepted when game is paused
Browse files Browse the repository at this point in the history
  • Loading branch information
Paloys committed Dec 3, 2023
1 parent b4ace79 commit 9643922
Show file tree
Hide file tree
Showing 4 changed files with 39 additions and 47 deletions.
14 changes: 7 additions & 7 deletions GoldenTrainer/CompletionDisplay.cs
Original file line number Diff line number Diff line change
@@ -1,4 +1,7 @@
using Celeste;
using System;
using System.Reflection;
using Celeste;
using Celeste.Mod;
using Microsoft.Xna.Framework;
using Monocle;

Expand All @@ -18,8 +21,6 @@ public class CompletionDisplay : Entity
private float _lerp;

private float _width;



public CompletionDisplay(Level level)
{
Expand Down Expand Up @@ -63,24 +64,23 @@ public float GetYPosition()

public override void Update()
{
if (GoldenTrainerModule.Settings.ActivateButton.Pressed)
if (GoldenTrainerModule.Settings.ActivateButton.Pressed && !_level.Paused)
{
GoldenTrainerModule.Instance.CompletionCount = 0;
GoldenTrainerModule.Settings.ActivateMod = !GoldenTrainerModule.Settings.ActivateMod;
}
if (GoldenTrainerModule.Settings.ActivateMod)
{
if (GoldenTrainerModule.Settings.IncrementButton.Pressed && GoldenTrainerModule.Settings.NumberOfCompletions < 10)
if (GoldenTrainerModule.Settings.IncrementButton.Pressed && GoldenTrainerModule.Settings.NumberOfCompletions < 10 && !_level.Paused)
{
GoldenTrainerModule.Settings.NumberOfCompletions++;
}

else if (GoldenTrainerModule.Settings.DecrementButton.Pressed && GoldenTrainerModule.Settings.NumberOfCompletions > 2)
else if (GoldenTrainerModule.Settings.DecrementButton.Pressed && GoldenTrainerModule.Settings.NumberOfCompletions > 2 && !_level.Paused)
{
GoldenTrainerModule.Settings.NumberOfCompletions--;
}
}

base.Update();

Y = Calc.Approach(Y, GetYPosition(), Engine.DeltaTime * 800f);
Expand Down
65 changes: 28 additions & 37 deletions GoldenTrainer/GoldenTrainer.cs
Original file line number Diff line number Diff line change
Expand Up @@ -47,8 +47,6 @@ private IEnumerator DelayCountChangeRoutine()
Display.SetDisplayText(_completionCount + "/" + Settings.NumberOfCompletions);
}

public bool DeathCausedByMod { get; set; }

public CompletionDisplay Display;
private Level _level;

Expand All @@ -63,13 +61,13 @@ public override void Load()

On.Celeste.Level.TransitionTo += RespawnAtEndTransition;
Everest.Events.Player.OnDie += ResetUponDeath;
On.Celeste.LevelLoader.LoadingThread += (orig, self) =>
On.Celeste.LevelLoader.LoadingThread += static (orig, self) =>
{
orig(self);
self.Level.Add(Display = new CompletionDisplay(self.Level));
Display.SetDisplayText(CompletionCount + "/" + Settings.NumberOfCompletions);
Display.Visible = Settings.ActivateMod;
_level = self.Level;
self.Level.Add(Instance.Display = new CompletionDisplay(self.Level));
Instance.Display.SetDisplayText(Instance.CompletionCount + "/" + Settings.NumberOfCompletions);
Instance.Display.Visible = Settings.ActivateMod;
Instance._level = self.Level;
};
On.Celeste.HeartGem.Collect += RespawnAtEndCrystal;
On.Celeste.ChangeRespawnTrigger.OnEnter += RespawnAtEndTrigger;
Expand Down Expand Up @@ -100,12 +98,10 @@ private static bool PlayerIsHoldingGoldenBerry(Player player) {
return true;
}
if (!(f.Entity is Strawberry)) {
if (!(f.Entity is Strawberry berry)) {
return false;
}
Strawberry berry = (Strawberry)f.Entity;
return berry.Golden && !berry.Winged;
}) ?? false;
}
Expand All @@ -114,23 +110,23 @@ private static bool ShouldRespawn(Player player) {
return Settings.ActivateMod && !PlayerIsHoldingGoldenBerry(player);
}

private bool ShouldRespawn(Level level) {
private static bool ShouldRespawn(Level level) {
return Settings.ActivateMod && !PlayerIsHoldingGoldenBerry(level.Tracker.GetEntity<Player>());
}
private void RespawnAtEndTransition(On.Celeste.Level.orig_TransitionTo orig, Level self, LevelData next, Vector2 direction)

private static void RespawnAtEndTransition(On.Celeste.Level.orig_TransitionTo orig, Level self, LevelData next, Vector2 direction)
{
if (ShouldRespawn(self))
{
CompletionCount++;
if (CompletionCount < Settings.NumberOfCompletions)
Instance.CompletionCount++;
if (Instance.CompletionCount < Settings.NumberOfCompletions)
{
Instance.TransitionedAfterTransitionToCheck = true;
RespawnAtEnd();
}
else
{
CompletionCount = 0;
Instance.CompletionCount = 0;
Audio.Play(SFX.game_07_checkpointconfetti);
orig(self, next, direction);
}
Expand All @@ -143,45 +139,40 @@ private void RespawnAtEndTransition(On.Celeste.Level.orig_TransitionTo orig, Lev

private void ResetUponDeath(Player player)
{
if (!ShouldRespawn(player)) return;
if (DeathCausedByMod)
{
DeathCausedByMod = false;
return;
}
if (Settings.ActivateMod) return;
CompletionCount = 0;
}

private void RespawnAtEndCrystal(On.Celeste.HeartGem.orig_Collect orig, HeartGem self, Player player)
private static void RespawnAtEndCrystal(On.Celeste.HeartGem.orig_Collect orig, HeartGem self, Player player)
{
if (ShouldRespawn(player) && !self.IsFake)
{
CompletionCount++;
if (CompletionCount < Settings.NumberOfCompletions)
Instance.CompletionCount++;
if (Instance.CompletionCount < Settings.NumberOfCompletions)
{
RespawnAtEnd();
}
else
{
CompletionCount = 0;
Instance.CompletionCount = 0;
Audio.Play(SFX.game_07_checkpointconfetti);
}
}
orig(self, player);
}
private void RespawnAtEndTrigger(On.Celeste.ChangeRespawnTrigger.orig_OnEnter orig, ChangeRespawnTrigger self, Player p)

private static void RespawnAtEndTrigger(On.Celeste.ChangeRespawnTrigger.orig_OnEnter orig, ChangeRespawnTrigger self, Player p)
{
if (ShouldRespawn(p) && self.Target != _level.Session.RespawnPoint)
if (ShouldRespawn(p) && self.Target != Instance._level.Session.RespawnPoint)
{
CompletionCount++;
if (CompletionCount < Settings.NumberOfCompletions)
Instance.CompletionCount++;
if (Instance.CompletionCount < Settings.NumberOfCompletions)
{
RespawnAtEnd();
}
else
{
CompletionCount = 0;
Instance.CompletionCount = 0;
Audio.Play(SFX.game_07_checkpointconfetti);
orig(self, p);
}
Expand All @@ -192,7 +183,7 @@ private void RespawnAtEndTrigger(On.Celeste.ChangeRespawnTrigger.orig_OnEnter or
}
}

private void SummitCheckpointHandler(ILContext il)
private static void SummitCheckpointHandler(ILContext il)
{
ILCursor cursor = new ILCursor(il);
if (cursor.TryGotoNext(MoveType.After, instr => instr.MatchCall<Entity>("get_Scene"), instr => instr.MatchIsinst<Level>()))
Expand Down Expand Up @@ -238,10 +229,10 @@ private static bool SummitCheckpointUpdateHook(Player p, SummitCheckpoint self)
!temp;
}

private Session OnSessionRestart(On.Celeste.Session.orig_Restart orig, Session self, string intoLevel = null)
private static Session OnSessionRestart(On.Celeste.Session.orig_Restart orig, Session self, string intoLevel = null)
{
_latestSummitCheckpointTriggered = -1;
CompletionCount = 0;
Instance._latestSummitCheckpointTriggered = -1;
Instance.CompletionCount = 0;
return orig(self, intoLevel);
}

Expand All @@ -259,7 +250,7 @@ private void RespawnInRoomWithBerry(ILContext il)
}
}

private void AutoSkipCutscene(On.Celeste.Level.orig_Update orig, Level self)
private static void AutoSkipCutscene(On.Celeste.Level.orig_Update orig, Level self)
{
orig(self);
if (!self.InCutscene || self.SkippingCutscene || !Settings.SkipCutscenesAutomatically || self.Transitioning || !self.CanPause) return;
Expand Down
3 changes: 3 additions & 0 deletions GoldenTrainer/GoldenTrainer.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -84,6 +84,9 @@
<Compile Include="Properties\AssemblyInfo.cs" />
</ItemGroup>
<ItemGroup>
<PackageReference Include="CelesteAnalyzer">
<Version>1.0.3.1</Version>
</PackageReference>
<PackageReference Include="Mono.Cecil">
<Version>0.11.4</Version>
</PackageReference>
Expand Down
4 changes: 1 addition & 3 deletions everest.yaml
Original file line number Diff line number Diff line change
@@ -1,10 +1,8 @@
- Name: GoldenTrainer
Version: 1.5.3
Version: 1.5.4
DLL: GoldenTrainer/bin/x86/Debug/GoldenTrainer.dll
Dependencies:
- Name: Everest
Version: 1.4.0.0




0 comments on commit 9643922

Please sign in to comment.