iso2/scene/PlayerDeath.cs
public class PlayerDeath : Component {
[Property] public SurfaceMusicManager Music {get; set;}
[Property] public PacViewNode Grave {get; set;}
[Property] public GameObject Skeleton {get; set;}
[Property] public bool IsDead {get; set;}
[Button] public void Dead() {
if (IsDead)
return;
IsDead = true;
Music.PlayingTrack = SurfaceMusicManager.Track.None;
BasePlayer.Local.IsoEntity.Components.Get<NpcAnimator>().Activity = "die";
Switch = () => {
Skeleton.Enabled = true;
BasePlayer.Local.IsoEntity.Components.Get<NpcMovement>().Path.Clear();
BasePlayer.Local.Isometric = false;
Sound.Play("sounds/vo/death.sound");
Grave.ConnectToNode();
};
FadeOut = 4f;
Switching = true;
}
private bool Switching;
private Action Switch;
private TimeUntil FadeOut;
private TimeUntil FadeIn;
protected override void OnUpdate() {
if (!Switching)
return;
BasePlayer.Local.IsoCamera.Fade = -(2 - FadeIn.Relative.Clamp(0,2))*0.5f;
BasePlayer.Local.PacCamera.Fade = -(2 - FadeIn.Relative.Clamp(0,2))*0.5f;
if (!FadeOut) {
FadeIn = 14f;
return;
}
Switch?.Invoke();
Switch = null;
BasePlayer.Local.IsoCamera.Fade = -1 + FadeIn.Passed.Clamp(0,1) - (1 - FadeIn.Relative.Clamp(0,1));
BasePlayer.Local.PacCamera.Fade = -1 + FadeIn.Passed.Clamp(0,1) - (1 - FadeIn.Relative.Clamp(0,1));
if (!FadeIn)
return;
Scene.LoadFromFile("scenes/iso2_world.scene");
base.OnUpdate();
}
}