using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Serialization;

[CreateAssetMenu(fileName = "PlayerMovementSettings.asset", menuName = "KernelPanic/Player/MovementSettings")]
public class PlayerMovementSettings : ScriptableObject
{
    public float UpGravity => _upGravity;
    public float DownGravity => _downGravity;
    public float GroundedYVelocity => _groundedYVelocity;
    public float BaseMovementForce => _baseMovementForce;
    public float JumpHeight => _jumpHeight;
    public float CoyoteTime => _coyoteTime;
    public float BoostForce => _boostForce;
    public float BoostTime => _boostTime;
    public float BlinkDistance => _blinkDistance;
    public float BlinkVelocity => _blinkVelocity;
    public float MinBoostVelocity => _minBoostVelocity;
    public float DragCoefficient => _dragCoefficient;
    public float BoostDragCoefficient => _boostDragCoefficient;
    public float AirDragCoefficient => _airDragCoefficient;
    public float StillDragCoefficient => _stillDragCoefficient;
    public float LookSpeed => _lookSpeed;

    [Header( "Look" )] 
    [SerializeField]
    private float _lookSpeed;
    
    [Header("Gravity")]
    [SerializeField]
    private float _upGravity;
    [SerializeField]
    private float _downGravity;
    [SerializeField]
    private float _groundedYVelocity;
    
    [Header("Movement")]
    [SerializeField]
    private float _baseMovementForce;
    
    [Header("Jump")]
    [SerializeField]
    private float _jumpHeight;
    [SerializeField]
    private float _coyoteTime;
    
    [Header("Boost")]
    [SerializeField]
    private float _boostForce;
    [SerializeField]
    private float _boostTime;
    [SerializeField]
    private float _minBoostVelocity;

    [Header( "Blink" )]
    [SerializeField]
    private float _blinkDistance;
    [SerializeField]
    private float _blinkVelocity;
    
    [Header("Drag")]
    [SerializeField]
    private float _dragCoefficient;
    [SerializeField]
    private float _boostDragCoefficient;
    [SerializeField]
    private float _airDragCoefficient;
    [SerializeField]
    private float _stillDragCoefficient;
}