KLUISkillItem.lua 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123
  1. ---@class KLUISkillItem:UIKmlLuaPanelBase
  2. ---@field view KLUISkillItemView
  3. ---@field skillId number @技能Id
  4. ---@field baseUI KLUISkillPageItem
  5. local KLUISkillItem = class(UIKmlLuaPanelBase)
  6. local this = KLUISkillItem
  7. ---创建时调用一次
  8. function this:Init()
  9. end
  10. ---创建或者刷新界面数据时调用
  11. function this:Refresh()
  12. end
  13. ---@param skillId number
  14. function this:UpdateUI(skillId, luaIndex)
  15. self.skillId = skillId
  16. self.luaIndex = luaIndex
  17. ---@type Skill
  18. local skill = SL:GetMetaValue(EMetaVarGetKey.SKILL_DATA, self.skillId)
  19. local skillLv = skill and skill.level or 1
  20. local skillType = E_SkillShowType.Normal
  21. ---变身技能走另一套逻辑
  22. local cacheSkill = InfoManager.shapeShiftCardInfo:GetTransferSkillInfoBySkillId(self.skillId)
  23. if cacheSkill then
  24. if cacheSkill.unLock then
  25. GUI:Text_setString(self.view.Level,"Lv." .. cacheSkill.level)
  26. GUI:SetActive(self.view.Lock,false)
  27. else
  28. GUI:Text_setString(self.view.Level,"")
  29. GUI:SetActive(self.view.Lock,true)
  30. end
  31. skillType = E_SkillShowType.Transfer
  32. else
  33. if skill and SL:GetMetaValue(EMetaVarGetKey.SKILL_CHECK_IS_UNLOCK, self.skillId) then
  34. GUI:Text_setString(self.view.Level,"Lv." .. skillLv)
  35. GUI:SetActive(self.view.Lock,false)
  36. else
  37. GUI:Text_setString(self.view.Level,"")
  38. GUI:SetActive(self.view.Lock,true)
  39. end
  40. end
  41. ---@type cfg_skill_info_column
  42. local tbl = SL:GetConfigMultiKeys('cfg_skill_info', self.skillId, skillLv, 'skillID', 'skillLevel')
  43. GUI:Text_setString(self.view.SkillName,tbl.name)
  44. local spriteName = string.isNullOrEmpty(tbl.icon) and "" or tbl.icon
  45. if cfg_equip_angelTalentLv_post.IsAngelTalentSkill(self.skillId) then
  46. GUI:SetActive(self.view.SpRed,false)
  47. else
  48. if skillType == E_SkillShowType.Normal then
  49. local ret = SL:GetMetaValue(EMetaVarGetKey.SKILL_CHECK_RED_DOT, self.skillId, skillLv)
  50. GUI:SetActive(self.view.SpRed,ret)
  51. elseif skillType == E_SkillShowType.Transfer then
  52. GUI:SetActive(self.view.SpRed, false)
  53. end
  54. end
  55. GUI:Image_loadTexture(self.view.SkillIcon,spriteName,"Atlas/UIOutSkillIcon.spriteatlas")
  56. if not self.baseUI.baseUI.curSelectIndex then
  57. self.baseUI.baseUI.curSelectIndex = 0
  58. if this.co_Select then
  59. SL:UnSchedule(this.co_Select)
  60. end
  61. this.co_Select = SL:ScheduleOnce(0.2, function()
  62. if not self.baseUI.baseUI.isOpenSetting then
  63. GUI:SetTogDefaultThis(self.view.skillTog)
  64. end
  65. end)
  66. end
  67. end
  68. ---注册UI事件和服务器消息
  69. function this:RegistEvents()
  70. GUI:SetToggleOnValueChange(self.view.skillTog, self, self.SkillTogOnChange)
  71. SL:RegisterLUAEvent(Event.SkillChange, self.ResSkillChangeMessage, self)
  72. end
  73. ---@param eventData SkillProtos.SkillChangeRes
  74. function this:ResSkillChangeMessage(_, eventData)
  75. if not eventData or not eventData.skillInfo then
  76. return
  77. end
  78. for _, skillInfo in pairs(eventData.skillInfo) do
  79. if skillInfo.skillId == self.skillId then
  80. self:UpdateUI(self.skillId, self.luaIndex)
  81. end
  82. end
  83. end
  84. function this:SkillTogOnChange(_, _, args)
  85. if args[1] then
  86. SL:onLUAEvent(LUA_EVENT_SELECT_SKILL_UI, self)
  87. end
  88. end
  89. function this:SetIsOnWithoutNotify(isOn)
  90. return GUI:SetIsOnWithoutNotify(self.view.skillTog, isOn)
  91. end
  92. function this:SetTogDefaultThis()
  93. return GUI:SetTogDefaultThis(self.view.skillTog)
  94. end
  95. function this:SetTogIsOn(bl)
  96. return GUI:Toggle_setIsOn(self.view.skillTog, bl)
  97. end
  98. function this:Close()
  99. self.skillId = nil
  100. if this.co_Select then
  101. SL:UnSchedule(this.co_Select)
  102. end
  103. end
  104. return this