feat: initial import

This commit is contained in:
redglow
2026-07-11 10:54:02 +02:00
commit e560a743fb
55 changed files with 993 additions and 0 deletions
+22
View File
@@ -0,0 +1,22 @@
namespace GodotHostTest.Interfaces;
/// <summary>
/// An object that keeps track of the score.
/// </summary>
public interface IScore
{
/// <summary>
/// A target has been hit.
/// </summary>
void TargetHit();
/// <summary>
/// A target has timed out.
/// </summary>
void TargetTimedOut();
/// <summary>
/// The current score.
/// </summary>
public int Score { get; }
}
+1
View File
@@ -0,0 +1 @@
uid://wf8obkyi1rod
+24
View File
@@ -0,0 +1,24 @@
using R3;
namespace GodotHostTest.Interfaces;
/// <summary>
/// A target for our projectiles.
/// </summary>
public interface ITarget
{
/// <summary>
/// The target hasn't been hit in the allotted time and has timed out.
/// </summary>
Observable<Unit> TimedOut { get; }
/// <summary>
/// The target has been hit.
/// </summary>
Observable<Unit> Hit { get; }
/// <summary>
/// Enable the target. Targets start disabled and gets disabled when they're hit or time out.
/// </summary>
void Enable();
}
+1
View File
@@ -0,0 +1 @@
uid://bgkbpxwire4qb
+13
View File
@@ -0,0 +1,13 @@
namespace GodotHostTest.Interfaces;
/// <summary>
/// An object which collects targets as soon as they are created.
/// </summary>
public interface ITargetCollector
{
/// <summary>
/// Register a target.
/// </summary>
/// <param name="target">The new target.</param>
void NewTarget(ITarget target);
}
+1
View File
@@ -0,0 +1 @@
uid://cyuavtr6x72uj
+14
View File
@@ -0,0 +1,14 @@
using R3;
namespace GodotHostTest.Interfaces;
/// <summary>
/// An object that spawns targets.
/// </summary>
public interface ITargetSpawner
{
/// <summary>
/// Observable that produces a value whenever a target gets spawned.
/// </summary>
Observable<ITarget> TargetSpawned { get; }
}
+1
View File
@@ -0,0 +1 @@
uid://b8ksms66cbg3