Files
godot-host-test/Game/Score/Score.cs
T

39 lines
945 B
C#

using Godot;
using GodotHostTest.Helpers;
using GodotHostTest.Interfaces;
using OwofGames.AetherBind;
using R3;
namespace GodotHostTest.Game.Score;
public partial class Score : Control, IScore
{
[Export] private AnimationPlayer _animationPlayer = null!;
[Export] private Label _label = null!;
private int _score;
[Inject] private ITargetSpawner _targetSpawner = null!;
int IScore.Score => _score;
public override void _Ready()
{
_targetSpawner.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}";
}
}