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;
}
}