using System.Collections.Generic;
using UnityEngine;

/// <summary>
/// GAME 1303 Tier 3 — One playable character's look, stats, and abilities.
/// Create -> GAME1303 -> Character. Make one per insect (Roach Invasion) or party
/// member (Spark of Corruption), then list them in CharacterSwapper.
///
/// Abilities: list the exact component type names to ENABLE for this character
/// ("DoubleJump", "Glide", "Dash", "WallSlideJump", "MeleeAttack", "ProjectileShooter").
/// The swapper enables the ones listed and disables any other Tier 3/attack components
/// it manages. Put ALL possible ability components on the player once, and let each
/// character definition pick which are live.
/// </summary>
[CreateAssetMenu(menuName = "GAME1303/Character", fileName = "NewCharacter")]
public class CharacterDefinition : ScriptableObject
{
    [Header("Identity")]
    public string displayName = "Character";
    public Sprite portrait;

    [Header("Look")]
    public RuntimeAnimatorController animatorController;
    [Tooltip("Fallback if there's no animator controller.")]
    public Sprite idleSprite;
    public Color tint = Color.white;

    [Header("Stats")]
    public int maxHealth = 3;
    public float moveSpeed = 8f;
    public float jumpForce = 14f;
    [Tooltip("Rigidbody gravity scale (lighter characters float a bit).")]
    public float gravityScale = 3f;

    [Header("Abilities (component type names to enable)")]
    public List<string> enabledAbilities = new List<string>();

    [Header("Audio")]
    public AudioClip swapInSound;
}