Files
AppleHillsProduction/Assets/Scripts/Minigames/Airplane/Data/AirplaneAbilityConfig.cs
tschesky c27f22ef0a MVP of the plane throwing game (#77)
Co-authored-by: Michal Pikulski <michal@foolhardyhorizons.com>
Co-authored-by: Michal Pikulski <michal.a.pikulski@gmail.com>
Reviewed-on: #77
2025-12-07 19:36:57 +00:00

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;
}
}