Files
godot-host-test/Game/Score.cs
T
2026-07-18 12:09:43 +02:00

39 lines
969 B
C#

using Godot;
using GodotHostTest.GodotDI;
using GodotHostTest.Helpers;
using GodotHostTest.Interfaces;
using R3;
namespace GodotHostTest.Game;
public partial class Score : Control, IScore
{
[Inject] private readonly IValueGetter<ITargetSpawner> _targetSpawner = null!;
[Export] private AnimationPlayer _animationPlayer = null!;
[Export] private Label _label = null!;
private int _score;
int IScore.Score => _score;
public override void _Ready()
{
_targetSpawner.Value.TargetSpawned.Subscribe(OnTargetSpawned).AddTo(this);
base._Ready();
}
private void OnTargetSpawned(ITarget target)
{
_animationPlayer.Play("wiggle");
target.Hit.Select(_ => 20).Merge(target.TimedOut.Select(_ => -5)).SubscribeOnce(delta =>
{
_score += delta;
UpdateScore();
}).AddTo(this);
}
private void UpdateScore()
{
_label.Text = $"Score: {_score}";
}
}