using System;
|
using UnityEngine;
|
|
//头像模块
|
public class AvatarCell : MonoBehaviour
|
{
|
ButtonEx m_button;
|
public ButtonEx button
|
{
|
get
|
{
|
if (m_button == null)
|
{
|
LoadPrefab();
|
m_button = this.GetComponent<ButtonEx>("AvatarCell/Img_FaceBG");
|
}
|
return m_button;
|
}
|
}
|
|
ImageEx m_FaceBGImage;
|
public ImageEx faceBGImage
|
{
|
get
|
{
|
if (m_FaceBGImage == null)
|
{
|
LoadPrefab();
|
m_FaceBGImage = this.GetComponent<ImageEx>("AvatarCell/Img_FaceBG");
|
}
|
return m_FaceBGImage;
|
}
|
}
|
|
EllipseMask m_FaceMask;
|
public EllipseMask faceMask
|
{
|
get
|
{
|
if (m_FaceMask == null)
|
{
|
LoadPrefab();
|
m_FaceMask = this.GetComponent<EllipseMask>("AvatarCell/Img_FaceBG/Mask_Face");
|
}
|
return m_FaceMask;
|
}
|
}
|
|
UIFrame m_FaceUIFrame;
|
public UIFrame faceUIFrame
|
{
|
get
|
{
|
if (m_FaceUIFrame == null)
|
{
|
LoadPrefab();
|
m_FaceUIFrame = this.GetComponent<UIFrame>("AvatarCell/Img_FaceBG/Mask_Face/Img_Face");
|
}
|
return m_FaceUIFrame;
|
}
|
}
|
|
ImageEx m_FaceImage;
|
public ImageEx faceImage
|
{
|
get
|
{
|
if (m_FaceImage == null)
|
{
|
LoadPrefab();
|
m_FaceImage = this.GetComponent<ImageEx>("AvatarCell/Img_FaceBG/Mask_Face/Img_Face");
|
}
|
return m_FaceImage;
|
}
|
}
|
|
UIEffectPlayer m_faceSpine;
|
public UIEffectPlayer faceSpine
|
{
|
get
|
{
|
if (m_faceSpine == null)
|
{
|
LoadPrefab();
|
m_faceSpine = this.GetComponent<UIEffectPlayer>("AvatarCell/Img_FaceBG/Mask_Face/Img_Face/Spine_Face");
|
}
|
return m_faceSpine;
|
}
|
}
|
|
|
ImageEx m_FacePicImage;
|
public ImageEx facePicImage
|
{
|
get
|
{
|
if (m_FacePicImage == null)
|
{
|
LoadPrefab();
|
m_FacePicImage = this.GetComponent<ImageEx>("AvatarCell/Img_FaceBG/Img_FacePic");
|
}
|
return m_FacePicImage;
|
}
|
}
|
|
UIFrame m_FacePicUIFrame;
|
public UIFrame facePicUIFrame
|
{
|
get
|
{
|
if (m_FacePicUIFrame == null)
|
{
|
LoadPrefab();
|
m_FacePicUIFrame = this.GetComponent<UIFrame>("AvatarCell/Img_FaceBG/Img_FacePic");
|
}
|
return m_FacePicUIFrame;
|
}
|
}
|
|
UIEffectPlayer m_facePicSpine;
|
public UIEffectPlayer facePicSpine
|
{
|
get
|
{
|
if (m_facePicSpine == null)
|
{
|
LoadPrefab();
|
m_facePicSpine = this.GetComponent<UIEffectPlayer>("AvatarCell/Img_FaceBG/Img_FacePic/Spine_FacePic");
|
}
|
return m_facePicSpine;
|
}
|
}
|
|
RedpointBehaviour m_redpoint;
|
public RedpointBehaviour redpoint
|
{
|
get
|
{
|
if (m_redpoint == null)
|
{
|
LoadPrefab();
|
m_redpoint = this.GetComponent<RedpointBehaviour>("AvatarCell/Img_FaceBG/RedPoint");
|
}
|
return m_redpoint;
|
}
|
}
|
|
GameObject prefab;
|
AvatarModel avatarModel;
|
PhantasmPavilionManager manager { get { return PhantasmPavilionManager.Instance; } }
|
private void Awake()
|
{
|
LoadPrefab();
|
}
|
|
void OnEnable()
|
{
|
PlayerDatas.Instance.playerDataRefreshEvent += PlayerDataRefresh;
|
}
|
|
void OnDisable()
|
{
|
PlayerDatas.Instance.playerDataRefreshEvent -= PlayerDataRefresh;
|
}
|
|
private void PlayerDataRefresh(PlayerDataType type)
|
{
|
if (type == PlayerDataType.Face || type == PlayerDataType.FacePic)
|
{
|
if (avatarModel == null || avatarModel.playerID != PlayerDatas.Instance.baseData.PlayerID)
|
return;
|
InitUI(AvatarHelper.GetAvatarModel((int)PlayerDatas.Instance.baseData.PlayerID,
|
PlayerDatas.Instance.baseData.face,
|
PlayerDatas.Instance.baseData.facePic));
|
}
|
}
|
|
protected void LoadPrefab()
|
{
|
if (prefab != null)
|
return;
|
var tmp = transform.Find("AvatarCell");
|
|
if (tmp != null)
|
{
|
prefab = tmp.gameObject;
|
return;
|
}
|
prefab = UIUtility.CreateWidget("AvatarCell", "AvatarCell");
|
|
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);
|
}
|
}
|
public void InitUI(AvatarModel model)
|
{
|
if (model == null)
|
return;
|
avatarModel = model;
|
LoadPrefab(); //存在被卸载的可能,重新加载
|
|
int faceID = model.faceID;
|
int facePicID = model.facePicID;
|
manager.ShowFace(faceImage, faceSpine, faceUIFrame, faceMask, faceID);
|
|
string str = AvatarHelper.GetAvatarBgColorStr(faceID);
|
faceBGImage.SetSprite(str);
|
|
int resourceType = manager.GetResourceType(PhantasmPavilionType.FacePic, facePicID);
|
string resourceValue = manager.GetResourceValue(PhantasmPavilionType.FacePic, facePicID);
|
manager.Show(facePicImage, facePicSpine, facePicUIFrame, resourceType, resourceValue);
|
|
faceBGImage.SetNativeSize();
|
faceImage.SetNativeSize();
|
facePicImage.SetNativeSize();
|
}
|
}
|
|
public class AvatarModel
|
{
|
public int playerID { get; private set; }
|
public int faceID { get; private set; }
|
public int facePicID { get; private set; }
|
public int redpointID { get; private set; }
|
public Action clickAction { get; private set; }
|
|
public AvatarModel(int playerID, int faceID, int facePicID, int redpointID = 0, Action clickAction = null)
|
{
|
this.playerID = playerID;
|
this.faceID = faceID;
|
this.facePicID = facePicID;
|
this.redpointID = redpointID;
|
this.clickAction = clickAction;
|
}
|
}
|