common extensions and some utilities

This commit is contained in:
2025-03-19 00:18:40 +01:00
parent f80fd22a00
commit e62bd2aa6d
35 changed files with 323 additions and 58 deletions

View File

@@ -9,12 +9,13 @@ namespace RebootKit.Engine.Services.Game {
public ControllerAsset[] Controllers;
}
public abstract class GameModeAsset : ScriptableObject {
public abstract class GameModeAsset : FactoryAsset<GameMode> {
[field: SerializeField]
public GameModeConfig GameModeConfig { get; private set; }
public GameMode Create() {
GameMode gameMode = new GameMode(GameModeConfig);
public override GameMode Create(DIContext context) {
GameMode gameMode = new(GameModeConfig);
context.Inject(gameMode);
ConfigureGameMode(gameMode);
return gameMode;
}
@@ -25,6 +26,9 @@ namespace RebootKit.Engine.Services.Game {
public class GameMode : IDisposable {
private readonly GameModeConfig _config;
private readonly ControllersManager _controllersManager;
[Inject]
private DIContext _diContext;
private CancellationTokenSource _destroyCancellationTokenSource;
@@ -44,7 +48,7 @@ namespace RebootKit.Engine.Services.Game {
}
public async Awaitable<bool> Start(CancellationToken cancellationToken) {
_controllersManager.Add(_config.Controllers);
_controllersManager.Add(_config.Controllers, _diContext);
await _controllersManager.Start(cancellationToken);
_isRunning = true;