Skip to content

Commit 11975c4

Browse files
committed
Do not use TimeRateModifiers for mini heart
1 parent ac8102c commit 11975c4

File tree

3 files changed

+11
-9
lines changed

3 files changed

+11
-9
lines changed

.gitignore

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -351,3 +351,5 @@ MigrationBackup/
351351

352352
# JetBrains Rider
353353
.idea/
354+
355+
CollabUtils2.zip

CollabUtils2.zip

-5.03 MB
Binary file not shown.

Entities/MiniHeart.cs

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -19,8 +19,6 @@ public class MiniHeart : AbstractMiniHeart {
1919
private EventInstance pauseMusicSnapshot;
2020
private SoundEmitter collectSound;
2121

22-
private TimeRateModifier timeRateModifier;
23-
2422
public MiniHeart(EntityData data, Vector2 position, EntityID gid)
2523
: base(data, position, gid) {
2624

@@ -51,9 +49,6 @@ private IEnumerator SmashRoutine(Player player, Level level) {
5149
item.OnCollect();
5250
}
5351

54-
timeRateModifier = new TimeRateModifier(1);
55-
Add(timeRateModifier);
56-
5752
// play the collect jingle
5853
collectSound = SoundEmitter.Play("event:/SC2020_heartShard_get", this);
5954

@@ -68,7 +63,7 @@ private IEnumerator SmashRoutine(Player player, Level level) {
6863
yield return null;
6964
Celeste.Freeze(0.2f);
7065
yield return null;
71-
timeRateModifier.Multiplier = 0.5f;
66+
setTimeRate(0.5f);
7267
player.Depth = Depths.FormationSequences;
7368
for (int i = 0; i < 10; i++) {
7469
Scene.Add(new AbsorbOrb(Position));
@@ -83,7 +78,7 @@ private IEnumerator SmashRoutine(Player player, Level level) {
8378
// slow down time further, to a freeze
8479
Visible = false;
8580
for (float time = 0f; time < 2f; time += Engine.RawDeltaTime) {
86-
timeRateModifier.Multiplier = Calc.Approach(timeRateModifier.Multiplier, 0f, Engine.RawDeltaTime * 0.25f);
81+
setTimeRate(Calc.Approach(getTimeRate(), 0f, Engine.RawDeltaTime * 0.25f));
8782
yield return null;
8883
}
8984

@@ -96,7 +91,7 @@ private IEnumerator SmashRoutine(Player player, Level level) {
9691
yield return 100f;
9792
}
9893

99-
Remove(timeRateModifier);
94+
setTimeRate(1f);
10095
Tag = Tags.FrozenUpdate;
10196
level.Frozen = true;
10297

@@ -115,6 +110,11 @@ private IEnumerator SmashRoutine(Player player, Level level) {
115110
ReturnToLobbyHelper.TriggerReturnToLobby();
116111
}
117112

113+
#pragma warning disable CS0618 // Switching to a TimeRateModifier desyncs TASes
114+
private static void setTimeRate(float timeRate) => Engine.TimeRate = timeRate;
115+
private static float getTimeRate() => Engine.TimeRate;
116+
#pragma warning restore CS0618
117+
118118
public override void Update() {
119119
base.Update();
120120

@@ -134,7 +134,7 @@ private void interruptCollection() {
134134
level.Frozen = false;
135135
level.CanRetry = true;
136136
level.FormationBackdrop.Display = false;
137-
if (timeRateModifier != null) Remove(timeRateModifier);
137+
setTimeRate(1f);
138138

139139
if (collectSound != null) {
140140
collectSound.RemoveSelf();

0 commit comments

Comments
 (0)