40 lines
1.3 KiB
C#
40 lines
1.3 KiB
C#
using Godot;
|
|
using GodotHostTest.AetherBind;
|
|
using GodotHostTest.Game.Level;
|
|
using GodotHostTest.Game.Metrics;
|
|
using GodotHostTest.Game.Score;
|
|
using GodotHostTest.Game.Target;
|
|
using GodotHostTest.Interfaces;
|
|
using Microsoft.Extensions.DependencyInjection;
|
|
using OwofGames.GodotHost;
|
|
using OwofGames.GodotHost.Observability;
|
|
using OwofGames.GodotLume;
|
|
|
|
namespace GodotHostTest.Game.Game;
|
|
|
|
public partial class GameServiceSource : RootServiceSource
|
|
{
|
|
[Export] private LevelsData _levelsData = null!;
|
|
|
|
protected override void Configure(Builder builder)
|
|
{
|
|
builder
|
|
// root scope services
|
|
.AddSingleton<ITargetEventBus, TargetEventBus>()
|
|
.AddSingleton<IScore, TotalScore>()
|
|
// current level / level data management
|
|
.AddInstance<ILevelDataProvider, LevelsData>(_levelsData)
|
|
.AddSingleton<ICurrentLevel, CurrentLevel>()
|
|
// metrics
|
|
.AddSingleton<IHostLifetime, MetricsHandler>()
|
|
// level scope services
|
|
.AddLevelServices();
|
|
}
|
|
|
|
protected override void ConfigureServices(IServiceCollection serviceCollection)
|
|
{
|
|
serviceCollection.AddObservability(builder => builder
|
|
.AddGrpcExporter("http://localhost:4317")
|
|
.AddMeterName(MetricsHandler.MeterName));
|
|
}
|
|
} |