ToolItemPrefab.cs 8.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275
  1. /****************************************************************************
  2. * 2024.7 LXD
  3. ****************************************************************************/
  4. using System.Collections;
  5. using System;
  6. using System.Collections.Generic;
  7. using UnityEngine;
  8. using UnityEngine.UI;
  9. using QFramework;
  10. using I2.Loc;
  11. using DG.Tweening;
  12. using UniRx.Triggers;
  13. using UnityEngine.EventSystems;
  14. namespace QFramework
  15. {
  16. public partial class ToolItemPrefab : UIElement
  17. {
  18. public GameObject m_NormalState;
  19. public GameObject m_HighterState;
  20. public GameObject m_SelectState;
  21. public GameObject m_PromptState;
  22. public ToolConfigInfo m_ToolConfigInfo;
  23. private BtnState m_CurrentBtnState;
  24. private ToolConfigProxy m_ToolConfigProxy;
  25. private void Start()
  26. {
  27. GetComponent<Button>().onClick.AddListener(OnToolButtonClick);
  28. }
  29. public void SetData(ToolConfigInfo toolConfigInfo)
  30. {
  31. m_ToolConfigInfo = toolConfigInfo;
  32. m_ToolConfigProxy = DAL.Instance.Get<ToolConfigProxy>();
  33. switch (m_ToolConfigProxy.m_CurrentToolLibraryType)
  34. {
  35. case ToolLibraryType.ToolRoom:
  36. if (m_ToolConfigProxy.GetToolConfigInfoFromCTRSTCIsById(int.Parse(toolConfigInfo.id)) != null) SetButtonState(BtnState.select);
  37. else SetButtonState(BtnState.normal);
  38. break;
  39. case ToolLibraryType.ToolKit:
  40. if (m_ToolConfigProxy.GetToolConfigInfoFromCTKSTCIsById(int.Parse(toolConfigInfo.id))!= null) SetButtonState(BtnState.select);
  41. else SetButtonState(BtnState.normal);
  42. break;
  43. default:
  44. break;
  45. }
  46. SetToolIcon();
  47. ToolName.text = toolConfigInfo.toolName;
  48. #region 多语言
  49. if (LocalizationConfig.localization && LocalizationManager.CurrentLanguage == "English")
  50. {
  51. ToolName.text = toolConfigInfo.en_toolName;
  52. }
  53. #endregion
  54. switch (m_ToolConfigProxy.m_CurrentToolLibraryType)
  55. {
  56. case ToolLibraryType.ToolRoom:
  57. //如果已经选择
  58. if (m_ToolConfigProxy.GetToolConfigInfoFromCTRSTCIsById(int.Parse(m_ToolConfigInfo.id)) != null)
  59. {
  60. SetButtonState(BtnState.select);
  61. }
  62. break;
  63. case ToolLibraryType.ToolKit:
  64. //如果已经选择
  65. if (m_ToolConfigProxy.GetToolConfigInfoFromCTKSTCIsById(int.Parse(m_ToolConfigInfo.id)) != null)
  66. {
  67. SetButtonState(BtnState.select);
  68. }
  69. break;
  70. default:
  71. break;
  72. }
  73. //如果打开提示
  74. if (OperateSetting.Instance.ToolPackUILogic.GetHint())
  75. {
  76. if (GetIsNeedHighter() && m_CurrentBtnState != BtnState.select)
  77. {
  78. ShowHighter(true);
  79. }
  80. }
  81. }
  82. /// <summary>
  83. /// 工具点击
  84. /// </summary>
  85. public void OnToolButtonClick()
  86. {
  87. ToolLibraryForm toolLibraryForm = UIKit.GetPanel<ToolLibraryForm>();
  88. toolLibraryForm?.ToolMessageElement.ShowToolInfo(m_ToolConfigInfo);
  89. switch (m_ToolConfigProxy.m_CurrentToolLibraryType)
  90. {
  91. case ToolLibraryType.ToolRoom:
  92. if (m_ToolConfigProxy.GetToolConfigInfoFromCTRSTCIsById(int.Parse(m_ToolConfigInfo.id)) != null)
  93. {
  94. if (GetIsNeedHighter())
  95. {
  96. ShowHighter(true);
  97. }
  98. m_ToolConfigProxy.RemoveToolConfigInfoFromCTRSTCIsById(int.Parse(m_ToolConfigInfo.id));
  99. SetButtonState(BtnState.normal);
  100. }
  101. else
  102. {
  103. ToolConfigInfo tmpToolConfigInfo = m_ToolConfigProxy.GetTooConfigInfoById(int.Parse(m_ToolConfigInfo.id));
  104. m_ToolConfigProxy.AddToolConfigInfoToCTRSTCIs(tmpToolConfigInfo);
  105. SetButtonState(BtnState.select);
  106. }
  107. break;
  108. case ToolLibraryType.ToolKit:
  109. if (m_ToolConfigProxy.GetToolConfigInfoFromCTKSTCIsById(int.Parse(m_ToolConfigInfo.id)) != null)
  110. {
  111. m_ToolConfigProxy.RemoveToolConfigInfoFromCTKSTCIsById(int.Parse(m_ToolConfigInfo.id));
  112. SetButtonState(BtnState.normal);
  113. }
  114. else
  115. {
  116. ToolConfigInfo tmpToolConfigInfo = m_ToolConfigProxy.GetTooConfigInfoById(int.Parse(m_ToolConfigInfo.id));
  117. m_ToolConfigProxy.AddToolConfigInfoToCTKSTCIs(tmpToolConfigInfo);
  118. SetButtonState(BtnState.select);
  119. }
  120. break;
  121. default:
  122. break;
  123. }
  124. //if (m_ToolConfigProxy.GetToolConfigInfoFromCTKSTCIsById(int.Parse(m_ToolConfigInfo.id)) != null)
  125. //{
  126. // if (OperateSetting.Instance.ToolPackUILogic.GetHint())
  127. // {
  128. // if (GetIsNeedHighter())
  129. // {
  130. // ShowHighter(true);
  131. // }
  132. // }
  133. //}
  134. //else
  135. //{
  136. // m_ToolConfigProxy.AddToolConfigInfoToCTKSTCIs(m_ToolConfigProxy.GetToolConfigInfoFromCTKSTCIsById(int.Parse(m_ToolConfigInfo.id)));
  137. // if (OperateSetting.Instance.ToolPackUILogic.GetHint())
  138. // {
  139. // ShowHighter(false);
  140. // }
  141. // SetButtonState(BtnState.select);
  142. //}
  143. }
  144. public void SetShowToolInfo()
  145. {
  146. ToolLibraryForm toolLibraryForm = UIKit.GetPanel<ToolLibraryForm>();
  147. toolLibraryForm?.ToolMessageElement.ShowToolInfo(m_ToolConfigInfo);
  148. }
  149. /// <summary>
  150. /// 设置工具Icon
  151. /// </summary>
  152. private void SetToolIcon()
  153. {
  154. ToolIcon.sprite = m_ToolConfigProxy.GetSpriteByToolName(m_ToolConfigInfo.toolName);
  155. }
  156. public void OnPointEnter()
  157. {
  158. if (SelectState.gameObject.activeSelf) return;
  159. SetButtonState(BtnState.highter);
  160. }
  161. public void OnPointExit()
  162. {
  163. if (SelectState.gameObject.activeSelf) return;
  164. SetButtonState(BtnState.normal);
  165. }
  166. public void SetButtonState(BtnState btnState)
  167. {
  168. switch (btnState)
  169. {
  170. case BtnState.normal:
  171. NormalState.gameObject.SetActive(true);
  172. SelectState.gameObject.SetActive(false);
  173. HighterState.gameObject.SetActive(false);
  174. break;
  175. case BtnState.highter:
  176. NormalState.gameObject.SetActive(false);
  177. SelectState.gameObject.SetActive(false);
  178. HighterState.gameObject.SetActive(true);
  179. break;
  180. case BtnState.select:
  181. NormalState.gameObject.SetActive(false);
  182. SelectState.gameObject.SetActive(true);
  183. HighterState.gameObject.SetActive(false);
  184. break;
  185. default:
  186. break;
  187. }
  188. m_CurrentBtnState = btnState;
  189. }
  190. public void ShowHighter(bool highter, Action callBack = null)
  191. {
  192. if (highter)
  193. {
  194. PromptIcon.gameObject.SetActive(true);
  195. PromptIcon.rectTransform.DOSizeDelta(new Vector2(201, 220), 1).SetLoops(-1, LoopType.Yoyo);
  196. }
  197. else
  198. {
  199. PromptIcon.gameObject.SetActive(false);
  200. PromptIcon.rectTransform.sizeDelta = new Vector2(193, 213);
  201. PromptIcon.rectTransform.DOKill();
  202. }
  203. }
  204. private bool GetIsNeedHighter()
  205. {
  206. ToolLibraryForm tmpToolLibraryForm = UIKit.GetPanel<ToolLibraryForm>();
  207. return tmpToolLibraryForm.ToolLibrarySelectElement.ToolItemIsNeedShowHighter(m_ToolConfigInfo.id);
  208. }
  209. IEnumerator IEShowHighter(Action callBack = null)
  210. {
  211. while (true)
  212. {
  213. yield return new WaitForSeconds(0.5f);
  214. SetButtonState(BtnState.highter);
  215. yield return new WaitForSeconds(0.5f);
  216. SetButtonState(BtnState.normal);
  217. callBack?.Invoke();
  218. }
  219. }
  220. }
  221. }