Skip to content

Commit 5a6e3b2

Browse files
committed
add music area change trigger
1 parent 0d5466b commit 5a6e3b2

File tree

2 files changed

+68
-0
lines changed

2 files changed

+68
-0
lines changed
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
module SpringCollab2020MusicAreaChangeTrigger
2+
3+
using ..Ahorn, Maple
4+
5+
@mapdef Trigger "SpringCollab2020/MusicAreaChangeTrigger" MusicAreaChangeTrigger(x::Integer, y::Integer, width::Integer=Maple.defaultTriggerWidth, height::Integer=Maple.defaultTriggerHeight,
6+
musicParam1::String="", musicParam2::String="", musicParam3::String="", enterValue::Number=1.0, exitValue::Number=0.0)
7+
8+
const placements = Ahorn.PlacementDict(
9+
"Music Area Change Trigger (Spring Collab 2020)" => Ahorn.EntityPlacement(
10+
MusicAreaChangeTrigger,
11+
"rectangle"
12+
)
13+
)
14+
15+
end

Triggers/MusicAreaChangeTrigger.cs

Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
using Celeste.Mod.Entities;
2+
using Microsoft.Xna.Framework;
3+
4+
namespace Celeste.Mod.SpringCollab2020.Triggers {
5+
[CustomEntity("SpringCollab2020/MusicAreaChangeTrigger")]
6+
class MusicAreaChangeTrigger : Trigger {
7+
private string musicParam1;
8+
private string musicParam2;
9+
private string musicParam3;
10+
private float enterValue;
11+
private float exitValue;
12+
13+
// this is used specifically for the expert lobby. On enter, it sets all given parameter values
14+
// to the enter value. On exit, it sets all parameter values to exit. Individual exit/enter values were not necessary so they were not added.
15+
// this is hastily written code that could likely be refactored into a more widely useful trigger for FMOD'ers
16+
17+
public MusicAreaChangeTrigger(EntityData data, Vector2 offset) : base(data, offset) {
18+
musicParam1 = data.Attr("musicParam1");
19+
musicParam2 = data.Attr("musicParam2");
20+
musicParam3 = data.Attr("musicParam3");
21+
enterValue = data.Float("enterValue", 1f);
22+
exitValue = data.Float("exitValue", 0f);
23+
}
24+
25+
public override void OnEnter(Player player) {
26+
base.OnEnter(player);
27+
28+
if (!string.IsNullOrEmpty(musicParam1)) {
29+
Audio.SetMusicParam(musicParam1, enterValue);
30+
}
31+
if (!string.IsNullOrEmpty(musicParam2)) {
32+
Audio.SetMusicParam(musicParam2, enterValue);
33+
}
34+
if (!string.IsNullOrEmpty(musicParam3)) {
35+
Audio.SetMusicParam(musicParam3, enterValue);
36+
}
37+
}
38+
39+
public override void OnLeave(Player player) {
40+
base.OnLeave(player);
41+
42+
if (!string.IsNullOrEmpty(musicParam1)) {
43+
Audio.SetMusicParam(musicParam1, exitValue);
44+
}
45+
if (!string.IsNullOrEmpty(musicParam2)) {
46+
Audio.SetMusicParam(musicParam2, exitValue);
47+
}
48+
if (!string.IsNullOrEmpty(musicParam3)) {
49+
Audio.SetMusicParam(musicParam3, exitValue);
50+
}
51+
}
52+
}
53+
}

0 commit comments

Comments
 (0)