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

25 lines
1.4 KiB
C#

namespace ProjectM.Simulation
{
/// <summary>
/// The resolved, concrete spec for ONE room the party is about to enter — a pure function of its map node
/// (<see cref="RunMapNode"/>) + its depth, produced by <see cref="RoomLayoutMath.Plan"/>. Consumed server-side by
/// the room field/enemy directors to lay out resources + seed the enemy wave; transient (never replicated —
/// the client only needs the small published <c>RunInfo</c> mirror for the HUD). All-value, unmanaged, Burst-safe.
/// </summary>
public struct RoomPlan
{
/// <summary><see cref="RoomTypeId"/> (drives node/enemy density + the difficulty bump).</summary>
public byte RoomType;
/// <summary><see cref="RoomBiomeId"/> (cosmetic, forwarded to the client HUD/atmosphere).</summary>
public byte Biome;
/// <summary><see cref="RoomShapeId"/> (the arena footprint scatter uses).</summary>
public byte ShapeId;
/// <summary>Arena scatter radius (world units) for this shape.</summary>
public float Radius;
/// <summary>Base number of resource nodes to scatter (before the run-wide scarcity budget floors it).</summary>
public int NodeCount;
/// <summary>Depth-based difficulty rung fed to <c>ZoneEnemyMath</c> (higher = harder; Elite/Boss bump it).</summary>
public int DifficultyEpoch;
}
}