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