KLDragonSoulComboPanel.lua 7.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209
  1. ---@class KLDragonSoulComboPanel:UIKmlLuaPanelBase
  2. ---@field view KLDragonSoulComboPanelView
  3. local KLDragonSoulComboPanel = class(UIKmlLuaPanelBase)
  4. local this =KLDragonSoulComboPanel
  5. function this:AsyncLoadUI()
  6. end
  7. ---创建时调用一次
  8. function this:Init()
  9. GUI:DataListInitData(self.view.datalist_cost, function()
  10. return #self.itemCostList
  11. end, function()
  12. end, function()
  13. end, function(realIndex)
  14. local item_cost = GUI:GetChildControl(self.view.datalist_cost,realIndex,'item_cost')
  15. local text_cost = GUI:GetChildControl(self.view.datalist_cost,realIndex,'text_cost')
  16. local text_name = GUI:GetChildControl(self.view.datalist_cost,realIndex,'text_name')
  17. local btn_add = GUI:GetChildControl(self.view.datalist_cost,realIndex,'btn_add')
  18. local info = self.itemCostList[realIndex + 1]
  19. GUI:Item_setItemId(item_cost, info.id)
  20. local count = SL:GetBagItemCount(info.id)
  21. if count < info.cost then
  22. GUI:Text_setString(text_cost, "<color=#FF2323>" .. count .. "</color>/" .. info.cost)
  23. self.canUpgrade = false
  24. else
  25. GUI:Text_setString(text_cost, "<color=#1ADD1F>" .. count .. "</color>/" .. info.cost)
  26. end
  27. ---@type cfg_item_column
  28. local item = SL:GetConfig("cfg_item", info.id)
  29. GUI:Text_setString(text_name, item.name)
  30. GUI:AddOnClickEvent(item_cost, self, self.ItemCostTipsClick, info.id)
  31. GUI:AddOnClickEvent(btn_add, self, self.ItemCostGetClick, info.id)
  32. end)
  33. end
  34. ---注册UI事件和服务器消息
  35. function this:RegistEvents()
  36. GUI:AddOnClickEvent(self.view.btn_close, self, self.CloseSelf)
  37. GUI:AddOnClickEvent(self.view.btn_upgrade, self, self.UpgradeSkill)
  38. GUI:AddOnClickEvent(self.view.btn_max,self,self.ShowMaxEffect)
  39. GUI:AddOnClickEvent(self.view.btn_back,self,self.ShowNowEffect)
  40. SL:RegisterLuaNetMsg(MessageDef.ResComboSkillInfoMessage, self.ResComboSkillInfoMessage, self)
  41. end
  42. ---界面显示时调用一次
  43. function this:Show()
  44. end
  45. ---创建或者刷新界面数据时调用
  46. function this:Refresh()
  47. SL.HideMainPanel()
  48. self.job = SL:GetMetaValue(EMetaVarGetKey.JOB)
  49. self.comboInfo = SL:GetMetaValue(EMetaVarGetKey.GET_COMBO_SKILL)
  50. self.comboTbl = {}
  51. ---@type cfg_skill_info_column[]
  52. local cfg_skill_info = SL:GetConfigTable("cfg_skill_info")
  53. local skill_str = SL:GetConfig("cfg_global", 1501).value
  54. local skillTbl = string.split(skill_str, '|') --1#1030001#1#0|2#1030002#1#0|3#1030003#1#0
  55. for i, v in pairs(skillTbl) do
  56. local tbl = string.split(v, '#')
  57. if tonumber(tbl[1]) == self.job then
  58. self.comboSkillCfgId = tonumber(tbl[2])
  59. break
  60. end
  61. end
  62. self.maxLevel = 0
  63. for _, v in pairs(cfg_skill_info) do
  64. if v.skillID == self.comboSkillCfgId then
  65. self.comboTbl[v.skillLevel] = v
  66. if v.skillLevel > self.maxLevel then
  67. self.maxLevel = v.skillLevel
  68. end
  69. end
  70. end
  71. self:RefreshUI()
  72. end
  73. function this:RefreshUI()
  74. ---刷新界面角色素模
  75. local modelTbl = SL:GetConfig("cfg_model_default", self.job)
  76. local role_param = { "body", "head", "armor", "hand", "pants", "boot" }
  77. local modelStr
  78. for _, v in pairs(role_param) do
  79. if modelStr then
  80. modelStr = modelStr .. "#" .. modelTbl[v]
  81. else
  82. modelStr = modelTbl[v]
  83. end
  84. end
  85. local info, info_next
  86. if next(self.comboInfo) then
  87. ---激活
  88. ---@type cfg_skill_info_column
  89. info = self.comboTbl[self.comboInfo.skillLv]
  90. ---@type cfg_skill_info_column
  91. info_next = self.comboTbl[self.comboInfo.skillLv + 1]
  92. else
  93. ---未激活
  94. info_next = self.comboTbl[1]
  95. end
  96. if not info_next then
  97. ---当前满级
  98. GUI:setVisible(self.view.panel_upgrade, false)
  99. GUI:setVisible(self.view.panel_max, true)
  100. GUI:Text_setString(self.view.text_max_detail, info.tips)
  101. GUI:SetPlayerRoleInfo(self.view.role_max, modelStr)
  102. GUI:Effect_setEffectId(self.view.role_effect_max, info.haloEffect)
  103. else
  104. if not info then
  105. ---当前未激活
  106. GUI:setVisible(self.view.img_left_active, false)
  107. GUI:setVisible(self.view.img_left_unActive, true)
  108. local text = SL:GetConfig("cfg_rule_text", 14).location
  109. GUI:Text_setString(self.view.text_left_detail, text)
  110. GUI:Button_setTitleText(self.view.btn_upgrade, "激活")
  111. else
  112. ---当前未满级
  113. GUI:setVisible(self.view.img_left_active, true)
  114. GUI:setVisible(self.view.img_left_unActive, false)
  115. GUI:Text_setString(self.view.text_left_lv, tostring(info.skillLevel))
  116. GUI:Text_setString(self.view.text_left_detail, info.tips)
  117. GUI:Button_setTitleText(self.view.btn_upgrade, "升级")
  118. end
  119. GUI:setVisible(self.view.panel_upgrade, true)
  120. GUI:setVisible(self.view.panel_max, false)
  121. GUI:Text_setString(self.view.text_right_lv, tostring(info_next.skillLevel))
  122. GUI:Text_setString(self.view.text_right_detail, info_next.tips)
  123. ---刷新消耗
  124. self.canUpgrade = true
  125. self.itemCostList = {}
  126. ---刷新升级材料
  127. for i, v in ipairs(info_next.skillLevelUpItemID) do
  128. self.itemCostList[#self.itemCostList + 1] = { ["id"] = v[1], ["cost"] = v[2] }
  129. end
  130. GUI:DataListUpdateData(self.view.datalist_cost)
  131. GUI:SetPlayerRoleInfo(self.view.role, modelStr)
  132. if info then
  133. GUI:Effect_setEffectId(self.view.role_effect, info.haloEffect)
  134. end
  135. GUI:setVisible(self.view.btn_max, true)
  136. GUI:setVisible(self.view.btn_back, false)
  137. end
  138. end
  139. function this:UpgradeSkill()
  140. if self.canUpgrade then
  141. if not self.delayUpgrade then
  142. SL:SendLuaNetMsg(LuaMessageIdToSever.REQ_COMBO_SKILL_UP)
  143. self.delayUpgrade = true
  144. SL:ScheduleOnce(1, function()
  145. self.delayUpgrade = false
  146. end)
  147. end
  148. else
  149. SL:TipMessage( SL:GetConfig('cfg_string', 463).text, 1, NoticeType.NoticeMid ) --道具不足,请补充道具!
  150. end
  151. end
  152. function this:ItemCostTipsClick(_, eventData)
  153. SL:OpenTips(nil, eventData)
  154. end
  155. function this:ItemCostGetClick(_, eventData)
  156. SL:CommonItemGetPath(nil, eventData, nil, nil, self)
  157. end
  158. function this:ShowMaxEffect()
  159. GUI:setVisible(self.view.btn_max, false)
  160. GUI:setVisible(self.view.btn_back, true)
  161. GUI:Effect_setEffectId(self.view.role_effect, self.comboTbl[self.maxLevel].haloEffect)
  162. end
  163. function this:ShowNowEffect()
  164. GUI:setVisible(self.view.btn_max, true)
  165. GUI:setVisible(self.view.btn_back, false)
  166. if self.comboInfo.skillLv then
  167. GUI:Effect_setEffectId(self.view.role_effect, self.comboTbl[self.comboInfo.skillLv].haloEffect)
  168. else
  169. GUI:Effect_setEffectId(self.view.role_effect, 0)
  170. end
  171. end
  172. ---连击技能升级返回
  173. function this:ResComboSkillInfoMessage(_, message)
  174. self.comboInfo = message
  175. self:RefreshUI()
  176. SL:SetMetaValue(EMetaVarSetKey.COMBOSKILL_CHANGE, self.comboInfo.skillCfgId, self.comboInfo.skillLv)
  177. GUI:SetActive(self.view.strength_ok, false)
  178. GUI:SetActive(self.view.strength_ok, true)
  179. end
  180. function this:CloseSelf()
  181. GUI:UIPanel_Close("dev/outui/DragonSoulCombo/Panel/KLDragonSoulCombo/KLDragonSoulComboPanel")
  182. --GUI:UIPanel_Open("dev/outui/DragonSoulCombo/Panel/KLDragonSoulCombo/KLDragonSoulComboPanel")
  183. end
  184. function this:Close()
  185. self.delayUpgrade = false
  186. SL.ShowMainPanel()
  187. end
  188. return this