use DI in Godot Nodes

This commit is contained in:
Matt Parker
2025-10-18 14:20:04 +10:00
parent 4d67503e13
commit d285ce1bf2
13 changed files with 136 additions and 44 deletions

View File

@@ -1,6 +1,7 @@
using System.Threading.Channels;
using GDExtensionBindgen;
using Godot;
using SharpIDE.Application.Features.Build;
namespace SharpIDE.Godot.Features.Build;
@@ -8,10 +9,12 @@ public partial class BuildPanel : Control
{
private Terminal _terminal = null!;
private ChannelReader<string>? _buildOutputChannelReader;
[Inject] private readonly BuildService _buildService = null!;
public override void _Ready()
{
_terminal = new Terminal(GetNode<Control>("%Terminal"));
Singletons.BuildService.BuildStarted += OnBuildStarted;
_buildService.BuildStarted += OnBuildStarted;
}
public override void _Process(double delta)
@@ -27,6 +30,6 @@ public partial class BuildPanel : Control
private async Task OnBuildStarted()
{
await this.InvokeAsync(() => _terminal.Clear());
_buildOutputChannelReader ??= Singletons.BuildService.BuildTextWriter.ConsoleChannel.Reader;
_buildOutputChannelReader ??= _buildService.BuildTextWriter.ConsoleChannel.Reader;
}
}