﻿#if UNITY_EDITOR
using ABI.CCK.Scripts.Editor;
using UnityEditor;
using UnityEngine;
using static ABI.CCK.Scripts.Editor.SharedComponentGUI;

namespace ABI.CCK.Components
{
    public partial class CCK_CVRAvatarEditor
    {
        private readonly string[] _combinedBlinkStrings = { "Blink 1", "Blink 2", "Blink 3", "Blink 4" };
        private readonly string[] _separateBlinkStrings = { "Left Blink", "Right Blink" };
        
        private void Draw_EyeBlinkSettings()
        {
            using (new FoldoutScope(ref _guiEyeBlinkSettingsFoldout, "Eye Blink Settings"))
            {
                if (!_guiEyeBlinkSettingsFoldout) return;
                using (new EditorGUI.IndentLevelScope())
                    DrawEyeBlinkSettings();
            }
        }

        #region Drawing Methods

        private void DrawEyeBlinkSettings()
        {

            EditorGUILayout.PropertyField(m_UseBlinkBlendshapesProp, new GUIContent("Use Blink Blendshapes"));

            Separator();

            EditorGUIExtensions.LimitSliderSidedProp("Blink Gap (Seconds)", m_BlinkGapProp, CVRAvatar.BlinkMinGapLimit, CVRAvatar.BlinkMaxGapLimit);

            EditorGUIExtensions.LimitSliderSidedProp("Blink Duration (Seconds)", m_BlinkDurationProp, CVRAvatar.BlinkMinDurationLimit, CVRAvatar.BlinkMaxDurationLimit);

            EditorGUILayout.PropertyField(m_BlinkModeProp, new GUIContent("Blink Mode"));
            
            Separator();

            switch (_avatar.blinkMode)
            {
                default:
                case CVRAvatar.CVRAvatarEyeBlinkMode.Combined:
                    DrawBlendshapes(string.Empty, m_BlinkBlendshapeProp, _combinedBlinkStrings);
                    EditorGUILayout.HelpBox("All four blendshapes are driven at the same time. This is legacy behaviour and not recommended.", MessageType.Warning);
                    break;
                case CVRAvatar.CVRAvatarEyeBlinkMode.Separate:
                    DrawBlendshapes(string.Empty, m_BlinkBlendshapeProp, _separateBlinkStrings);
                    EditorGUILayout.HelpBox("Left and right blendshapes are driven separately.", MessageType.Info);
                    break;
            }
        }

        #endregion
    }
}
#endif