riversong code showcase
This commit is contained in:
58
Source/Riversong/Game/CommonServices/CommonServicesSystem.cs
Normal file
58
Source/Riversong/Game/CommonServices/CommonServicesSystem.cs
Normal 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;
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user