using System; using UnityEngine; namespace Common.Input { /// /// Configuration for slingshot launch mechanics. /// Can be embedded in any minigame settings that use drag-to-launch. /// [Serializable] public class SlingshotConfig { [Header("Drag & Force Settings")] [Tooltip("Distance to reach max force")] public float maxDragDistance = 5f; [Tooltip("Base force value")] public float baseLaunchForce = 20f; [Tooltip("Minimum threshold (0-1)")] [Range(0f, 1f)] public float minForceMultiplier = 0.1f; [Tooltip("Maximum cap (0-2, usually 1)")] [Range(0f, 2f)] public float maxForceMultiplier = 1f; [Header("Trajectory Settings")] [Tooltip("Number of preview points")] public int trajectoryPoints = 50; [Tooltip("Time between points")] public float trajectoryTimeStep = 0.1f; [Tooltip("Show trajectory after launch (seconds, 0 = no lock)")] public float trajectoryLockDuration = 2f; [Header("Input")] [Tooltip("Auto-register with InputManager on Enable()")] public bool autoRegisterInput = true; /// /// Calculate force from drag parameters using configured multipliers /// public float CalculateForce(float dragDistance, float dragRatio) { return dragRatio * maxForceMultiplier * baseLaunchForce; } /// /// Calculate minimum force threshold /// public float GetMinForce() { return baseLaunchForce * minForceMultiplier; } } }