riversong code showcase

This commit is contained in:
Daniele Marotta
2026-05-21 15:52:18 +02:00
commit 4c9eea1c02
462 changed files with 23406 additions and 0 deletions

View File

@@ -0,0 +1,58 @@
using System;
using Cysharp.Threading.Tasks;
using IServiceProvider = DanieleMarotta.RiversongCodeShowcase.IServiceProvider;
namespace DanieleMarotta.RiversongCodeShowcase
{
[GameSystemGroup(typeof(CommonServicesSystemGroup))]
public class CommonServicesSystem : GameSystem, IServiceProvider, IInitializable, IDisposable
{
[InjectService]
private GameConfig _config;
[InjectService]
private World _world;
private SignalBus _signalBus;
private TileSpace _tileSpace;
private MaterialReplacementCache _materialReplacementCache;
public CommonServicesSystem(IServiceLocator serviceLocator) : base(serviceLocator)
{
}
public void RegisterServices(IServiceLocator serviceLocator)
{
serviceLocator.RegisterService<IEntityCollection>(new EntityCollection());
serviceLocator.RegisterService<IEntityCache>(new EntityCache());
_signalBus = new SignalBus();
serviceLocator.RegisterService<ISignalBus>(_signalBus);
_tileSpace = new TileSpace();
serviceLocator.RegisterService<ITileSpace>(_tileSpace);
serviceLocator.RegisterService<IPoolingService>(new PoolingService());
_materialReplacementCache = new MaterialReplacementCache();
serviceLocator.RegisterService(_materialReplacementCache);
}
public UniTask InitializeAsync()
{
_tileSpace.TileSize = _config.GeneralSettings.TileSize;
_tileSpace.World = _world;
return UniTask.CompletedTask;
}
public void Dispose()
{
_signalBus?.Dispose();
_signalBus = null;
_materialReplacementCache = null;
}
}
}