e362aaeb43
Add BefourStudios SciFi environment packs, Gabriel Aguiar VFX, and the ShaderCrew Toon Shader embedded packages, plus combat/enemy/wave/death gameplay systems and supporting vault docs/screenshots. Rename 11 vendor textures from uppercase .PNG/.HDR to lowercase so the case-sensitive Git LFS filters (*.png/*.hdr) match on case-sensitive filesystems (Linux CI, case-sensitive macOS), not just locally where core.ignorecase=true masks the gap. Each .meta moved with its asset so GUID references are preserved. All ~1000 binaries tracked via LFS. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
48 lines
1.8 KiB
C#
48 lines
1.8 KiB
C#
using Unity.Entities;
|
|
|
|
namespace ProjectM.Simulation
|
|
{
|
|
/// <summary>
|
|
/// Baked config for the Husk wave/threat director (singleton). The director escalates: wave N spawns
|
|
/// <c>BaseCount + (N-1)*CountPerWave</c> Husks (round-robin over the <see cref="WaveEnemyPrefab"/> pool) at a
|
|
/// deterministic ring around the <see cref="BaseAnchor"/>, one every <c>SpawnIntervalTicks</c>; once a wave is
|
|
/// cleared the field stays calm for <c>LullTicks</c> before the next, bigger wave. Replaces the flat sustain.
|
|
/// </summary>
|
|
public struct WaveDirector : IComponentData
|
|
{
|
|
public float RingRadius;
|
|
public int RingSlots;
|
|
public int BaseCount;
|
|
public int CountPerWave;
|
|
public int SpawnIntervalTicks;
|
|
public int LullTicks;
|
|
}
|
|
|
|
/// <summary>Baked pool of Husk prefab variants the director draws from round-robin (Grunt / Swarmer / Brute / ...).</summary>
|
|
public struct WaveEnemyPrefab : IBufferElementData
|
|
{
|
|
public Entity Prefab;
|
|
}
|
|
|
|
/// <summary>Phase constants for <see cref="WaveState.Phase"/>.</summary>
|
|
public static class WavePhase
|
|
{
|
|
public const byte Lull = 0;
|
|
public const byte Spawning = 1;
|
|
}
|
|
|
|
/// <summary>
|
|
/// Runtime state of the wave director (server-only singleton; not replicated). Tracks the current wave, the
|
|
/// phase (lull vs spawning), the next action tick, how many Husks remain to spawn this wave, and a monotonic
|
|
/// spawn counter (drives the ring slot + the round-robin prefab pick).
|
|
/// </summary>
|
|
public struct WaveState : IComponentData
|
|
{
|
|
public int WaveNumber;
|
|
public byte Phase;
|
|
public uint NextActionTick;
|
|
public int RemainingToSpawn;
|
|
public int SpawnCounter;
|
|
}
|
|
}
|