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