diff --git a/scripts/spaces/BaseSpace.cs b/scripts/spaces/BaseSpace.cs index 5299cff..22ba79c 100644 --- a/scripts/spaces/BaseSpace.cs +++ b/scripts/spaces/BaseSpace.cs @@ -25,6 +25,22 @@ public override void _Ready() WorldEnvironment = GetNode("WorldEnvironment"); } + private void onHitResultChanged(int noteIndex, HitResult hitResult) + { + if (hitResult == HitResult.Hit) + { + OnHit(Game.Instance.Runner.Attempt.Combo); + } + } + + public override void _ExitTree() + { + if (Game.Instance?.Runner != null) + { + Game.Instance.Runner.HitResultChanged -= onHitResultChanged; + } + } + public override void _Process(double delta) { base._Process(delta); @@ -38,6 +54,10 @@ public override void _Process(double delta) } } + public virtual void OnHit(uint combo) + { + } + public virtual void Load() { var skin = SkinManager.Instance.Skin; @@ -54,5 +74,11 @@ public virtual void UpdateState(bool playing) { Playing = playing; Camera.Current = !Playing; + + if (Playing && Game.Instance?.Runner != null) + { + Game.Instance.Runner.HitResultChanged -= onHitResultChanged; + Game.Instance.Runner.HitResultChanged += onHitResultChanged; + } } }