From 0ad3d30f1ecebe776895549ebf17c197cc9ad24d Mon Sep 17 00:00:00 2001 From: nyarw Date: Wed, 12 Aug 2026 00:11:38 +0200 Subject: [PATCH 1/3] feat: add onHit to BaseSpace --- scripts/spaces/BaseSpace.cs | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/scripts/spaces/BaseSpace.cs b/scripts/spaces/BaseSpace.cs index 5299cff..b8466f5 100644 --- a/scripts/spaces/BaseSpace.cs +++ b/scripts/spaces/BaseSpace.cs @@ -25,6 +25,24 @@ 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() + { + base._ExitTree(); + + if (Game.Instance?.Runner != null) + { + Game.Instance.Runner.HitResultChanged -= onHitResultChanged; + } + } + public override void _Process(double delta) { base._Process(delta); @@ -38,6 +56,10 @@ public override void _Process(double delta) } } + public virtual void OnHit(uint combo) + { + } + public virtual void Load() { var skin = SkinManager.Instance.Skin; @@ -54,5 +76,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; + } } } From c3a471b45520dd7c4bf04435b468054287c394a1 Mon Sep 17 00:00:00 2001 From: nyarw Date: Wed, 12 Aug 2026 00:24:26 +0200 Subject: [PATCH 2/3] remove exittree as its unnecessary --- scripts/spaces/BaseSpace.cs | 10 ---------- 1 file changed, 10 deletions(-) diff --git a/scripts/spaces/BaseSpace.cs b/scripts/spaces/BaseSpace.cs index b8466f5..0e3075d 100644 --- a/scripts/spaces/BaseSpace.cs +++ b/scripts/spaces/BaseSpace.cs @@ -33,16 +33,6 @@ private void onHitResultChanged(int noteIndex, HitResult hitResult) } } - public override void _ExitTree() - { - base._ExitTree(); - - if (Game.Instance?.Runner != null) - { - Game.Instance.Runner.HitResultChanged -= onHitResultChanged; - } - } - public override void _Process(double delta) { base._Process(delta); From b2e695cfb81eac70ad5d1815959a8cf2dfc3e4a9 Mon Sep 17 00:00:00 2001 From: nyarw Date: Wed, 12 Aug 2026 00:27:07 +0200 Subject: [PATCH 3/3] add the function back without the base method --- scripts/spaces/BaseSpace.cs | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/scripts/spaces/BaseSpace.cs b/scripts/spaces/BaseSpace.cs index 0e3075d..22ba79c 100644 --- a/scripts/spaces/BaseSpace.cs +++ b/scripts/spaces/BaseSpace.cs @@ -33,6 +33,14 @@ private void onHitResultChanged(int noteIndex, HitResult hitResult) } } + public override void _ExitTree() + { + if (Game.Instance?.Runner != null) + { + Game.Instance.Runner.HitResultChanged -= onHitResultChanged; + } + } + public override void _Process(double delta) { base._Process(delta);