using System.Collections.Generic; 
 | 
using UnityEngine; 
 | 
using UnityEngine.UI; 
 | 
  
 | 
namespace vnxbqy.UI  
 | 
{  
 | 
    public class EmblemCell : MonoBehaviour  
 | 
    {  
 | 
        public float scale = 1.0f;  
 | 
  
 | 
        Image m_EmblemImage;  
 | 
        public Image emblemImage  
 | 
        {  
 | 
            get  
 | 
            {  
 | 
                if (m_EmblemImage == null)  
 | 
                {  
 | 
                    LoadPrefab();  
 | 
                    m_EmblemImage = this.GetComponent<Image>("EmblemCell/Img_Emblem");  
 | 
                }  
 | 
                return m_EmblemImage;  
 | 
            }  
 | 
        }  
 | 
  
 | 
        Button m_button;  
 | 
        public Button button  
 | 
        {  
 | 
            get  
 | 
            {  
 | 
                if (m_button == null)  
 | 
                {  
 | 
                    LoadPrefab();  
 | 
                    m_button = this.GetComponent<Button>("EmblemCell/Img_Emblem");  
 | 
                }  
 | 
                return m_button;  
 | 
            }  
 | 
        }  
 | 
  
 | 
        UIFrame m_EmblemUIFrame;  
 | 
        public UIFrame emblemUIFrame  
 | 
        {  
 | 
            get  
 | 
            {  
 | 
                if (m_EmblemUIFrame == null)  
 | 
                {  
 | 
                    LoadPrefab();  
 | 
                    m_EmblemUIFrame = this.GetComponent<UIFrame>("EmblemCell/Img_Emblem");  
 | 
                }  
 | 
                return m_EmblemUIFrame;  
 | 
            }  
 | 
        }  
 | 
  
 | 
        UIEffect m_EmblemUIEffect;  
 | 
        public UIEffect emblemUIEffect  
 | 
        {  
 | 
            get  
 | 
            {  
 | 
                if (m_EmblemUIEffect == null)  
 | 
                {  
 | 
                    LoadPrefab();  
 | 
                    m_EmblemUIEffect = this.GetComponent<UIEffect>("EmblemCell/Img_Emblem");  
 | 
                }  
 | 
                return m_EmblemUIEffect;  
 | 
            }  
 | 
        }  
 | 
  
 | 
        RedpointBehaviour m_RedpointBehaviour;  
 | 
        public RedpointBehaviour redpointBehaviour  
 | 
        {  
 | 
            get  
 | 
            {  
 | 
                if (m_RedpointBehaviour == null)  
 | 
                {  
 | 
                    LoadPrefab();  
 | 
                    m_RedpointBehaviour = this.GetComponent<RedpointBehaviour>("EmblemCell/Img_Emblem/RedPoint");  
 | 
                }  
 | 
                return m_RedpointBehaviour;  
 | 
            }  
 | 
        }  
 | 
  
 | 
        GameObject prefab;  
 | 
  
 | 
        protected void LoadPrefab()  
 | 
        {  
 | 
            var tmp = transform.Find("EmblemCell");  
 | 
  
 | 
            if (tmp != null)  
 | 
            {  
 | 
                prefab = tmp.gameObject;  
 | 
                return;  
 | 
            }  
 | 
            if (prefab == null)  
 | 
            {  
 | 
                prefab = UIUtility.CreateWidget("EmblemCell", "EmblemCell");  
 | 
  
 | 
                if (prefab != null)  
 | 
                {  
 | 
                    prefab.transform.SetParentEx(this.transform, Vector3.zero, Quaternion.identity, Vector3.one);  
 | 
                    prefab.transform.SetAsFirstSibling();  
 | 
  
 | 
                    RectTransform prefabRect = prefab.GetComponent<RectTransform>();  
 | 
                    RectTransform parentRect = GetComponent<RectTransform>();  
 | 
                    if (prefabRect != null && parentRect != null)  
 | 
                    {  
 | 
                        prefabRect.anchorMin = new Vector2(0.5f, 0.5f);  
 | 
                        prefabRect.anchorMax = new Vector2(0.5f, 0.5f);  
 | 
                        prefabRect.sizeDelta = new Vector2(parentRect.rect.width, parentRect.rect.height);  
 | 
                        prefabRect.localScale = new Vector3(scale, scale, scale);  
 | 
                    }  
 | 
                }  
 | 
            }  
 | 
        }  
 | 
  
 | 
        public void InitUI(EmblemModel model)  
 | 
        {  
 | 
            if (model == null)  
 | 
                return;  
 | 
            InitUI(model.emblemID, model.emblemUIEffectID);  
 | 
        }  
 | 
  
 | 
        private void InitUI(int emblemID, int emblemUIEffectID)  
 | 
        {  
 | 
            emblemUIEffect.Stop();  
 | 
            emblemUIFrame.enabled = false;  
 | 
            if (!FamilyEmblemConfig.Has(emblemID))  
 | 
                return;  
 | 
  
 | 
            FamilyEmblemConfig config = FamilyEmblemConfig.Get(emblemID);  
 | 
            string imgStr = config.Image;  
 | 
            if (UIFrameMgr.Inst.ContainsDynamicImage(imgStr))  
 | 
            {  
 | 
                emblemUIFrame.ResetFrame(imgStr);  
 | 
                List<UnityEngine.Sprite> spriteList = UIFrameMgr.Inst.GetDynamicImage(imgStr);  
 | 
                if (!spriteList.IsNullOrEmpty())  
 | 
                {  
 | 
                    emblemImage.rectTransform.sizeDelta = new Vector2(spriteList[0].rect.width, spriteList[0].rect.height);  
 | 
                }  
 | 
                emblemUIFrame.enabled = true;  
 | 
            }  
 | 
            else  
 | 
            {  
 | 
                emblemImage.SetSprite(imgStr);  
 | 
                emblemImage.SetNativeSize();  
 | 
                emblemUIFrame.enabled = false;  
 | 
            }  
 | 
  
 | 
            if (!EffectConfig.Has(emblemUIEffectID))  
 | 
                return;  
 | 
            emblemUIEffect.effect = emblemUIEffectID;  
 | 
            emblemUIEffect.loop = true;  
 | 
            emblemUIEffect.Play();  
 | 
        }  
 | 
    }  
 | 
  
 | 
    public class EmblemModel  
 | 
    {  
 | 
        public int emblemID { get; private set; }  
 | 
        public int emblemUIEffectID { get; private set; }  
 | 
  
 | 
        public EmblemModel(int emblemID, int emblemUIEffectID)  
 | 
        {  
 | 
            this.emblemID = emblemID;  
 | 
            this.emblemUIEffectID = emblemUIEffectID;  
 | 
        }  
 | 
    }  
 | 
} 
 |