Files
Project-M/Assets/_Project/Scripts/Simulation/Economy/ResourceFieldSpawner.cs
T
2026-07-02 20:41:43 -07:00

32 lines
1.3 KiB
C#

using Unity.Entities;
namespace ProjectM.Simulation
{
/// <summary>
/// Baked singleton holding the resource-node ghost prefab + field shape. ExpeditionFieldSystem reads it to
/// scatter <see cref="Count"/> nodes within <see cref="Radius"/> of the expedition region origin on each
/// Expedition phase entry (seeded by the cycle number). Mirrors <see cref="StorageSpawner"/>.
/// </summary>
public struct ResourceFieldSpawner : IComponentData
{
/// <summary>Baked resource-node ghost prefab to instantiate.</summary>
public Entity Prefab;
/// <summary>Number of nodes to scatter per expedition.</summary>
public int Count;
/// <summary>Scatter radius (world units) around the expedition region origin.</summary>
public float Radius;
}
/// <summary>
/// Server-only bookkeeping for <see cref="ProjectM.Server.RoomFieldSystem"/>, attached at runtime beside the
/// baked spawner singleton (the BaseFieldRuntime idiom): the <c>RunRuntime.RoomEpoch</c> this system last seeded,
/// int-equality-compared so each room's field scatters exactly once. NOT replicated; session-scoped.
/// </summary>
public struct RoomFieldState : IComponentData
{
public int LastSpawnedRoomEpoch;
}
}