using Unity.Entities; namespace ProjectM.Simulation { /// /// MC-2 — baked weighted-composition table shared by BOTH enemy directors (the expedition /// ZoneEnemyDirectorSystem and the base-siege WaveSystem). Pure integer weights consumed by the deterministic /// .{WaveSlots, KindForSlot, PackSizeForSlot} functions (no enum, no RNG -> /// replay/save-stable). Per kind: a base count + a per-epoch ramp; the Grunt count is the REMAINDER (slots minus /// the others) so it stays a fixed floor while chargers / spitters / swarmer-slots grow as the epoch (expedition) /// or wave (base siege) climbs. A "swarmer slot" expands to a PackSize cluster at spawn (PackSizeForSlot), so one /// slot = one pack. The LEGACY band {GruntBase=g, ChargerBase=c, ChargerPerEpoch=1, rest 0} reproduces the old /// 2-type / exactly (a parity test /// pins this, so the base-siege size curve is provably unchanged where it must be). /// public struct MixBands : IComponentData { public int GruntBase; public int ChargerBase; public int SpitterBase; public int SwarmerSlotBase; public int ChargerPerEpoch; public int SpitterPerEpoch; public int SwarmerSlotPerEpoch; /// Exposed-but-default-0 epoch ramp for the swarmer PACK size (PackSizeForSlot adds /// SwarmerPackPerEpoch*(epoch-1) to the director's base pack size). v1 keeps it 0 = fixed pack size. public int SwarmerPackPerEpoch; } }