Skip to content

Commit 04b9a3e

Browse files
committed
Fix remove light source trigger
1 parent 26ceb46 commit 04b9a3e

File tree

3 files changed

+16
-57
lines changed

3 files changed

+16
-57
lines changed

Ahorn/lang/en_gb.lang

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -32,9 +32,6 @@ placements.triggers.SpringCollab2020/SmoothCameraOffsetTrigger.tooltips.offsetYT
3232
placements.triggers.SpringCollab2020/SmoothCameraOffsetTrigger.tooltips.positionMode=The fade direction.
3333
placements.triggers.SpringCollab2020/SmoothCameraOffsetTrigger.tooltips.onlyOnce=If checked, the trigger will be disabled when the player first leaves it.
3434

35-
# Remove Light Sources Trigger
36-
placements.triggers.SpringCollab2020/RemoveLightSourcesTrigger.tooltips.persistent=If checked, all light sources will stay disabled even after leaving the trigger.
37-
3835
# Dash Spring
3936
placements.entities.SpringCollab2020/dashSpring.tooltips.playerCanUse=Determines whether the player is able to interact with the spring.
4037

Ahorn/triggers/removeLightSourcesTrigger.jl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
using ..Ahorn, Maple
44

5-
@mapdef Trigger "SpringCollab2020/RemoveLightSourcesTrigger" RemoveLightSourcesTrigger(x::Integer, y::Integer, width::Integer=Maple.defaultTriggerWidth, height::Integer=Maple.defaultTriggerHeight, persistent::Bool=true)
5+
@mapdef Trigger "SpringCollab2020/RemoveLightSourcesTrigger" RemoveLightSourcesTrigger(x::Integer, y::Integer, width::Integer=Maple.defaultTriggerWidth, height::Integer=Maple.defaultTriggerHeight)
66

77
const placements = Ahorn.PlacementDict(
88
"Remove Light Sources (Spring Collab 2020)" => Ahorn.EntityPlacement(
Lines changed: 15 additions & 53 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,12 @@
11
using Celeste.Mod.Entities;
22
using Monocle;
33
using Microsoft.Xna.Framework;
4-
using System.Collections.Generic;
54

65
namespace Celeste.Mod.SpringCollab2020.Triggers {
76
[CustomEntity("SpringCollab2020/RemoveLightSourcesTrigger")]
87
[Tracked]
98
class RemoveLightSourcesTrigger : Trigger {
109
public RemoveLightSourcesTrigger(EntityData data, Vector2 offset) : base(data, offset) {
11-
Persistent = data.Bool("persistent", true);
1210
level = SceneAs<Level>();
1311
}
1412

@@ -23,75 +21,39 @@ public static void Unload() {
2321
}
2422

2523
private static void LevelLoadHandler(Level loadedLevel, Player.IntroTypes playerIntro, bool isFromLoader) {
26-
if (loadedLevel.Session.GetFlag("lightsDisabled")) {
27-
DisableAllLights(loadedLevel);
28-
On.Celeste.Level.TransitionTo += TransitionLightSources;
29-
}
24+
if (loadedLevel.Session.GetFlag("lightsDisabled"))
25+
DisableLightRender();
3026
}
3127

3228
private static void OnExitHandler(Level exitLevel, LevelExit exit, LevelExit.Mode mode, Session session, HiresSnow snow) {
33-
On.Celeste.Level.TransitionTo -= TransitionLightSources;
29+
EnableLightRender();
3430
}
3531

36-
private static void TransitionLightSources(On.Celeste.Level.orig_TransitionTo orig, Level transitionLevel, LevelData next, Vector2 direction) {
37-
lightSources = new List<Component>();
38-
bloomSources = new List<Component>();
39-
40-
DisableAllLights(transitionLevel);
41-
orig(transitionLevel, next, direction);
42-
}
32+
private static void LightRendererHook(On.Celeste.LightingRenderer.orig_Render orig, LightingRenderer self, Scene scene) { }
4333

44-
private static void DisableAllLights(Level disableLevel) {
45-
EntityList entities = disableLevel.Entities;
34+
private static void BloomRendererHook(On.Celeste.BloomRenderer.orig_Apply orig, BloomRenderer self, VirtualRenderTarget target, Scene scene) { }
4635

47-
foreach (Entity entity in entities) {
48-
foreach (Component component in entity.Components.ToArray()) {
49-
if (component is VertexLight) {
50-
lightSources.Add(component);
51-
component.Visible = false;
52-
}
36+
private static void EnableLightRender() {
37+
On.Celeste.LightingRenderer.Render -= LightRendererHook;
38+
On.Celeste.BloomRenderer.Apply -= BloomRendererHook;
39+
}
5340

54-
if (component is BloomPoint) {
55-
bloomSources.Add(component);
56-
component.Visible = false;
57-
}
58-
}
59-
}
41+
private static void DisableLightRender() {
42+
On.Celeste.LightingRenderer.Render += LightRendererHook;
43+
On.Celeste.BloomRenderer.Apply += BloomRendererHook;
6044
}
6145

6246
public override void OnEnter(Player player) {
6347
base.OnEnter(player);
6448

6549
level = SceneAs<Level>();
6650

67-
if (Persistent && level.Session.GetFlag("lightsDisabled") == false)
68-
On.Celeste.Level.TransitionTo += TransitionLightSources;
69-
70-
if (Persistent)
51+
if (level.Session.GetFlag("lightsDisabled") == false) {
7152
level.Session.SetFlag("lightsDisabled", true);
72-
73-
DisableAllLights(level);
74-
}
75-
76-
public override void OnLeave(Player player) {
77-
base.OnLeave(player);
78-
79-
if (Persistent || level.Session.GetFlag("lightsDisabled") == true)
80-
return;
81-
82-
foreach (Component component in lightSources)
83-
component.Visible = true;
84-
85-
foreach (Component component in bloomSources)
86-
component.Visible = true;
53+
DisableLightRender();
54+
}
8755
}
8856

89-
private static List<Component> lightSources = new List<Component>();
90-
91-
private static List<Component> bloomSources = new List<Component>();
92-
9357
private Level level;
94-
95-
private bool Persistent = true;
9658
}
9759
}

0 commit comments

Comments
 (0)