using BjData;
using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using Utility;
//============================================================
//支持中文,文件使用UTF-8编码
//@author	YangHua
//@create	20230920
//@company	QianHuo
//
//@description:
//============================================================
namespace QianHuo
{
    public enum BiaoJiType
    {
        defaultModel,
        电流异常,
        电压异常,
        私换互感器,
        移相
    }
    [Serializable]
    public struct ErrorObjs
    {
        public GameObject objParent;
        public GameObject[] objChildren;
    }

    public class BiaoJiController : MonoBehaviour
    {
        public BiaoJiType biaoJiType = BiaoJiType.defaultModel;

        public GameObject guimenFengYing;
        public GameObject biaoJiFengYing;
        public GameObject luoSi;

        public GameObject jiexianheFengYing;
        public GameObject huganqiFengYing;

        /// <summary>
        /// 三相_无互感器_无光伏
        /// </summary>
        public ErrorObjs[] correctObjs;
        /// <summary>
        /// 三相_无互感器_无光伏
        /// </summary>
        public ErrorObjs[] errorObjs;

        public ErrorObjs[] dianYaCorrectObjs;
        public ErrorObjs[] dianYaErrorObjs;

        public ErrorObjs currentErrorObj;
        public ErrorObjs currentCorrectObj;
        public string[] abc;
        public string warnningType;
        public string onSite;
        public string userState;
        public bool isGuanFu = false;

        // Use this for initialization
        private void Start()
        {
            userState = GlobalFlag.biaojiData.userState;
            warnningType = GlobalFlag.biaojiData.warningType;
            onSite = GlobalFlag.biaojiData.onSite;


            if (userState == "正常") return;
            if (guimenFengYing.GetComponent<DoolsPlayer>())
                guimenFengYing.GetComponent<DoolsPlayer>()._collider.enabled = true;
            guimenFengYing.SetActive(false);
            GameManager.Instance.YanDian = true;
            if (isGuanFu)
            {

            if (warnningType.Equals("电压异常"))
            {
                SwitchDianYaErrorObjs();
                SwitchDianYaCorrectObjs();

            }
            else if (warnningType.Equals("电流异常"))
            {
                SwitchDianLiuErrorObjs();
                SwitchDianLiuCorrectObjs();
            }
            }
            else
            {
                SwitchDianYaErrorObjs();
                SwitchDianYaCorrectObjs();
                SwitchDianLiuErrorObjs();
                SwitchDianLiuCorrectObjs();
            }

            switch (onSite)
            {
                case "电能表U型环短接":
                    if (biaoJiFengYing.GetComponent<AmmeterSon>())
                        luoSi.GetComponent<AmmeterSon>().enabled = true;
                    luoSi.GetComponent<AmmeterSon>().Run = true;
                    biaoJiFengYing.SetActive(false);
                    SwitchDianLiuObjs();
                    break;
                case "接线盒U型环短接":
                case "接线盒连接片短接":
                case "接线盒小电阻短接":
                    if (jiexianheFengYing != null)
                    {
                        if (jiexianheFengYing.GetComponent<DoolsPlayer>())
                            jiexianheFengYing.GetComponent<DoolsPlayer>()._collider.enabled = true;
                        jiexianheFengYing.SetActive(false);
                    }
                    SwitchDianLiuObjs();
                    break;
                case "互感器U型环短接":
                case "互感器开路":
                    if (huganqiFengYing != null)
                    {
                        if (huganqiFengYing.GetComponent<DoolsPlayer>())
                            huganqiFengYing.GetComponent<DoolsPlayer>()._collider.enabled = true;
                        huganqiFengYing.SetActive(false);
                        
                    }
                    break;
            }
            SwitchABC();
        }

        /// <summary>
        /// 控制电流正确项
        /// </summary>
        public void SwitchDianLiuObjs()
        {
            for (int i = 0; i < correctObjs.Length; i++)
            {
                correctObjs[i].objParent.SetActive(true);
            }
        }

        /// <summary>
        /// 三相_无互感器_无光伏 控制电流错误项
        /// </summary>
        public void SwitchDianLiuErrorObjs()
        {
            string onSiteState = GlobalFlag.biaojiData.onSite;
            for (int i = 0; i < errorObjs.Length; i++)
            {
                int index = i;
                errorObjs[index].objParent.SetActive(false);
                if (onSiteState.Equals(errorObjs[index].objParent.name))
                {
                    errorObjs[index].objParent.SetActive(true);
                    currentErrorObj = errorObjs[index];
                }
            }
        }

        /// <summary>
        /// 三相_无互感器_无光伏 控制电流正确项
        /// </summary>
        public void SwitchDianLiuCorrectObjs()
        {
            string onSiteState = GlobalFlag.biaojiData.onSite;
            for (int i = 0; i < correctObjs.Length; i++)
            {
                int index = i;
                correctObjs[index].objParent.SetActive(false);
                if (onSiteState.Equals(correctObjs[index].objParent.name))
                {
                    correctObjs[index].objParent.SetActive(true);
                    currentCorrectObj = correctObjs[index];
                }
            }
        }

        public void SwitchABC()
        {
            if (!string.IsNullOrEmpty(GlobalFlag.biaojiData.selectInfo))
                abc = ToolUtility.GetInfos(GlobalFlag.biaojiData.selectInfo, '_');

            for (int i = 0; i < currentErrorObj.objChildren.Length; i++)
            {
                currentErrorObj.objChildren[i].SetActive(false);
            }

            for (int i = 0; i < currentCorrectObj.objChildren.Length; i++)
            {
                currentCorrectObj.objChildren[i].SetActive(true);
            }


            for (int i = 0; i < abc.Length; i++)
            {
                int index = i;
                if (currentErrorObj.objParent != null)
                {
                    for (int j = 0; j < currentErrorObj.objChildren.Length; j++)
                    {
                        if (abc[index].Equals(currentErrorObj.objChildren[j].name))
                        {
                            currentErrorObj.objChildren[j].SetActive(true);
                        }
                    }
                }
            }

            for (int i = 0; i < abc.Length; i++)
            {
                int index = i;
                if (currentCorrectObj.objParent != null)
                {
                    for (int j = 0; j < currentCorrectObj.objChildren.Length; j++)
                    {
                        if (abc[index].Equals(currentCorrectObj.objChildren[j].name))
                        {
                            currentCorrectObj.objChildren[j].SetActive(false);
                        }
                    }
                }
            }
        }


        public void SwitchDianYaErrorObjs()
        {
            string onSiteState = GlobalFlag.biaojiData.onSite;
            for (int i = 0; i < dianYaCorrectObjs.Length; i++)
            {
                dianYaCorrectObjs[i].objParent.SetActive(false);
                if (dianYaCorrectObjs[i].objParent.name.Contains(onSiteState))
                {
                    dianYaCorrectObjs[i].objParent.SetActive(true);
                    currentCorrectObj = dianYaCorrectObjs[i];
                }
            }
        }

        public void SwitchDianYaCorrectObjs()
        {
            string onSiteState = GlobalFlag.biaojiData.onSite;
            for (int i = 0; i < dianYaErrorObjs.Length; i++)
            {
                dianYaErrorObjs[i].objParent.SetActive(false);
                if (dianYaErrorObjs[i].objParent.name.Contains(onSiteState))
                {
                    dianYaErrorObjs[i].objParent.SetActive(true);
                    currentErrorObj = dianYaErrorObjs[i];
                }
            }
        }

    }
}