using FairyGUI;
using System.Collections.Generic;
using UI.Common;
using UnityEngine;
namespace GFGGame
{
    public class ViewGlobal
    {
        private static UI_ComHolder comHolder;
        private static EffectUI _effectUI1;
        public static void CreatClickEffect()
        {
            if (comHolder == null)
            {
                comHolder = UI_ComHolder.Create();
                comHolder.target.touchable = false;
                ViewManager.AddChildToFloatLayer(comHolder.target);
                comHolder.target.SetPosition(-100, -100, 0);
                _effectUI1 = EffectUIPool.CreateEffectUI(comHolder.m_holder, "ui_dj", "DJ");
                GRoot.inst.onTouchBegin.Add(SetClickPos);
            }
        }
        private static void SetClickPos()
        {
            Vector2 pos = GRoot.inst.GlobalToLocal(Stage.inst.touchPosition);
            comHolder.m_holder.visible = false;
            comHolder.m_holder.visible = true;
            comHolder.target.SetPosition(pos.x, pos.y, 0);
        }
        /// 
        /// 获取顶部摄像头的高度,减去一定的位移是因为设计图本身为顶部留出了一定的间隙
        /// 
        /// 
        static float GetTopOffset()
        {
            // 标准分辨率下 设计图顶部留了80像素的偏移
            int designOffset = ((Screen.safeArea.height + Screen.safeArea.y) 
                == Screen.height ? 0 : (int)Mathf.Round(80 * UIContentScaler.scaleFactor));
            
            // 设置最低偏移是设计图顶部的偏移量
            return Mathf.Max(0, Screen.height - Screen.safeArea.height - Screen.safeArea.y - designOffset);
        }
        /// 
        /// 获取画布根据分辨率适配后的,顶部的实际高度
        /// 
        /// 
        public static float GetRealTopOffset()
        {
            return Screen.height / UIContentScaler.scaleFactor - GetUIHeight();
        }
        /// 
        /// 获取画布根据分辨率适配后的UI高度
        /// 
        /// 
        public static float GetUIHeight()
        {
            return (Screen.height - GetTopOffset()) / UIContentScaler.scaleFactor;
        }
        public static List FindAllGLoaderInTrans(Transform parent)
        {
            List foundChildren = new List();
            // 遍历当前父节点的所有子节点
            foreach (Transform child in parent)
            {
                // 检查子节点的名称是否匹配
                if (child.name == "GLoader" || child.name == "Shape")
                {
                    // 将匹配的子节点添加到列表中
                    foundChildren.Add(child);
                }
                // 递归调用,查找孙子节点
                foundChildren.AddRange(FindAllGLoaderInTrans(child));
            }
            return foundChildren;
        }
        private static List fullScreenPicNames = new List() { "loaBg", "mask" };
        private static List notMoveUI = new List() { "Top_img" };
        public static bool IsFullScreenPic(string name)
        {
            foreach (string s in fullScreenPicNames)
            {
                if (name == s)
                    return true;
            }
            return false;
        }
        public static bool IsNotMoveUI(string name)
        {
            foreach (string s in notMoveUI)
            {
                if (s.Contains(name))
                    return true;
            }
            return false;
        }
    }
}