KLHookPanel.lua 9.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199
  1. ---@class KLHookPanel:UIKmlLuaPanelBase
  2. ---@field view KLHookPanelView
  3. local KLHookPanel = class(UIKmlLuaPanelBase)
  4. local this =KLHookPanel
  5. ---创建时调用一次
  6. function this:Init()
  7. self.hookSkillTemplateList = {}
  8. end
  9. ---创建或者刷新界面数据时调用
  10. function this:Refresh()
  11. local range = SL:GetMetaValue(EMetaVarGetKey.GET_KILL_RANGE)
  12. local hp = SL:GetMetaValue(EMetaVarGetKey.GET_EAT_HP_PILL_PERCENTAGE)
  13. local mp = SL:GetMetaValue(EMetaVarGetKey.GET_EAT_MP_PILL_PERCENTAGE)
  14. local isReAttack = SL:GetMetaValue(EMetaVarGetKey.GET_IS_COUNTERATTACK)
  15. local isComebackHookPoint = SL:GetMetaValue(EMetaVarGetKey.GET_IS_COMEBACK_HOOKPOINT)
  16. local comebackTime = SL:GetMetaValue(EMetaVarGetKey.GET_COMEBACK_HOOKPOINT_WAIT_TIEM)
  17. local career = SL:GetMetaValue(EMetaVarGetKey.JOB)
  18. local callSkillId = SL:GetMetaValue(EMetaVarGetKey.GET_CALL_SKILL)
  19. local plan = SL:GetMetaValue(EMetaVarGetKey.GET_HOOK_ATUO_RELEASE_SKILL_PLAN)
  20. GUI:SetIsOnWithoutNotify(self.view["ScopeOfMonster"..range],true)
  21. GUI:Slider_setPercent(self.view.hpSlider,math.ceil(hp*100))
  22. GUI:Slider_setPercent(self.view.mpSlider,math.ceil(mp*100))
  23. GUI:Text_setString(self.view.hpTxt,"生命低于"..math.ceil(hp*100) .."%使用")
  24. GUI:Text_setString(self.view.mpTxt,"魔法低于"..math.ceil(mp*100) .."%使用")
  25. GUI:SetIsOnWithoutNotify(self.view.combackAtk,isReAttack)
  26. GUI:SetIsOnWithoutNotify(self.view.combackHookPoint,isComebackHookPoint)
  27. GUI:Text_setString(self.view.comebackTime,tostring(comebackTime))
  28. GUI:setVisible(self.view.callSkill,career == ECareer.Dao)
  29. if career == ECareer.Dao and callSkillId~= 0 then
  30. local skillLevel = SL:GetMetaValue(EMetaVarGetKey.SKILL_LEVEL,callSkillId)
  31. ---@type cfg_skill_info_column
  32. local skillInfoTbl = SL:GetConfigMultiKeys('cfg_skill_info', callSkillId, skillLevel, 'skillID', 'skillLevel')
  33. GUI:Image_loadTexture(self.view.skillIcon,skillInfoTbl.icon,"Atlas/UIOutSkillIcon.spriteatlas")
  34. GUI:Text_setString(self.view.skillName,skillInfoTbl.name)
  35. GUI:setVisible(self.view.skillIcon,true)
  36. GUI:Text_setString(self.view.skillLevel,"LV " ..skillLevel)
  37. else
  38. GUI:setVisible(self.view.skillIcon,false)
  39. GUI:Text_setString(self.view.skillName,"")
  40. GUI:Text_setString(self.view.skillLevel,"")
  41. end
  42. GUI:SetIsOnWithoutNotify(self.view["planToggle"..plan],true)
  43. self:ShowHookSkill()
  44. end
  45. ---注册UI事件和服务器消息
  46. function this:RegistEvents()
  47. GUI:SetToggleOnValueChange(self.view.ScopeOfMonster1,self,self.SelectKillRangeOnToggleValueChange,1)
  48. GUI:SetToggleOnValueChange(self.view.ScopeOfMonster2,self,self.SelectKillRangeOnToggleValueChange,2)
  49. GUI:SetToggleOnValueChange(self.view.ScopeOfMonster3,self,self.SelectKillRangeOnToggleValueChange,3)
  50. GUI:SetToggleOnValueChange(self.view.ScopeOfMonster4,self,self.SelectKillRangeOnToggleValueChange,4)
  51. GUI:SetToggleOnValueChange(self.view.ScopeOfMonster5,self,self.SelectKillRangeOnToggleValueChange,5)
  52. GUI:SetToggleOnValueChange(self.view.ScopeOfMonster6,self,self.SelectKillRangeOnToggleValueChange,6)
  53. GUI:SetToggleOnValueChange(self.view.ScopeOfMonster7,self,self.SelectKillRangeOnToggleValueChange,7)
  54. GUI:SetToggleOnValueChange(self.view.ScopeOfMonster8,self,self.SelectKillRangeOnToggleValueChange,8)
  55. GUI:Slider_addOnEvent(self.view.hpSlider,self,self.HpSliderOnValueChange)
  56. GUI:Slider_addOnEvent(self.view.mpSlider,self,self.MpSliderOnValueChange)
  57. GUI:SetToggleOnValueChange(self.view.combackAtk,self,self.CombackAtkOnToggleValueChange)
  58. GUI:SetToggleOnValueChange(self.view.combackHookPoint,self,self.CombackHookPointOnToggleValueChange)
  59. GUI:Input_SetOnValueChange(self.view.comebackTime,self,self.ComebackTimeOnInputValueChange)
  60. GUI:AddOnClickEvent(self.view.CallSkillBtn,self,self.CallSkillOnClick)
  61. GUI:SetToggleOnValueChange(self.view.planToggle1,self,self.PlanToggleOnToggleValueChange,1)
  62. GUI:SetToggleOnValueChange(self.view.planToggle2,self,self.PlanToggleOnToggleValueChange,2)
  63. SL:RegisterLUAEvent(LUA_SELECT_CALL_SKILL,self.SelectCallSkillFunc,self)
  64. end
  65. function this:SelectKillRangeOnToggleValueChange(control,data,eventData)
  66. local range = data
  67. SL:SetMetaValue(EMetaVarSetKey.SET_KILL_RANGE,range)
  68. end
  69. function this:HpSliderOnValueChange(control,_,data)
  70. local value = math.ceil(data[1])/100
  71. SL:SetMetaValue(EMetaVarSetKey.SET_EAT_HP_PILL_PERCENTAGE,value)
  72. GUI:Text_setString(self.view.hpTxt,"生命低于".. math.ceil(value*100) .."%使用")
  73. end
  74. function this:MpSliderOnValueChange(control,_,data)
  75. local value = math.ceil(data[1])/100
  76. SL:SetMetaValue(EMetaVarSetKey.SET_EAT_MP_PILL_PERCENTAGE,value)
  77. GUI:Text_setString(self.view.mpTxt,"魔法低于".. math.ceil(value*100) .."%使用")
  78. end
  79. function this:CombackAtkOnToggleValueChange(control,_,data)
  80. local isToggle = data[1]
  81. SL:SetMetaValue(EMetaVarSetKey.SET_IS_COUNTERATTACK,isToggle)
  82. end
  83. function this:CombackHookPointOnToggleValueChange(control,_,data)
  84. local isToggle = data[1]
  85. SL:SetMetaValue(EMetaVarSetKey.SET_IS_COMEBACK_HOOKPOINT,isToggle)
  86. end
  87. function this:ComebackTimeOnInputValueChange(control,_,data)
  88. local value = data[1]
  89. SL:SetMetaValue(EMetaVarSetKey.SET_COMEBACK_HOOKPOINT_WAIT_TIEM,tonumber(value))
  90. end
  91. function this:CallSkillOnClick()
  92. GUI:UIPanel_Open("dev/ui/Setting/Panel/KLCallSkill/KLCallSkillPanel")
  93. end
  94. function this:PlanToggleOnToggleValueChange(control,data,eventData)
  95. SL:SetMetaValue(EMetaVarSetKey.SET_HOOK_ATUO_RELEASE_SKILL_PLAN,data)
  96. self:ShowHookSkill()
  97. end
  98. function this:SelectCallSkillFunc(_,skillId)
  99. if skillId ~= 0 then
  100. local skillLevel = SL:GetMetaValue(EMetaVarGetKey.SKILL_LEVEL,skillId)
  101. ---@type cfg_skill_info_column
  102. local skillInfoTbl = SL:GetConfigMultiKeys('cfg_skill_info', skillId, skillLevel, 'skillID', 'skillLevel')
  103. GUI:Image_loadTexture(self.view.skillIcon,skillInfoTbl.icon,"Atlas/UIOutSkillIcon.spriteatlas")
  104. GUI:Text_setString(self.view.skillName,skillInfoTbl.name)
  105. GUI:setVisible(self.view.skillIcon,true)
  106. GUI:Text_setString(self.view.skillLevel,"LV " ..skillLevel)
  107. else
  108. GUI:setVisible(self.view.skillIcon,false)
  109. GUI:Text_setString(self.view.skillLevel,"")
  110. GUI:Text_setString(self.view.skillName,"")
  111. end
  112. SL:SetMetaValue(EMetaVarSetKey.SET_CALL_SKILL,skillId)
  113. end
  114. function this:ShowHookSkill()
  115. GUI:setPositionY(self.view.ContainerContent,0)
  116. local hookSkills = SL:GetMetaValue(EMetaVarGetKey.GET_HOOK_ATUO_RELEASE_SKILL)
  117. local skills = SL:GetMetaValue(EMetaVarGetKey.GET_ME_ALL_SKILL)
  118. if skills then
  119. local tempSkills = {}
  120. ---@param v Skill
  121. for i, v in pairs(skills) do
  122. ---@type cfg_skill_column
  123. local skillTbl = SL:GetConfig('cfg_skill', v.skillId)
  124. local commonSkillId = SL:GetMetaValue(EMetaVarGetKey.SKILL_GET_COMMON_ID)
  125. if skillTbl and skillTbl.set ~= 1 and v.skillId ~= commonSkillId and skillTbl.group ~= ESkillGroup.call then
  126. local data = {skillId = v.skillId,isHookSkill = hookSkills[v.skillId]~=nil}
  127. table.insert(tempSkills,data)
  128. end
  129. end
  130. self.transferSkill = InfoManager.shapeShiftCardInfo.onHookTransferSkill
  131. for i, v in pairs(InfoManager.shapeShiftCardInfo.shiftSkill) do
  132. local data = { skillId = i, isHookSkill = self.transferSkill[i] or 1, isTransfer = true }
  133. table.insert(tempSkills, data)
  134. end
  135. local count = table.count(tempSkills)
  136. local n1 = count%3
  137. local n2 = math.floor(count/3)
  138. if n1 ~= 0 then
  139. n2 = n2 + 1
  140. end
  141. local career = SL:GetMetaValue(EMetaVarGetKey.JOB)
  142. local h = career == ECareer.Dao and (650 + n2*156) or (644 + (n2-1)*156)
  143. GUI:setContentSize(self.view.ContainerContent,374,h)
  144. GUI:setContentSize(self.view.HookSkillContainer,384,n2*156)
  145. for i, data in pairs(tempSkills) do
  146. ---@type KLHookSkillItem
  147. local hookSkillTemplate = self.hookSkillTemplateList[data.skillId]
  148. if not hookSkillTemplate then
  149. hookSkillTemplate = GUI:UIPanel_Open("dev/ui/Setting/Item/KLHookSkill/KLHookSkillItem",self.view.HookSkillContainer,self,data,true)
  150. else
  151. hookSkillTemplate.args = data
  152. hookSkillTemplate:Refresh()
  153. end
  154. self.hookSkillTemplateList[data.skillId] = hookSkillTemplate
  155. end
  156. end
  157. end
  158. function this:SetTransferSkillInfo(group, isRelease)
  159. if not self.transferSkill then
  160. self.transferSkill = {}
  161. end
  162. self.isChange = true
  163. self.transferSkill[group] = isRelease and 1 or 0
  164. end
  165. function this:Close()
  166. if self.isChange then
  167. local info = {}
  168. for i, v in pairs(self.transferSkill) do
  169. info[tostring(i)] = v
  170. end
  171. SL:SendLuaNetMsg(LuaMessageIdToSever.REQ_TRANSFER_CARD_HANG_UP_SETTING, info)
  172. end
  173. self.transferSkill = {}
  174. self.hookSkillTemplateList = {}
  175. GUI:UIPanel_Close("dev/ui/Setting/Panel/KLCallSkill/KLCallSkillPanel")
  176. end
  177. return this