iso2/scene/SurfaceMusicManager.cs
public class SurfaceMusicManager : Component {
public SoundHandle ColdA;
public SoundHandle ColdB;
public SoundHandle Warm;
public SoundHandle HouseAmb;
public enum Track {
None,
Cold,
Warm,
House
}
[Property] public Track PlayingTrack {get;set;} = Track.Cold;
private bool ColdSwitch;
protected override void OnUpdate() {
if (ColdSwitch) {
if (!ColdA.IsValid() || !ColdA.IsPlaying)
ColdA = Sound.Play("sounds/music/freeze.sound");
if (ColdA.Time > 130)
ColdSwitch = false;
} else {
if (!ColdB.IsValid() || !ColdB.IsPlaying)
ColdB = Sound.Play("sounds/music/freeze.sound");
if (ColdB.Time > 130)
ColdSwitch = true;
}
if (!HouseAmb.IsValid() || !HouseAmb.IsPlaying) {
HouseAmb = Sound.Play("sounds/ambient/room_house.sound");
HouseAmb.Volume = 0f;
}
if (ColdA.IsValid())
ColdA.Volume = ColdA.Volume.Approach((PlayingTrack == Track.Cold)? 1 : 0, Time.Delta / 4f);
if (ColdB.IsValid())
ColdB.Volume = ColdB.Volume.Approach((PlayingTrack == Track.Cold)? 1 : 0, Time.Delta / 4f);
if (HouseAmb.IsValid())
HouseAmb.Volume = HouseAmb.Volume.Approach((PlayingTrack == Track.House)? 1 : 0, Time.Delta / 4f);
base.OnUpdate();
}
}