namespace ProjectM.Simulation { /// /// The resolved, concrete spec for ONE room the party is about to enter — a pure function of its map node /// () + its depth, produced by . 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 RunInfo mirror for the HUD). All-value, unmanaged, Burst-safe. /// public struct RoomPlan { /// (drives node/enemy density + the difficulty bump). public byte RoomType; /// (cosmetic, forwarded to the client HUD/atmosphere). public byte Biome; /// (the arena footprint scatter uses). public byte ShapeId; /// Arena scatter radius (world units) for this shape. public float Radius; /// Base number of resource nodes to scatter (before the run-wide scarcity budget floors it). public int NodeCount; /// Depth-based difficulty rung fed to ZoneEnemyMath (higher = harder; Elite/Boss bump it). public int DifficultyEpoch; } }