using Unity.Entities; namespace ProjectM.Simulation { /// /// Singleton tag baked into the Enemy-test GYM subscene (see the LANTERN roadmap A1 gym note). Marks the world /// as the gym so GoInGameServerSystem takes the CLEAN gym spawn path — bypassing the base/meta/cycle /// seeding (the gym has no CycleDirector, so the meta-catalog spawn guard must not block it) and seeding a /// default Spark socket loadout instead. Purely a mode switch; the gym never runs the base siege/economy. /// public struct GymTag : IComponentData { } /// /// Baked gym enemy roster — one row per on-demand-spawnable enemy KIND (buffer index is arbitrary; match on /// ). DebugCommandReceiveSystem's SpawnEnemy op instantiates the row whose Kind == /// ArgA near the requesting player. Entity refs can't live in a blob, so this is a companion buffer on the /// gym-roster entity (the idiom). Server-read only. /// [InternalBufferCapacity(4)] public struct GymEnemyRoster : IBufferElementData { /// Stable enemy-kind key (0 = Drowner, 1 = Grindylow; extend as the roster grows). public byte Kind; /// The baked enemy ghost prefab entity to instantiate for this kind. public Entity Prefab; } /// Stable kind ids for / the SpawnEnemy op's ArgA. public static class GymEnemyKind { public const byte Drowner = 0; public const byte Grindylow = 1; } }