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,64 @@
using System;
using System.Collections.Generic;
using Cysharp.Threading.Tasks;
using UnityEngine;
namespace DanieleMarotta.RiversongCodeShowcase
{
[GameSystemGroup(typeof(WorldGenSystemGroup))]
[InitializeAfter(typeof(WorldCreationSystem))]
public class WorldGenerationOperationsSystem : GameSystem, IInitializable, IDisposable
{
[InjectService]
private World _world;
[InjectService]
private ISignalBus _signalBus;
private readonly List<IWorldGeneratorOperation> _operations = new();
public WorldGenerationOperationsSystem(IServiceLocator serviceLocator) : base(serviceLocator)
{
}
public UniTask InitializeAsync()
{
_operations.Add(new MapDataInitializationOperation());
_operations.Add(new TerrainMaterialsInitializationOperation());
_operations.Add(new TerrainGeneratorOperation());
_operations.Add(new TreeResourcesGeneratorOperation());
_operations.Add(new StoneResourcesGeneratorOperation());
_operations.Add(new FreeProductStacksGeneratorOperation());
_operations.Add(new CritterHerdsGeneratorOperation());
foreach (var operation in _operations) ServiceLocator.Inject(operation);
_signalBus.Subscribe<GameStartedSignal>(OnGameStarted);
return UniTask.CompletedTask;
}
public void Dispose()
{
_signalBus.Unsubscribe<GameStartedSignal>(OnGameStarted);
}
private void OnGameStarted(GameStartedSignal signal)
{
ExecuteOperationsAsync().Forget(Debug.LogException);
}
private async UniTask ExecuteOperationsAsync()
{
_world.Seed = Environment.TickCount;
foreach (var operation in _operations) await operation.Execute(_world);
var generationCompletedCallbacks = new List<IOnWorldGenerationCompletedCallback>();
_signalBus.Raise(new WorldGenerationCompletedSignal(generationCompletedCallbacks));
foreach (var callback in generationCompletedCallbacks) await callback.OnWorldGenerationCompletedAsync(_world);
_signalBus.Raise(new WorldReadySignal());
}
}
}