Files
riversong-code-showcase/Source/Riversong/Game/WorldGen/Operations/CritterHerdsGeneratorOperation.cs
2026-05-21 16:04:49 +02:00

36 lines
1.1 KiB
C#

using Cysharp.Threading.Tasks;
using UnityEngine;
namespace DanieleMarotta.RiversongCodeShowcase
{
public class CritterHerdsGeneratorOperation : IWorldGeneratorOperation
{
[InjectService]
private IEntityCollection _entityCollection;
[InjectService]
private IGameDatabase _gameDatabase;
[InjectService]
private IAgentFactory _agentFactory;
public UniTask Execute(World world)
{
var critters = _gameDatabase.OfType<CritterDefinition>();
foreach (var eligibleCenter in world.CritterHerdsState.EligibleCenters)
{
var critter = critters[Random.Range(0, critters.Count)];
var herd = _entityCollection.CreateAndAdd<CritterHerd>();
herd.CritterDefinition = critter;
herd.Center = eligibleCenter;
herd.MaxCritterCount = Random.Range(critter.MinCritterCount, critter.MaxCritterCount + 1);
_agentFactory.InitializeAgentSource(herd);
}
return UniTask.CompletedTask;
}
}
}