using UnityEngine;
using System.Collections;
using UnityEngine.UI;
using System;
///
/// 英雄小头像格子
/// 角色的个人账号的 英雄头像
/// 不适用于显示 自己账号之外的其他玩家的数据
///
public class UI_HeroIconCardElement : GameBehavior
{
///
/// 数据
///
public string mHeroUIDData = null;
///
/// 背景,点击选中
///
private GameObject mBG = null;
///
/// 英雄小头像图标
///
private Image mIcon = null;
///
/// 英雄头像边框
///
private Image mBorder = null;
///
/// 元素图标
///
private Image myusnsuIcon;
///
/// 职业类型图标
///
private Image mzhiyeIcon;
///
/// 星级
///
private GameObject mStar;
///
/// 等阶
///
private Image mDengjieIcon;
///
/// 好感度
///
private GameObject mFavorIcon;
///
/// 等级
///
private Text mLevelText = null;
///
/// 等级背景
///
private Transform mLevelbg;
///
/// 是否需要关注同步更新英雄数据
///
private bool mIsNeedReceiveUpdateData;
private bool isSpecial = false;
///
/// 初始化
///
/// 是否需要同步数据
public void Init(bool isNeedReceiveUpdateData = false)
{
mIsNeedReceiveUpdateData = isNeedReceiveUpdateData;
mBG = transform.Find("bg").gameObject;
Transform temp = transform.Find("bg/iconMask/icon");
if (temp == null)
{
isSpecial = false;
mIcon = transform.Find("bg/icon").gameObject.GetComponent();
}
else
{ mIcon = transform.Find("bg/iconMask/icon").gameObject.GetComponent();
isSpecial = true;
}
mLevelbg = transform.Find("bg/levelbg");
mBorder = transform.Find("bg/border").gameObject.GetComponent();
myusnsuIcon = transform.Find("bg/yuansuIcon").gameObject.GetComponent();
mzhiyeIcon = transform.Find("bg/zhiyeIcon").gameObject.GetComponent();
mLevelText = transform.Find("bg/value_levelText").gameObject.GetComponent();
mDengjieIcon = transform.Find("bg/dengjieIcon").gameObject.GetComponent();
mStar = transform.Find("bg/star").gameObject;
UI_HeroStarComponment starMono = mStar.GetComponent();
if (starMono == null)
{
AssemblyHelper.Instance.BindScript("UI_HeroStarComponment", mStar);
starMono = mStar.GetComponent();
}
mBorder.enabled = false;
mIcon.enabled = false;
mzhiyeIcon.enabled = false;
myusnsuIcon.enabled = false;
mDengjieIcon.enabled = false;
if (mLevelbg != null)
{
mLevelbg.gameObject.SetActive(false);
}
}
///
/// 设置数据
///
/// 数据
public void SetData(string data)
{
mHeroUIDData = data;
RefreshUI();
}
///
/// 刷新显示具体数据
///
private void RefreshUI()
{
mBorder.enabled = false;
mIcon.enabled = false;
mzhiyeIcon.enabled = false;
myusnsuIcon.enabled = false;
mDengjieIcon.enabled = false;
if (mLevelbg != null)
{
mLevelbg.gameObject.SetActive(false);
}
mLevelText.text = string.Empty;
UI_HeroStarComponment starMono = mStar.GetComponent();
starMono.StarNum = 0;
Player player = UserProxy.Instance.player;
GameHeroVo vo = UserProxy.Instance.player.collectHero.GetHeroGameInfoByHeroUId(mHeroUIDData);
if (vo == null)
{
if (isSpecial)
{
var cstVo = sm_heroextra_dengjie.GetMoById(0);
if (cstVo != null)
{
IconManager.Instance.SetIcon(mBorder.GetComponent(), IconPrefixConst.HeroDengjie_BorderIcon, cstVo.borderIcon);
mBorder.enabled = true;
}
}
return;
}
mzhiyeIcon.enabled = true;
myusnsuIcon.enabled = true;
mDengjieIcon.enabled = true;
mBorder.enabled = true;
mLevelText.text = "等级 " + vo.level.ToString();
if (mLevelbg != null)
{
mLevelbg.gameObject.SetActive(true);
}
IconManager.Instance.SetIcon(mzhiyeIcon.GetComponent(), IconPrefixConst.ZhiyeIcon, vo.mo.zhiyeIcon);
IconManager.Instance.SetIcon(myusnsuIcon.GetComponent(), IconPrefixConst.YuansuIcon, vo.mo.yuansuIcon);
IconManager.Instance.SetIcon(mIcon.GetComponent(), IconPrefixConst.HeroHeadIcon, vo.mo.headIcon, false, () =>
{
mIcon.enabled = true;
});
var costVo = sm_heroextra_dengjie.GetMoById(vo.strengthLevel);
if (costVo != null)
{
IconManager.Instance.SetIcon(mDengjieIcon.GetComponent(), IconPrefixConst.HeroDengjieIcon, costVo.icon, true);
if (isSpecial)
{
IconManager.Instance.SetIcon(mBorder.GetComponent(), IconPrefixConst.HeroDengjie_BorderIcon, costVo.borderIcon);
}
else
{
IconManager.Instance.SetIcon(mBorder.GetComponent(), IconPrefixConst.HeroDengjie_BorderIcon, costVo.heroBorder_normal);
}
}
starMono.StarNum = vo.curStar;
}
///
/// 注册事件
///
public override void distroyListeners()
{
base.distroyListeners();
if (mIsNeedReceiveUpdateData)
{
Player player = UserProxy.Instance.player;
player.collectHero.RefreshUIViewHeroDataChangeEvent += OnRefreshDisplayHeroUI;
}
}
///
/// 删除事件
///
public override void registListeners()
{
base.registListeners();
if (mIsNeedReceiveUpdateData)
{
Player player = UserProxy.Instance.player;
player.collectHero.RefreshUIViewHeroDataChangeEvent -= OnRefreshDisplayHeroUI;
}
}
///
/// 接收 英雄数值发生变化处理
///
/// 变化的英雄UID
/// 暂时无用
public void OnRefreshDisplayHeroUI(object sender, EventArgs e)
{
RefreshUI();
}
}