Skip to content

Commit 6d2cbd7

Browse files
authored
Merge branch 'master' into integrate_map_specific_code_mods
2 parents 87eab61 + 62e93af commit 6d2cbd7

File tree

3 files changed

+131
-62
lines changed

3 files changed

+131
-62
lines changed
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
module SpringCollab2020HeatWaveNoColorGrade
2+
3+
using ..Ahorn, Maple
4+
5+
@mapdef Effect "SpringCollab2020/HeatWaveNoColorGrade" HeatWaveNoColorGrade(only::String="*", exclude::String="")
6+
7+
placements = HeatWaveNoColorGrade
8+
9+
function Ahorn.canFgBg(effect::HeatWaveNoColorGrade)
10+
return true, true
11+
end
12+
13+
end

Effects/HeatWaveNoColorGrade.cs

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
using Monocle;
2+
using MonoMod.Utils;
3+
using System;
4+
using System.Collections.Generic;
5+
using System.Linq;
6+
using System.Text;
7+
using System.Threading.Tasks;
8+
9+
namespace Celeste.Mod.SpringCollab2020.Effects {
10+
/// <summary>
11+
/// A heatwave effect that does not affect the colorgrade when it is hidden.
12+
/// </summary>
13+
class HeatWaveNoColorGrade : HeatWave {
14+
private DynData<HeatWave> self = new DynData<HeatWave>();
15+
16+
public HeatWaveNoColorGrade() : base() {
17+
self = new DynData<HeatWave>(this);
18+
}
19+
20+
public override void Update(Scene scene) {
21+
Level level = scene as Level;
22+
bool show = (IsVisible(level) && level.CoreMode != Session.CoreModes.None);
23+
24+
if (!show) {
25+
// if not fading out, the heatwave is invisible, so don't even bother updating it.
26+
if (self.Get<float>("fade") > 0) {
27+
// be sure to lock color grading to prevent it from becoming "none".
28+
DynData<Level> levelData = new DynData<Level>(level);
29+
30+
float colorGradeEase = levelData.Get<float>("colorGradeEase");
31+
float colorGradeEaseSpeed = levelData.Get<float>("colorGradeEaseSpeed");
32+
string colorGrade = level.Session.ColorGrade;
33+
34+
base.Update(scene);
35+
36+
levelData["colorGradeEase"] = colorGradeEase;
37+
levelData["colorGradeEaseSpeed"] = colorGradeEaseSpeed;
38+
level.Session.ColorGrade = colorGrade;
39+
}
40+
} else {
41+
// heat wave is visible: update as usual.
42+
base.Update(scene);
43+
}
44+
}
45+
}
46+
}

SpringCollab2020Module.cs

Lines changed: 72 additions & 62 deletions
Original file line numberDiff line numberDiff line change
@@ -1,40 +1,42 @@
1-
using Celeste.Mod.SpringCollab2020.Entities;
2-
using Celeste.Mod.SpringCollab2020.Triggers;
1+
using Celeste.Mod.SpringCollab2020.Effects;
2+
using Celeste.Mod.SpringCollab2020.Entities;
3+
using Celeste.Mod.SpringCollab2020.Triggers;
34
using Microsoft.Xna.Framework;
45
using System;
56

6-
namespace Celeste.Mod.SpringCollab2020 {
7-
public class SpringCollab2020Module : EverestModule {
8-
7+
namespace Celeste.Mod.SpringCollab2020 {
8+
public class SpringCollab2020Module : EverestModule {
9+
910
public static SpringCollab2020Module Instance;
1011

1112
public override Type SessionType => typeof(SpringCollab2020Session);
1213
public SpringCollab2020Session Session => (SpringCollab2020Session) _Session;
1314

14-
public SpringCollab2020Module() {
15-
Instance = this;
16-
}
17-
18-
public override void Load() {
19-
NoRefillField.Load();
20-
FloatierSpaceBlock.Load();
21-
MoveBlockBarrier.Load();
22-
MoveBlockBarrierRenderer.Load();
23-
RemoveLightSourcesTrigger.Load();
24-
SafeRespawnCrumble.Load();
25-
UpsideDownJumpThru.Load();
26-
BubbleReturnBerry.Load();
27-
SidewaysJumpThru.Load();
28-
CrystalBombDetonatorRenderer.Load();
29-
FlagTouchSwitch.Load();
30-
DisableIcePhysicsTrigger.Load();
31-
MultiRoomStrawberrySeed.Load();
32-
MadelineSilhouetteTrigger.Load();
33-
BlockJellySpawnTrigger.Load();
34-
StrawberryIgnoringLighting.Load();
35-
SeekerCustomColors.Load();
36-
CameraCatchupSpeedTrigger.Load();
15+
public SpringCollab2020Module() {
16+
Instance = this;
17+
}
18+
19+
public override void Load() {
20+
NoRefillField.Load();
21+
FloatierSpaceBlock.Load();
22+
MoveBlockBarrier.Load();
23+
MoveBlockBarrierRenderer.Load();
24+
RemoveLightSourcesTrigger.Load();
25+
SafeRespawnCrumble.Load();
26+
UpsideDownJumpThru.Load();
27+
BubbleReturnBerry.Load();
28+
SidewaysJumpThru.Load();
29+
CrystalBombDetonatorRenderer.Load();
30+
FlagTouchSwitch.Load();
31+
DisableIcePhysicsTrigger.Load();
32+
MultiRoomStrawberrySeed.Load();
33+
MadelineSilhouetteTrigger.Load();
34+
BlockJellySpawnTrigger.Load();
35+
StrawberryIgnoringLighting.Load();
36+
SeekerCustomColors.Load();
37+
CameraCatchupSpeedTrigger.Load();
3738
ColorGradeFadeTrigger.Load();
39+
Everest.Events.Level.OnLoadBackdrop += onLoadBackdrop;
3840

3941
DecalRegistry.AddPropertyHandler("scale", (decal, attrs) => {
4042
Vector2 scale = decal.Scale;
@@ -45,42 +47,50 @@ public override void Load() {
4547
scale /= float.Parse(attrs["divide"].Value);
4648
}
4749
decal.Scale = scale;
48-
});
49-
}
50-
51-
public override void LoadContent(bool firstLoad) {
52-
base.LoadContent(firstLoad);
53-
GlassBerry.LoadContent();
54-
StrawberryIgnoringLighting.LoadContent();
55-
}
56-
57-
public override void Unload() {
58-
NoRefillField.Unload();
59-
FloatierSpaceBlock.Unload();
60-
MoveBlockBarrier.Unload();
61-
MoveBlockBarrierRenderer.Unload();
62-
RemoveLightSourcesTrigger.Unload();
63-
SafeRespawnCrumble.Unload();
64-
GlassBerry.Unload();
65-
UpsideDownJumpThru.Unload();
66-
BubbleReturnBerry.Unload();
67-
SidewaysJumpThru.Unload();
68-
CrystalBombDetonatorRenderer.Unload();
69-
FlagTouchSwitch.Unload();
70-
DisableIcePhysicsTrigger.Unload();
71-
MultiRoomStrawberrySeed.Unload();
72-
MadelineSilhouetteTrigger.Unload();
73-
BlockJellySpawnTrigger.Unload();
74-
StrawberryIgnoringLighting.Unload();
75-
SeekerCustomColors.Unload();
76-
CameraCatchupSpeedTrigger.Unload();
77-
ColorGradeFadeTrigger.Unload();
78-
}
79-
50+
});
51+
}
52+
53+
public override void LoadContent(bool firstLoad) {
54+
base.LoadContent(firstLoad);
55+
GlassBerry.LoadContent();
56+
StrawberryIgnoringLighting.LoadContent();
57+
}
58+
59+
public override void Unload() {
60+
NoRefillField.Unload();
61+
FloatierSpaceBlock.Unload();
62+
MoveBlockBarrier.Unload();
63+
MoveBlockBarrierRenderer.Unload();
64+
RemoveLightSourcesTrigger.Unload();
65+
SafeRespawnCrumble.Unload();
66+
GlassBerry.Unload();
67+
UpsideDownJumpThru.Unload();
68+
BubbleReturnBerry.Unload();
69+
SidewaysJumpThru.Unload();
70+
CrystalBombDetonatorRenderer.Unload();
71+
FlagTouchSwitch.Unload();
72+
DisableIcePhysicsTrigger.Unload();
73+
MultiRoomStrawberrySeed.Unload();
74+
MadelineSilhouetteTrigger.Unload();
75+
BlockJellySpawnTrigger.Unload();
76+
StrawberryIgnoringLighting.Unload();
77+
SeekerCustomColors.Unload();
78+
CameraCatchupSpeedTrigger.Unload();
79+
ColorGradeFadeTrigger.Unload();
80+
Everest.Events.Level.OnLoadBackdrop -= onLoadBackdrop;
81+
}
82+
83+
private Backdrop onLoadBackdrop(MapData map, BinaryPacker.Element child, BinaryPacker.Element above) {
84+
if (child.Name.Equals("SpringCollab2020/HeatWaveNoColorGrade", StringComparison.OrdinalIgnoreCase)) {
85+
return new HeatWaveNoColorGrade();
86+
}
87+
return null;
88+
}
89+
8090
public override void PrepareMapDataProcessors(MapDataFixup context) {
8191
base.PrepareMapDataProcessors(context);
8292

8393
context.Add<SpringCollab2020MapDataProcessor>();
84-
}
85-
}
94+
}
95+
}
8696
}

0 commit comments

Comments
 (0)