using System;
using System.Collections;
using System.Collections.Generic;
using TMPro;
using UnityEngine;

[CreateAssetMenu(menuName = "KernelPanic/Dialogue/Settings")]
public class DialogueSettings : ScriptableObject
{
    [Serializable]
    public struct InputPromptSpriteIndices
    {
        public int blink;
        public int boost;
        public int timeFreeze;
        public int interact;
    }
    
    public InputPromptSpriteIndices GamepadInputPrompts => _gamepadInputPrompts;
    [SerializeField] private InputPromptSpriteIndices _gamepadInputPrompts;
    
    public InputPromptSpriteIndices KeyboardInputPrompts => _keyboardInputPrompts;
    [SerializeField] private InputPromptSpriteIndices _keyboardInputPrompts;
    
    public float HideAfter => _hideAfter;
    [SerializeField] private float _hideAfter;

    public string RadioDialogueKey => _radioDialogueKey;
    [SerializeField] private string _radioDialogueKey;

    [SerializeField] private AudioClip[] _dialogueClips;
    private readonly Dictionary<string, AudioClip> _keyClips = new Dictionary<string, AudioClip>();

    public AudioClip GetDialogueClip(string key)
    {
        if (!_keyClips.ContainsKey(key))
        {
            Debug.LogError($"no clip for key {key}");
            return null;
        }

        return _keyClips[key];
    }
    
    private void OnEnable()
    {
        foreach (var dialogueClip in _dialogueClips)
        {
            _keyClips[dialogueClip.name] = dialogueClip;
        }
    }
}