using AX.PlaneTools;
using UnityEditor;
using UnityEditor.Animations;
using UnityEngine;

public class PlanTools : EditorWindow
{
    [MenuItem("Tools/预案制作工具")]
    static void PlanningToolsWindow()
    {
        var window = (PlanTools)EditorWindow.GetWindow(typeof(PlanTools), true, "Standard Plan Tools V5.1.0");
        GameManager.LoadConfig();
        window.Show();
    }
    //定义滑条
    private Vector2 UIScrollow;

    private void OnEnable()
    {
        PlanToolsEditor._productName = PlayerSettings.productName;
        if (Camera.main)
            PlanToolsEditor.MainCamera = Camera.main.gameObject;

        PlanToolsEditor.GetInitAngele();
    }

    void OnGUI()
    {
        UIScrollow = EditorGUILayout.BeginScrollView(UIScrollow, false, false);
        #region 设置单位名称
        EditorGUILayout.Space();
        PlanToolsEditor.isPlayerSetting = GUILayout.Toggle(PlanToolsEditor.isPlayerSetting, "产品名称", EditorStyles.foldout);
        if (PlanToolsEditor.isPlayerSetting)
        {
            GUILayout.BeginVertical("Box");
            EditorGUILayout.Space();
            GUILayout.BeginHorizontal();
            GUILayout.Label("单位名称:");
            PlanToolsEditor._productName = EditorGUILayout.TextField(PlanToolsEditor._productName);
            GUILayout.EndHorizontal();
            EditorGUILayout.Space();
            if (GUILayout.Button("Set"))
            {
                PlayerSettings.productName = PlanToolsEditor._productName;
            }
            GUILayout.EndVertical();
        }
        #endregion
        #region 存储设置
        EditorGUILayout.Space();
        PlanToolsEditor.isShowStroe = GUILayout.Toggle(PlanToolsEditor.isShowStroe, "存储设置", EditorStyles.foldout);
        if (PlanToolsEditor.isShowStroe)
        {
            GUILayout.BeginVertical("Box");

            GUILayout.BeginHorizontal("Box");
            GUILayout.Label("存储地址(必填):");
            Config.ServerAddress = EditorGUILayout.TextField(Config.ServerAddress);
            GUILayout.EndHorizontal();

            GUILayout.BeginHorizontal("Box");
            GUILayout.Label("单位区域(必填):");
            Config.AreaName = EditorGUILayout.TextField(Config.AreaName);
            GUILayout.EndHorizontal();

            GUILayout.BeginHorizontal("Box");
            GUILayout.Label("单位名称(必填):");
            Config.CompanyName = EditorGUILayout.TextField(Config.CompanyName);
            GUILayout.EndHorizontal();

            GUILayout.BeginHorizontal("Box");
            EditorGUILayout.LabelField($"存储路径预览:{Config.ServerAddress}/{Config.BucketName}/{Config.AreaName}/{Config.CompanyName}/File", new GUIStyle() { normal = new GUIStyleState() { textColor = Color.green } });
            GUILayout.EndHorizontal();

            EditorGUILayout.Space(5);
            if (GUILayout.Button("保存"))
            {
                GameManager.SaveConfig();
            }
            GUILayout.EndVertical();
        }
        #endregion
        #region 模型初始角度
        EditorGUILayout.Space();
        PlanToolsEditor.isInitAngele = GUILayout.Toggle(PlanToolsEditor.isInitAngele, "模型旋转角度", EditorStyles.foldout);
        if (PlanToolsEditor.isInitAngele)
        {
            GUILayout.BeginVertical("Box");
            GUILayout.BeginHorizontal();
            GUILayout.Label("角度:");
            PlanToolsEditor.InitAngele = EditorGUILayout.Slider(PlanToolsEditor.InitAngele, -360, 360);
            if (GUILayout.Button("GET"))
            {
                PlanToolsEditor.GetInitAngele();
            }
            if (GUILayout.Button("SET"))
            {
                PlanToolsEditor.SetInitAngele();
            }
            GUILayout.EndHorizontal();
            GUILayout.EndVertical();
        }
        #endregion
        #region 摄影机位置
        EditorGUILayout.Space();
        PlanToolsEditor.isSetCamera = GUILayout.Toggle(PlanToolsEditor.isSetCamera, "摄影机角度", EditorStyles.foldout);
        if (PlanToolsEditor.isSetCamera)
        {
            GUILayout.BeginVertical("Box");
            EditorGUILayout.Space();
            PlanToolsEditor.MainCamera = EditorGUILayout.ObjectField("摄影机:", PlanToolsEditor.MainCamera, typeof(GameObject), true) as GameObject;
            EditorGUILayout.Space();
            GUILayout.BeginVertical("Box");
            PlanToolsEditor.CamPostion = EditorGUILayout.Vector3Field("摄影机位置", PlanToolsEditor.CamPostion);
            PlanToolsEditor.CamRotation = EditorGUILayout.Vector3Field("摄影机旋转", PlanToolsEditor.CamRotation);
            PlanToolsEditor.CamDistance = EditorGUILayout.FloatField("Distance", PlanToolsEditor.CamDistance);
            PlanToolsEditor.CamXY = EditorGUILayout.Vector2Field("XY", PlanToolsEditor.CamXY);
            PlanToolsEditor.TargetPosition = EditorGUILayout.Vector3Field("目标点位置", PlanToolsEditor.TargetPosition);
            GUILayout.EndVertical();
            /////////////////////////////初始镜头
            GUILayout.BeginVertical("Box");
            if (GUILayout.Button("获取位置")) { PlanToolsEditor.GetCameraParameter(); }
            GUILayout.BeginHorizontal();
            if (GUILayout.Button("初始位置")) { PlanToolsEditor.SetInitializationCamera(); }
            if (GUILayout.Button("高度")) { PlanToolsEditor.SetHeightCamera(); }
            if (GUILayout.Button("毗邻")) { PlanToolsEditor.SetAdjacentCamera(); }
            GUILayout.EndHorizontal();
            GUILayout.EndVertical();
            GUILayout.EndVertical();//SetCameraEnd
        }
        #endregion
        #region 常用名称
        EditorGUILayout.Space();
        PlanToolsEditor.isCommonNames = GUILayout.Toggle(PlanToolsEditor.isCommonNames, "常用名称", EditorStyles.foldout);
        if (PlanToolsEditor.isCommonNames)
        {
            GUILayout.BeginVertical("Box");
            GUILayout.BeginHorizontal("Box");
            if (GUILayout.Button("防火分区组"))
            {
                PlanToolsEditor.CommonNames("FireCompartments");
            }
            if (GUILayout.Button("防火门组"))
            {
                PlanToolsEditor.CommonNames("FireDoors");
            }
            if (GUILayout.Button("防火卷帘组"))
            {
                PlanToolsEditor.CommonNames("FireShutters");
            }
            if (GUILayout.Button("室内消火栓组"))
            {
                PlanToolsEditor.CommonNames("Hydrants");
            }
            GUILayout.EndHorizontal();
            GUILayout.EndVertical();
        }
        #endregion
        #region 防火设计
        EditorGUILayout.Space();
        PlanToolsEditor.isFireDesign = GUILayout.Toggle(PlanToolsEditor.isFireDesign, "防火设计", EditorStyles.foldout);
        if (PlanToolsEditor.isFireDesign)
        {
            GUILayout.BeginVertical("Box");
            GUILayout.BeginVertical("Box");
            PlanToolsEditor.fireDesignMode = (FireDesignMode)EditorGUILayout.EnumPopup("类型", PlanToolsEditor.fireDesignMode);
            GUILayout.EndVertical();
            EditorGUILayout.Space();
            GUILayout.BeginVertical("Box");
            switch (PlanToolsEditor.fireDesignMode)
            {
                case FireDesignMode.避难层:
                    if (GUILayout.Button("Set"))
                    {
                        PlanToolsEditor.SetRefugeFloor();
                        Debug.Log("---->避难层设置成功!");
                    }
                    break;
                case FireDesignMode.防火分区:
                    if (GUILayout.Button("Set"))
                    {
                        PlanToolsEditor.SetFireZones();
                        Debug.Log("---->防火分区设置成功!");
                    }
                    break;
                case FireDesignMode.防火门:
                    PlanToolsEditor.FireDoorDefaultColor = EditorGUILayout.ColorField("开始颜色", PlanToolsEditor.FireDoorDefaultColor);
                    PlanToolsEditor.FireDoorActiveColor = EditorGUILayout.ColorField("结束颜色", PlanToolsEditor.FireDoorActiveColor);
                    if (GUILayout.Button("Set"))
                    {
                        PlanToolsEditor.SetFireDoors();
                        Debug.Log("---->防火门设置成功!");
                    }
                    break;
                case FireDesignMode.防火卷帘:
                    PlanToolsEditor.FireShutterDefaultColor = EditorGUILayout.ColorField("开始颜色", PlanToolsEditor.FireShutterDefaultColor);
                    PlanToolsEditor.FireShutterActiveColor = EditorGUILayout.ColorField("结束颜色", PlanToolsEditor.FireShutterActiveColor);
                    if (GUILayout.Button("Set"))
                    {
                        PlanToolsEditor.SetFireShutters();
                        Debug.Log("---->防火卷帘设置成功!");
                    }
                    break;
            }
            GUILayout.EndVertical();
            GUILayout.EndVertical();
        }
        #endregion
        #region 供水系统
        EditorGUILayout.Space();
        PlanToolsEditor.isWaterSupply = GUILayout.Toggle(PlanToolsEditor.isWaterSupply, "供水系统", EditorStyles.foldout);
        if (PlanToolsEditor.isWaterSupply)
        {
            GUILayout.BeginVertical("Box");
            GUILayout.BeginVertical("Box");
            PlanToolsEditor.waterMode = (WaterMode)EditorGUILayout.EnumPopup("类型", PlanToolsEditor.waterMode);
            GUILayout.EndVertical();
            EditorGUILayout.Space();
            GUILayout.BeginVertical("Box");
            switch (PlanToolsEditor.waterMode)
            {
                
                case WaterMode.室内消火栓:
                    PlanToolsEditor.HydrantController = EditorGUILayout.ObjectField("Animator:", PlanToolsEditor.HydrantController, typeof(AnimatorController), true) as AnimatorController;
                    if (GUILayout.Button("Set")) { PlanToolsEditor.OnIndoorHydrants(); }
                    break;
                case WaterMode.消防泵:
                    PlanToolsEditor.PumpDefaultColor = EditorGUILayout.ColorField("开始颜色", PlanToolsEditor.PumpDefaultColor);
                    PlanToolsEditor.PumpActiveColor = EditorGUILayout.ColorField("结束颜色", PlanToolsEditor.PumpActiveColor);
                    if (GUILayout.Button("Set"))
                    {
                        PlanToolsEditor.OnFirePump();
                        Debug.Log("---->消防泵设置成功!");
                    }
                    break;
            }
            GUILayout.EndVertical();
            GUILayout.EndVertical();
        }
        #endregion
        #region 疏散系统
        EditorGUILayout.Space();
        PlanToolsEditor.isEvacuation = GUILayout.Toggle(PlanToolsEditor.isEvacuation, "疏散系统", EditorStyles.foldout);
        if (PlanToolsEditor.isEvacuation)
        {
            GUILayout.BeginVertical("Box");
            GUILayout.BeginVertical("Box");
            PlanToolsEditor.evacuationMode = (EvacuationMode)EditorGUILayout.EnumPopup("类型", PlanToolsEditor.evacuationMode);
            GUILayout.EndVertical();
            EditorGUILayout.Space();
            GUILayout.BeginVertical("Box");
            switch (PlanToolsEditor.evacuationMode)
            {
                case EvacuationMode.安全出口:
                    if (GUILayout.Button("Set")) { PlanToolsEditor.OnFireEscape(); }
                    break;
                case EvacuationMode.疏散楼梯:
                    if (GUILayout.Button("Set")) { PlanToolsEditor.OnEscapeStair(); }
                    break;
                case EvacuationMode.消防电梯:
                    if (GUILayout.Button("Set")) { PlanToolsEditor.OnFireElevator(); }
                    break;

            }
            GUILayout.EndVertical();
            GUILayout.EndVertical();
        }
        #endregion
        //滑条结束,所有包含在滑条内的UI在此之上
        EditorGUILayout.EndScrollView();
    }

}