using System;
using System.Collections;
using System.Collections.Generic;
using DG.Tweening;
using Ktyl.Util;
using UnityEngine;

[CreateAssetMenu(menuName = "KernelPanic/Traps/Settings")]
public class TrapSettings : ScriptableObject
{
    public float SafeTime => _safeTime;
    [Header("General")]
    // how long the player has currently been safe for. -1 while the player is not
    // in a safe zone
    [SerializeField] private SerialFloat _safeTime;

    public SerialFloat ObjectTimeScale => _objectTimeScale;
    [SerializeField] private SerialFloat _objectTimeScale;
    
    [Serializable]
    public struct FallawayFloorSettings
    {
        // how long the trap takes to reset while the player is in a safe zone
        public float SafeResetTime => _safeResetTime;
        [SerializeField] private float _safeResetTime;
        
        public string FMODEvent => _fmodEvent;
        [SerializeField] private string _fmodEvent;

        public float ShakeStrength => _shakeStrength;
        [Header("Animation")]
        [SerializeField] private float _shakeStrength;

        public Ease PopInEase => _popInEase;
        [SerializeField] private Ease _popInEase;
    }
    public FallawayFloorSettings FallawayFloor => _fallawayFloor;
    [SerializeField] private FallawayFloorSettings _fallawayFloor;

    [Serializable]
    public struct ArrowWallSettings
    {
        public float SafeResetTime => _safeResetTime;
        [SerializeField] private float _safeResetTime;

        public string FMODEvent => _fmodEvent;
        [SerializeField] private string _fmodEvent;
    }

    public ArrowWallSettings ArrowWall => _arrowWall;
    [SerializeField] private ArrowWallSettings _arrowWall;
}
