UI_HeroIconCardElement.cs 6.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242
  1. using UnityEngine;
  2. using System.Collections;
  3. using UnityEngine.UI;
  4. using System;
  5. /// <summary>
  6. /// 英雄小头像格子
  7. /// 角色的个人账号的 英雄头像
  8. /// 不适用于显示 自己账号之外的其他玩家的数据
  9. /// </summary>
  10. public class UI_HeroIconCardElement : GameBehavior
  11. {
  12. /// <summary>
  13. /// 数据
  14. /// </summary>
  15. public string mHeroUIDData = null;
  16. /// <summary>
  17. /// 背景,点击选中
  18. /// </summary>
  19. private GameObject mBG = null;
  20. /// <summary>
  21. /// 英雄小头像图标
  22. /// </summary>
  23. private Image mIcon = null;
  24. /// <summary>
  25. /// 英雄头像边框
  26. /// </summary>
  27. private Image mBorder = null;
  28. /// <summary>
  29. /// 元素图标
  30. /// </summary>
  31. private Image myusnsuIcon;
  32. /// <summary>
  33. /// 职业类型图标
  34. /// </summary>
  35. private Image mzhiyeIcon;
  36. /// <summary>
  37. /// 星级
  38. /// </summary>
  39. private GameObject mStar;
  40. /// <summary>
  41. /// 等阶
  42. /// </summary>
  43. private Image mDengjieIcon;
  44. /// <summary>
  45. /// 好感度
  46. /// </summary>
  47. private GameObject mFavorIcon;
  48. /// <summary>
  49. /// 等级
  50. /// </summary>
  51. private Text mLevelText = null;
  52. /// <summary>
  53. /// 等级背景
  54. /// </summary>
  55. private Transform mLevelbg;
  56. /// <summary>
  57. /// 是否需要关注同步更新英雄数据
  58. /// </summary>
  59. private bool mIsNeedReceiveUpdateData;
  60. private bool isSpecial = false;
  61. /// <summary>
  62. /// 初始化
  63. /// </summary>
  64. /// <param name="isNeedReceiveUpdateData">是否需要同步数据</param>
  65. public void Init(bool isNeedReceiveUpdateData = false)
  66. {
  67. mIsNeedReceiveUpdateData = isNeedReceiveUpdateData;
  68. mBG = transform.Find("bg").gameObject;
  69. Transform temp = transform.Find("bg/iconMask/icon");
  70. if (temp == null)
  71. {
  72. isSpecial = false;
  73. mIcon = transform.Find("bg/icon").gameObject.GetComponent<Image>();
  74. }
  75. else
  76. { mIcon = transform.Find("bg/iconMask/icon").gameObject.GetComponent<Image>();
  77. isSpecial = true;
  78. }
  79. mLevelbg = transform.Find("bg/levelbg");
  80. mBorder = transform.Find("bg/border").gameObject.GetComponent<Image>();
  81. myusnsuIcon = transform.Find("bg/yuansuIcon").gameObject.GetComponent<Image>();
  82. mzhiyeIcon = transform.Find("bg/zhiyeIcon").gameObject.GetComponent<Image>();
  83. mLevelText = transform.Find("bg/value_levelText").gameObject.GetComponent<Text>();
  84. mDengjieIcon = transform.Find("bg/dengjieIcon").gameObject.GetComponent<Image>();
  85. mStar = transform.Find("bg/star").gameObject;
  86. UI_HeroStarComponment starMono = mStar.GetComponent<UI_HeroStarComponment>();
  87. if (starMono == null)
  88. {
  89. AssemblyHelper.Instance.BindScript("UI_HeroStarComponment", mStar);
  90. starMono = mStar.GetComponent<UI_HeroStarComponment>();
  91. }
  92. mBorder.enabled = false;
  93. mIcon.enabled = false;
  94. mzhiyeIcon.enabled = false;
  95. myusnsuIcon.enabled = false;
  96. mDengjieIcon.enabled = false;
  97. if (mLevelbg != null)
  98. {
  99. mLevelbg.gameObject.SetActive(false);
  100. }
  101. }
  102. /// <summary>
  103. /// 设置数据
  104. /// </summary>
  105. /// <param name="data"> 数据 </param>
  106. public void SetData(string data)
  107. {
  108. mHeroUIDData = data;
  109. RefreshUI();
  110. }
  111. /// <summary>
  112. /// 刷新显示具体数据
  113. /// </summary>
  114. private void RefreshUI()
  115. {
  116. mBorder.enabled = false;
  117. mIcon.enabled = false;
  118. mzhiyeIcon.enabled = false;
  119. myusnsuIcon.enabled = false;
  120. mDengjieIcon.enabled = false;
  121. if (mLevelbg != null)
  122. {
  123. mLevelbg.gameObject.SetActive(false);
  124. }
  125. mLevelText.text = string.Empty;
  126. UI_HeroStarComponment starMono = mStar.GetComponent<UI_HeroStarComponment>();
  127. starMono.StarNum = 0;
  128. Player player = UserProxy.Instance.player;
  129. GameHeroVo vo = UserProxy.Instance.player.collectHero.GetHeroGameInfoByHeroUId(mHeroUIDData);
  130. if (vo == null)
  131. {
  132. if (isSpecial)
  133. {
  134. var cstVo = sm_heroextra_dengjie.GetMoById(0);
  135. if (cstVo != null)
  136. {
  137. IconManager.Instance.SetIcon(mBorder.GetComponent<Image>(), IconPrefixConst.HeroDengjie_BorderIcon, cstVo.borderIcon);
  138. mBorder.enabled = true;
  139. }
  140. }
  141. return;
  142. }
  143. mzhiyeIcon.enabled = true;
  144. myusnsuIcon.enabled = true;
  145. mDengjieIcon.enabled = true;
  146. mBorder.enabled = true;
  147. mLevelText.text = "等级 " + vo.level.ToString();
  148. if (mLevelbg != null)
  149. {
  150. mLevelbg.gameObject.SetActive(true);
  151. }
  152. IconManager.Instance.SetIcon(mzhiyeIcon.GetComponent<Image>(), IconPrefixConst.ZhiyeIcon, vo.mo.zhiyeIcon);
  153. IconManager.Instance.SetIcon(myusnsuIcon.GetComponent<Image>(), IconPrefixConst.YuansuIcon, vo.mo.yuansuIcon);
  154. IconManager.Instance.SetIcon(mIcon.GetComponent<Image>(), IconPrefixConst.HeroHeadIcon, vo.mo.headIcon, false, () =>
  155. {
  156. mIcon.enabled = true;
  157. });
  158. var costVo = sm_heroextra_dengjie.GetMoById(vo.strengthLevel);
  159. if (costVo != null)
  160. {
  161. IconManager.Instance.SetIcon(mDengjieIcon.GetComponent<Image>(), IconPrefixConst.HeroDengjieIcon, costVo.icon, true);
  162. if (isSpecial)
  163. {
  164. IconManager.Instance.SetIcon(mBorder.GetComponent<Image>(), IconPrefixConst.HeroDengjie_BorderIcon, costVo.borderIcon);
  165. }
  166. else
  167. {
  168. IconManager.Instance.SetIcon(mBorder.GetComponent<Image>(), IconPrefixConst.HeroDengjie_BorderIcon, costVo.heroBorder_normal);
  169. }
  170. }
  171. starMono.StarNum = vo.curStar;
  172. }
  173. /// <summary>
  174. /// 注册事件
  175. /// </summary>
  176. public override void distroyListeners()
  177. {
  178. base.distroyListeners();
  179. if (mIsNeedReceiveUpdateData)
  180. {
  181. Player player = UserProxy.Instance.player;
  182. player.collectHero.RefreshUIViewHeroDataChangeEvent += OnRefreshDisplayHeroUI;
  183. }
  184. }
  185. /// <summary>
  186. /// 删除事件
  187. /// </summary>
  188. public override void registListeners()
  189. {
  190. base.registListeners();
  191. if (mIsNeedReceiveUpdateData)
  192. {
  193. Player player = UserProxy.Instance.player;
  194. player.collectHero.RefreshUIViewHeroDataChangeEvent -= OnRefreshDisplayHeroUI;
  195. }
  196. }
  197. /// <summary>
  198. /// 接收 英雄数值发生变化处理
  199. /// </summary>
  200. /// <param name="sender">变化的英雄UID</param>
  201. /// <param name="e">暂时无用</param>
  202. public void OnRefreshDisplayHeroUI(object sender, EventArgs e)
  203. {
  204. RefreshUI();
  205. }
  206. }