using UnityEngine;
namespace Minigames.Airplane.Data
{
///
/// Configuration for Jet Plane ability.
///
[System.Serializable]
public class JetAbilityConfig
{
[Header("Jet Ability")]
[Tooltip("Display name")]
public string abilityName = "Jet Boost";
[Tooltip("Icon for ability button")]
public Sprite abilityIcon;
[Tooltip("Cooldown duration in seconds")]
public float cooldownDuration = 5f;
[Tooltip("Speed while ability is active")]
public float jetSpeed = 15f;
[Tooltip("Direction angle (0 = right, 90 = up)")]
public float jetAngle = 0f;
}
///
/// Configuration for Bobbing Plane ability.
///
[System.Serializable]
public class BobbingAbilityConfig
{
[Header("Bobbing Ability")]
[Tooltip("Display name")]
public string abilityName = "Air Hop";
[Tooltip("Icon for ability button")]
public Sprite abilityIcon;
[Tooltip("Cooldown duration in seconds")]
public float cooldownDuration = 3f;
[Tooltip("Force applied on activation (X = forward, Y = upward)")]
public Vector2 bobForce = new Vector2(7f, 10f);
}
///
/// Configuration for Drop Plane ability.
///
[System.Serializable]
public class DropAbilityConfig
{
[Header("Drop Ability")]
[Tooltip("Display name")]
public string abilityName = "Dive Bomb";
[Tooltip("Icon for ability button")]
public Sprite abilityIcon;
[Tooltip("Cooldown duration in seconds")]
public float cooldownDuration = 4f;
[Tooltip("Downward force applied")]
public float dropForce = 20f;
[Tooltip("Distance to drop before returning to normal flight")]
public float dropDistance = 5f;
[Tooltip("Should horizontal velocity be zeroed during drop?")]
public bool zeroHorizontalVelocity = true;
}
///
/// Configuration for an airplane type with visual and physics properties.
///
[System.Serializable]
public class AirplaneTypeConfig
{
[Header("Identity")]
[Tooltip("Display name for UI")]
public string displayName = "Airplane";
[Tooltip("Airplane prefab")]
public GameObject prefab;
[Tooltip("Preview sprite for selection UI")]
public Sprite previewSprite;
[Header("Ability")]
[Tooltip("Which ability this airplane uses")]
public AirplaneAbilityType abilityType = AirplaneAbilityType.Jet;
[Header("Physics Overrides (Optional)")]
[Tooltip("Override default mass")]
public bool overrideMass;
public float mass = 1f;
[Tooltip("Override default gravity scale")]
public bool overrideGravityScale;
public float gravityScale = 1f;
[Tooltip("Override default drag")]
public bool overrideDrag;
public float drag = 0f;
}
}