We've got enemies and movement!!

This commit is contained in:
Matt F 2026-05-12 22:18:23 -07:00
parent 42ee0bf65d
commit 3287e8ea43
26 changed files with 1409 additions and 161 deletions

View file

@ -0,0 +1,45 @@
// Assets/_Project/Scripts/Gameplay/WaveDefinition.cs
using System;
using UnityEngine;
namespace TD.Gameplay
{
/// <summary>
/// A single spawn group within a wave: one enemy type, how many of them,
/// and how long to wait between each spawn.
/// </summary>
[Serializable]
public struct WaveEntry
{
[Tooltip("The enemy type to spawn for this group.")]
public EnemyDefinition EnemyType;
[Tooltip("How many enemies of this type to spawn.")]
public int Count;
[Tooltip("Seconds between each individual spawn within this group. " +
"0 = all spawn simultaneously.")]
public float SpawnInterval;
}
/// <summary>
/// Defines the composition of a single wave. One asset per wave; referenced in
/// order by <see cref="WaveManager.waveDefinitions"/>.
/// </summary>
/// <remarks>
/// Entries are processed in array order. Multiple entries let designers mix enemy
/// types within one wave (e.g. 10 fast scouts followed by 3 armoured brutes).
/// The wave is not considered complete until all spawned enemies are dead or have
/// leaked — not just until all entries are spawned.
/// </remarks>
[CreateAssetMenu(fileName = "WaveDefinition", menuName = "TD/Wave Definition", order = 4)]
public class WaveDefinition : ScriptableObject
{
[Tooltip("Seconds between the wave-number advancing (start of prep) and the " +
"first enemy spawning. Gives players time to build before the wave hits.")]
public float PrepTime = 10f;
[Tooltip("Enemy groups that make up this wave. Processed in order.")]
public WaveEntry[] Entries;
}
}