chore: cleanup

This commit is contained in:
redglow
2026-07-29 11:05:27 +02:00
parent 2c0a3f47a4
commit 5c4519ed26
20 changed files with 110 additions and 70 deletions
+13 -17
View File
@@ -8,14 +8,14 @@ namespace GodotHostTest.Game.Target;
public partial class Target : Node2D, ITarget
{
private readonly Subject<Unit> _hit = new();
private readonly Subject<Unit> _timedOut = new();
[Export] public required Area2D CollisionArea;
[Export] public required Sprite2D Image;
[Export] public required Timer TimeOutTimer;
[Export] private PackedScene _explosionPackedScene = null!;
[Inject] private ILevel _level = null!;
[Inject] private ILevel _level = null!;
[Inject] private ITargetCollector _targetCollector = null!;
public Observable<Unit> TimedOut => _timedOut.AsObservable();
@@ -30,26 +30,30 @@ public partial class Target : Node2D, ITarget
TimeOutTimer.Start(_level.SpawnDuration.TotalSeconds);
}
private void Disable()
{
Image.Visible = false;
// can't set monitoring/monitorable when inside collision code, like during OnHit, so let's call them deferred
CollisionArea.SetDeferred(Area2D.PropertyName.Monitoring, false);
CollisionArea.SetDeferred(Area2D.PropertyName.Monitorable, false);
TimeOutTimer.Stop();
}
public override void _Ready()
{
_targetCollector.NewTarget(this);
}
public override void _ExitTree()
protected override void Dispose(bool disposing)
{
base.Dispose(disposing);
_timedOut.Dispose();
_hit.Dispose();
}
private void OnAreaEntered(Area2D _)
{
OnHit();
}
private void OnHit()
{
Disable();
TimeOutTimer.Stop();
_hit.OnNext(Unit.Default);
var explosion = (GpuParticles2D)_explosionPackedScene.Instantiate();
@@ -58,14 +62,6 @@ public partial class Target : Node2D, ITarget
GetTree().CurrentScene.AddChild(explosion);
}
private void Disable()
{
Image.Visible = false;
// can't se monitoring/monitorable when inside the collision code, like during OnHit
CollisionArea.SetDeferred(Area2D.PropertyName.Monitoring, false);
CollisionArea.SetDeferred(Area2D.PropertyName.Monitorable, false);
}
private void OnTimeout()
{
Disable();