using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEditor;

[CustomEditor(typeof(PlayerController))]
public class PlayerControllerEditor : Editor
{
    public override void OnInspectorGUI()
    {
        // 기본 인스펙터를 그리기
        base.OnInspectorGUI();
        
        // 타겟 컴포넌트 참조 가져오기
        PlayerController playerController = (PlayerController)target;
        
        // 여백 추가
        EditorGUILayout.Space();
        EditorGUILayout.LabelField("상태 디버그 정보", EditorStyles.boldLabel);


        EditorGUILayout.BeginVertical(EditorStyles.helpBox);
        EditorGUILayout.LabelField("현재 상태", playerController.CurrentState.ToString(), EditorStyles.boldLabel);
        EditorGUILayout.LabelField("현재 행동", playerController.CurrentAction != null ? playerController.CurrentAction.ToString() : "-", EditorStyles.boldLabel);
        EditorGUILayout.EndVertical();
        
        // 지면 접촉 상태
        GUI.backgroundColor = Color.white;
        EditorGUILayout.Space();
        EditorGUILayout.LabelField("캐릭터 디버그 정보", EditorStyles.boldLabel);
        // GUI.enabled = false;
        // EditorGUILayout.Toggle("지면 접촉", playerController.IsGrounded);
        // GUI.enabled = true;
        
        // 강제로 상태 변경 버튼
        EditorGUILayout.BeginHorizontal();

        if (GUILayout.Button("BattleMode"))
            playerController.SwitchBattleMode();
        if (GUILayout.Button("Win"))
            playerController.SetState(PlayerState.Win);
        if (GUILayout.Button("Hit"))
            playerController.HandlePlayerHit();
        if (GUILayout.Button("Dead"))
            playerController.SetState(PlayerState.Dead);
        
        EditorGUILayout.EndHorizontal();
    }

    private void OnEnable()
    {
        EditorApplication.update += OnEditorUpdate;
    }

    private void OnDisable()
    {
        EditorApplication.update -= OnEditorUpdate;
    }

    private void OnEditorUpdate()
    {
        if (target != null)
            Repaint();
    }
}
