using AppleHills.Core.Settings; using Common.Input; using UnityEngine; namespace Minigames.Airplane.Settings { /// /// Settings for the airplane minigame. /// Create via Assets > Create > AppleHills > Settings > Airplane /// [CreateAssetMenu(fileName = "AirplaneSettings", menuName = "AppleHills/Settings/Airplane", order = 9)] public class AirplaneSettings : BaseSettings, IAirplaneSettings { [Header("Slingshot Configuration")] [SerializeField] private SlingshotConfig slingshotSettings = new SlingshotConfig { maxDragDistance = 5f, baseLaunchForce = 20f, minForceMultiplier = 0.1f, maxForceMultiplier = 1f, trajectoryPoints = 20, trajectoryTimeStep = 0.1f, trajectoryLockDuration = 0f, // No locking for airplane autoRegisterInput = true // Direct registration }; [Header("Flight Settings")] [Tooltip("Mass of the airplane")] [SerializeField] private float airplaneMass = 1f; [Tooltip("Maximum flight time before timeout (seconds)")] [SerializeField] private float maxFlightTime = 10f; [Header("Camera Settings")] [Tooltip("Camera follow smoothness (higher = smoother but more lag)")] [SerializeField] private float cameraFollowSmoothing = 5f; [Tooltip("Camera zoom level during flight")] [SerializeField] private float flightCameraZoom = 5f; [Header("Timing")] [Tooltip("Duration of intro sequence (seconds)")] [SerializeField] private float introDuration = 1f; [Tooltip("Duration of person introduction (seconds)")] [SerializeField] private float personIntroDuration = 1f; [Tooltip("Duration of result evaluation (seconds)")] [SerializeField] private float evaluationDuration = 1f; [Header("Debug")] [Tooltip("Show debug logs in console")] [SerializeField] private bool showDebugLogs; #region IAirplaneSettings Implementation public SlingshotConfig SlingshotSettings => slingshotSettings; public float AirplaneMass => airplaneMass; public float MaxFlightTime => maxFlightTime; public float CameraFollowSmoothing => cameraFollowSmoothing; public float FlightCameraZoom => flightCameraZoom; public float IntroDuration => introDuration; public float PersonIntroDuration => personIntroDuration; public float EvaluationDuration => evaluationDuration; public bool ShowDebugLogs => showDebugLogs; #endregion } }