109 lines
3.2 KiB
C#
109 lines
3.2 KiB
C#
using UnityEngine;
|
|
|
|
namespace Minigames.Airplane.Data
|
|
{
|
|
/// <summary>
|
|
/// Configuration for Jet Plane ability.
|
|
/// </summary>
|
|
[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;
|
|
}
|
|
|
|
/// <summary>
|
|
/// Configuration for Bobbing Plane ability.
|
|
/// </summary>
|
|
[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);
|
|
}
|
|
|
|
/// <summary>
|
|
/// Configuration for Drop Plane ability.
|
|
/// </summary>
|
|
[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;
|
|
}
|
|
|
|
/// <summary>
|
|
/// Configuration for an airplane type with visual and physics properties.
|
|
/// </summary>
|
|
[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;
|
|
}
|
|
}
|
|
|