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;
|
}
|
}
|
}
|