Skip to content

Commit

Permalink
Neat little fade out and fade in + refractoring
Browse files Browse the repository at this point in the history
  • Loading branch information
Paloys committed Nov 7, 2023
1 parent 36188e9 commit b4ace79
Show file tree
Hide file tree
Showing 4 changed files with 36 additions and 23 deletions.
9 changes: 3 additions & 6 deletions GoldenTrainer/CompletionDisplay.cs
Original file line number Diff line number Diff line change
@@ -1,8 +1,6 @@
using Celeste;
using Microsoft.Xna.Framework;
using Microsoft.Xna.Framework.Input;
using Monocle;
using On.Celeste.Mod;

namespace GoldenTrainer
{
Expand All @@ -20,6 +18,8 @@ public class CompletionDisplay : Entity
private float _lerp;

private float _width;



public CompletionDisplay(Level level)
{
Expand Down Expand Up @@ -63,12 +63,10 @@ public float GetYPosition()

public override void Update()
{

if (GoldenTrainerModule.Settings.ActivateButton.Pressed)
{
GoldenTrainerModule.Instance.CompletionCount = 0;
GoldenTrainerModule.Settings.ActivateMod = !GoldenTrainerModule.Settings.ActivateMod;
Visible = GoldenTrainerModule.Settings.ActivateMod;
}
if (GoldenTrainerModule.Settings.ActivateMod)
{
Expand All @@ -87,12 +85,11 @@ public override void Update()

Y = Calc.Approach(Y, GetYPosition(), Engine.DeltaTime * 800f);

_lerp = !_level.Paused ? Calc.Approach(_lerp, 1f, 1.2f * Engine.RawDeltaTime) : Calc.Approach(_lerp, 0f, 2f * Engine.RawDeltaTime);
_lerp = GoldenTrainerModule.Settings.ActivateMod && !(_level.Paused ^ _level.PauseMainMenuOpen) ? Calc.Approach(_lerp, 1f, 1.2f * Engine.RawDeltaTime) : Calc.Approach(_lerp, 0f, 2f * Engine.RawDeltaTime);
}

public override void Render()
{
Visible = GoldenTrainerModule.Settings.ActivateMod;
var basePos = Vector2.Lerp(new Vector2(0 - _width, Y), new Vector2(0, Y), Ease.CubeOut(_lerp)).Round();

_bg.Draw(new Vector2(_width - _bg.Width + basePos.X, Y));
Expand Down
46 changes: 31 additions & 15 deletions GoldenTrainer/GoldenTrainer.cs
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
using MonoMod.RuntimeDetour;
using System;
using System.Collections;
using System.Linq;

namespace GoldenTrainer
{
Expand Down Expand Up @@ -90,18 +91,36 @@ public override void Unload()

private static void RespawnAtEnd()
{
/*Scene scene = p.Scene;
Instance._level.CoreMode = Instance._coreMode;
scene.Remove(p);
p = new Player(Instance._level.Session.RespawnPoint ?? p.Position, p.DefaultSpriteMode);
scene.Add(p);
Instance._level.DoScreenWipe(true);*/
Engine.Scene = new LevelLoader(Instance._level.Session);
}

private static bool PlayerIsHoldingGoldenBerry(Player player) {
return player?.Leader?.Followers?.Any(f => {
if (f.Entity.GetType().Name == "PlatinumBerry") {
return true;
}
if (!(f.Entity is Strawberry)) {
return false;
}
Strawberry berry = (Strawberry)f.Entity;
return berry.Golden && !berry.Winged;
}) ?? false;
}

private static bool ShouldRespawn(Player player) {
return Settings.ActivateMod && !PlayerIsHoldingGoldenBerry(player);
}

private 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)
{
if (Settings.ActivateMod)
if (ShouldRespawn(self))
{
CompletionCount++;
if (CompletionCount < Settings.NumberOfCompletions)
Expand All @@ -124,7 +143,7 @@ private void RespawnAtEndTransition(On.Celeste.Level.orig_TransitionTo orig, Lev

private void ResetUponDeath(Player player)
{
if (!Settings.ActivateMod) return;
if (!ShouldRespawn(player)) return;
if (DeathCausedByMod)
{
DeathCausedByMod = false;
Expand All @@ -135,13 +154,11 @@ private void ResetUponDeath(Player player)

private void RespawnAtEndCrystal(On.Celeste.HeartGem.orig_Collect orig, HeartGem self, Player player)
{
if (Settings.ActivateMod && !self.IsFake)
if (ShouldRespawn(player) && !self.IsFake)
{
CompletionCount++;
if (CompletionCount < Settings.NumberOfCompletions)
{
//DeathCausedByMod = true;
//player.Die(Vector2.Zero, true, false);
RespawnAtEnd();
}
else
Expand All @@ -155,7 +172,7 @@ private void RespawnAtEndCrystal(On.Celeste.HeartGem.orig_Collect orig, HeartGem

private void RespawnAtEndTrigger(On.Celeste.ChangeRespawnTrigger.orig_OnEnter orig, ChangeRespawnTrigger self, Player p)
{
if (Settings.ActivateMod && self.Target != _level.Session.RespawnPoint)
if (ShouldRespawn(p) && self.Target != _level.Session.RespawnPoint)
{
CompletionCount++;
if (CompletionCount < Settings.NumberOfCompletions)
Expand Down Expand Up @@ -198,7 +215,7 @@ private void SummitCheckpointHandler(ILContext il)
private static bool SummitCheckpointUpdateHook(Player p, SummitCheckpoint self)
{
var temp = false;
if (Instance._latestSummitCheckpointTriggered != self.Number && Settings.ActivateMod && !Instance.TransitionedAfterTransitionToCheck) {
if (Instance._latestSummitCheckpointTriggered != self.Number && ShouldRespawn(p) && !Instance.TransitionedAfterTransitionToCheck) {
Instance.CompletionCount++;
if (Instance.CompletionCount < Settings.NumberOfCompletions)
{
Expand All @@ -223,10 +240,9 @@ private static bool SummitCheckpointUpdateHook(Player p, SummitCheckpoint self)

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

private void RespawnInRoomWithBerry(ILContext il)
Expand Down
2 changes: 1 addition & 1 deletion GoldenTrainer/GoldenTrainer.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@
<DefineConstants>DEBUG;TRACE</DefineConstants>
<DebugType>full</DebugType>
<PlatformTarget>x86</PlatformTarget>
<LangVersion>7.3</LangVersion>
<LangVersion>9</LangVersion>
<ErrorReport>prompt</ErrorReport>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release|x86'">
Expand Down
2 changes: 1 addition & 1 deletion everest.yaml
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
- Name: GoldenTrainer
Version: 1.4.4
Version: 1.5.3
DLL: GoldenTrainer/bin/x86/Debug/GoldenTrainer.dll
Dependencies:
- Name: Everest
Expand Down

0 comments on commit b4ace79

Please sign in to comment.