Skip to content

Commit 14754c9

Browse files
committed
Make theme choices persistent per save in Linj, NeoKat, RealVet, Zerex and Bob Dole's entries
1 parent 4950dab commit 14754c9

File tree

5 files changed

+113
-0
lines changed

5 files changed

+113
-0
lines changed

Ahorn/lang/en_gb.lang

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -330,3 +330,6 @@ placements.entities.SpringCollab2020/NonCoreModeWallBooster.tooltips.notCoreMode
330330

331331
# Custom Snow
332332
placements.effects.SpringCollab2020/CustomSnow.tooltips.colors=Comma-separated list of all colors the particles can take from.
333+
334+
# Change Theme Trigger
335+
placements.triggers.SpringCollab2020/ChangeThemeTrigger.tooltips.enable=Whether the theme is enabled when entering this zone.
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
module SpringCollab2020ChangeThemeTrigger
2+
3+
using ..Ahorn, Maple
4+
5+
@mapdef Trigger "SpringCollab2020/ChangeThemeTrigger" ChangeThemeTrigger(x::Integer, y::Integer,
6+
width::Integer=Maple.defaultTriggerWidth, height::Integer=Maple.defaultTriggerHeight, enable::Bool=true)
7+
8+
const placements = Ahorn.PlacementDict(
9+
"Change Theme Trigger (Spring Collab 2020)" => Ahorn.EntityPlacement(
10+
ChangeThemeTrigger,
11+
"rectangle",
12+
),
13+
)
14+
15+
end

SpringCollab2020Module.cs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,9 @@ public class SpringCollab2020Module : EverestModule {
1010

1111
public static SpringCollab2020Module Instance;
1212

13+
public override Type SaveDataType => typeof(SpringCollab2020SaveData);
14+
public SpringCollab2020SaveData SaveData => (SpringCollab2020SaveData) _SaveData;
15+
1316
public override Type SessionType => typeof(SpringCollab2020Session);
1417
public SpringCollab2020Session Session => (SpringCollab2020Session) _Session;
1518

SpringCollab2020SaveData.cs

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+

2+
using System.Collections.Generic;
3+
4+
namespace Celeste.Mod.SpringCollab2020 {
5+
public class SpringCollab2020SaveData : EverestModuleSaveData {
6+
public HashSet<string> ModifiedThemeMaps = new HashSet<string>() { };
7+
}
8+
}

Triggers/ChangeThemeTrigger.cs

Lines changed: 84 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,84 @@
1+
using Celeste.Mod.Entities;
2+
using Microsoft.Xna.Framework;
3+
using Monocle;
4+
5+
namespace Celeste.Mod.SpringCollab2020.Triggers {
6+
// a very hardcoded trigger that is here to persist theme choices between play sessions.
7+
[CustomEntity("SpringCollab2020/ChangeThemeTrigger")]
8+
public class ChangeThemeTrigger : Trigger {
9+
private readonly bool enable;
10+
11+
public ChangeThemeTrigger(EntityData data, Vector2 offset) : base(data, offset) {
12+
enable = data.Bool("enable", false);
13+
}
14+
15+
public override void Added(Scene scene) {
16+
base.Added(scene);
17+
18+
// let's restore the saved theme...
19+
Level level = Scene as Level;
20+
string sid = level.Session.Area.GetSID();
21+
bool enabled = SpringCollab2020Module.Instance.SaveData.ModifiedThemeMaps.Contains(sid);
22+
if (enabled) {
23+
switch (sid) {
24+
case "SpringCollab2020/3-Advanced/LinjKarma":
25+
level.Session.SetFlag("skylinesoff");
26+
break;
27+
case "SpringCollab2020/3-Advanced/NeoKat":
28+
setBloom(level, -0.12f);
29+
break;
30+
case "SpringCollab2020/3-Advanced/RealVet":
31+
level.Session.SetFlag("ignore_darkness_Room1");
32+
level.Session.SetFlag("ignore_darkness_Room2");
33+
level.Session.SetFlag("ignore_darkness_Room3");
34+
level.Session.SetFlag("ignore_darkness_Room4");
35+
level.Session.SetFlag("ignore_darkness_Room5");
36+
level.Session.SetFlag("ignore_darkness_Strawberry1");
37+
level.Session.SetFlag("ignore_darkness_Strawberry2");
38+
level.Session.SetFlag("ignore_darkness_Strawberry3");
39+
level.Session.SetFlag("ignore_darkness_BeginningRoom");
40+
level.Session.SetFlag("ignore_darkness_DebugRoom");
41+
level.Session.SetFlag("ignore_darkness_EndRoom");
42+
level.Session.LightingAlphaAdd = 0.3f;
43+
44+
// and no, the current room is not dark.
45+
level.Lighting.Alpha = level.BaseLightingAlpha + level.Session.LightingAlphaAdd;
46+
level.DarkRoom = false;
47+
break;
48+
case "SpringCollab2020/4-Expert/Zerex":
49+
level.Session.SetFlag("darker");
50+
setBloom(level, 0.65f);
51+
break;
52+
case "SpringCollab2020/5-Grandmaster/BobDole":
53+
level.Session.SetFlag("boblight");
54+
level.SnapColorGrade("bobgrade");
55+
break;
56+
}
57+
} else {
58+
switch (sid) {
59+
case "SpringCollab2020/3-Advanced/NeoKat":
60+
level.Session.SetFlag("sc2020_nyoom_normalmode");
61+
break;
62+
case "SpringCollab2020/4-Expert/Zerex":
63+
setBloom(level, 2.5f);
64+
break;
65+
}
66+
}
67+
}
68+
69+
private void setBloom(Level level, float bloomAdd) {
70+
level.Session.BloomBaseAdd = bloomAdd;
71+
level.Bloom.Base = AreaData.Get(level).BloomBase + bloomAdd;
72+
}
73+
74+
public override void OnEnter(Player player) {
75+
base.OnEnter(player);
76+
77+
if (enable) {
78+
SpringCollab2020Module.Instance.SaveData.ModifiedThemeMaps.Add((Scene as Level).Session.Area.GetSID());
79+
} else {
80+
SpringCollab2020Module.Instance.SaveData.ModifiedThemeMaps.Remove((Scene as Level).Session.Area.GetSID());
81+
}
82+
}
83+
}
84+
}

0 commit comments

Comments
 (0)