KLBraveTrialsPanel.lua 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279
  1. ---@class KLBraveTrialsPanel:UIKmlLuaPanelBase
  2. ---@field view KLBraveTrialsPanelView
  3. local KLBraveTrialsPanel = class(UIKmlLuaPanelBase)
  4. local this =KLBraveTrialsPanel
  5. ---创建时调用一次
  6. function this:Init()
  7. self.braveType = 12001
  8. ---@type cfg_global_column
  9. local global = SL:GetConfig("cfg_repGlobal", 12001001)
  10. if global then
  11. local trialsInfo = global.value
  12. local trialsTbl = string.split(trialsInfo, '#')
  13. self.firstLevel = tonumber(trialsTbl[1])
  14. self.finalLevel = tonumber(trialsTbl[2])
  15. self.totalLevel = self.finalLevel - self.firstLevel + 1
  16. end
  17. GUI:OSAScrollView_Initialized(self.view.osascroll_bravetrials,self.ItemGetFun,self.ItemUpdateFun,self)
  18. GUI:OSAScrollView_SetItemSizeGetFun(self.view.osascroll_bravetrials,self.ItemSizeGetFun,self)
  19. GUI:DataListInitData( self.view.list_pass_reward,function()
  20. return self:ListItemCountFunc2()
  21. end,function(realIndex)
  22. return self:ListItemGetFunc2(realIndex)
  23. end,function(realIndex, kmlcontrol)
  24. return self:ListItemInitFunc2(realIndex, kmlcontrol)
  25. end, function(realIndex, kmlcontrol)
  26. return self:ListItemUpdateFunc2(realIndex, kmlcontrol)
  27. end)
  28. end
  29. function this:ItemGetFun()
  30. local item = GUI:UIPanel_Open("dev/outui/BraveTrials/Item/KLBraveTrials/KLBraveTrialsItem", self.view.list_brave_trials, self, { firstLevel = self.firstLevel, finalLevel = self.finalLevel }, true)
  31. return item
  32. end
  33. ---@param item KLBraveTrialsItem
  34. function this:ItemUpdateFun(item, index)
  35. ---@type cfg_rep_column
  36. local data = self.braveTrialsShowTbl[index + 1]
  37. if data.id == self.player_challenge_select then
  38. item:RefreshUI(data, true)
  39. self.select_item = item
  40. else
  41. item:RefreshUI(data)
  42. end
  43. end
  44. function this:ItemSizeGetFun(index)
  45. if index == 0 then
  46. return 443
  47. elseif index == self.finalLevel - self.firstLevel then
  48. return 280
  49. else
  50. return 125
  51. end
  52. end
  53. function this:ListItemCountFunc2()
  54. return #self.passReward
  55. end
  56. function this:ListItemGetFunc2(realIndex)
  57. end
  58. function this:ListItemInitFunc2(realIndex, kmlcontrol)
  59. end
  60. function this:ListItemUpdateFunc2(realIndex, kmlcontrol)
  61. local reward = self.passReward[realIndex + 1]
  62. local pass_reward = GUI:GetChildControl(self.view.list_pass_reward,realIndex,'pass_reward')
  63. local img_pass_reward_click = GUI:GetChildControl(self.view.list_pass_reward,realIndex,'img_pass_reward_click')
  64. GUI:Item_setItemId(pass_reward, reward[1])
  65. GUI:Item_UpdataData(pass_reward, { itemcount = reward[2] })
  66. GUI:AddOnClickEvent(img_pass_reward_click, self, self.ShowItemTips, { id = reward[1] })
  67. end
  68. function this:ShowItemTips(_, eventData)
  69. SL:OpenTips(nil, eventData.id)
  70. end
  71. ---注册UI事件和服务器消息
  72. function this:RegistEvents()
  73. GUI:AddOnClickEvent(self.view.btn_start_challenge, self, self.StartChallenge)
  74. GUI:AddOnClickEvent(self.view.btn_close, self, self.CloseSelf)
  75. GUI:AddOnClickEvent(self.view.img_reward_click, self, self.ReceiveFinalReward)
  76. SL:RegisterLuaNetMsg(LuaMessageIdToClient.BRAVE_TEST_PANEL_INFO, self.BRAVE_TEST_PANEL_INFO, self)
  77. SL:RegisterLuaNetMsg(LuaMessageIdToClient.RES_GET_ACTIVITY_COUNT, self.RES_GET_ACTIVITY_COUNT, self)
  78. SL:RegisterLuaNetMsg(LuaMessageIdToClient.BRAVE_TEST_STAGE_REWARD, self.BRAVE_TEST_STAGE_REWARD, self)
  79. end
  80. ---创建或者刷新界面数据时调用
  81. function this:Refresh()
  82. SL:HideMainPanel()
  83. ---@type cfg_rep_column[]
  84. local tbl = SL:GetConfigTable("cfg_rep")
  85. ---@type cfg_rep_column[]
  86. self.braveTrialsTbl = {}
  87. self.braveTrialsShowTbl = {}
  88. for i, v in ipairs(tbl) do
  89. if v.type == self.braveType then
  90. self.braveTrialsTbl[#self.braveTrialsTbl + 1] = v
  91. end
  92. end
  93. table.sort(self.braveTrialsTbl, function(a, b)
  94. return a.id > b.id
  95. end)
  96. self.select_control = nil
  97. SL:SendLuaNetMsg(LuaMessageIdToSever.BRAVE_TEST_PANEL_INFO)
  98. SL:SendLuaNetMsg(LuaMessageIdToSever.REQ_GET_ACTIVITY_COUNT, self.braveType)
  99. end
  100. function this:RefreshLevelMainInfo(levelId, item)
  101. ---点击正好点到复用的item时,不隐藏点击背景
  102. if self.select_item and self.select_item ~= item then
  103. self.select_item:HideChoseBG()
  104. end
  105. self.select_item = item
  106. ---@type cfg_rep_column
  107. local levelInfo = SL:GetConfig("cfg_rep", levelId)
  108. self.player_challenge_select = levelInfo.id
  109. ---@type cfg_monster_column
  110. local monster = SL:GetConfig("cfg_monster", levelInfo.monsterUI)
  111. ---@type cfg_model_monster_column
  112. local monster_model = SL:GetConfig("cfg_model_monster", monster.appr)
  113. GUI:Model_setSrc(self.view.model_show_monster, monster_model.path)
  114. self.passReward = levelInfo.reward
  115. GUI:DataListUpdateData(self.view.list_pass_reward)
  116. GUI:Text_setString(self.view.text_current_level, levelInfo.name[1])
  117. GUI:SetActive(self.view.btn_start_challenge, true)
  118. local open_server_day = 0
  119. if SL:GetEnterRoleRes() and SL:GetEnterRoleRes().openServerTime then
  120. local defTime = os.time() - SL:GetEnterRoleRes().openServerTime / 1000
  121. if defTime > 0 then
  122. open_server_day = math.ceil(defTime / 86400)
  123. end
  124. end
  125. local player_level = SL:GetMetaValue("LEVEL")
  126. if open_server_day >= levelInfo.startDay then
  127. if player_level >= levelInfo.level[1] and player_level <= levelInfo.level[2] then
  128. GUI:Text_setString(self.view.text_challenge_tips, " ")
  129. GUI:Button_setGrey(self.view.btn_start_challenge, false)
  130. GUI:Button_setBright(self.view.btn_start_challenge, true)
  131. else
  132. GUI:Text_setString(self.view.text_challenge_tips, "开启等级:" .. levelInfo.level[1])
  133. GUI:Button_setGrey(self.view.btn_start_challenge, true)
  134. GUI:Button_setBright(self.view.btn_start_challenge, false)
  135. end
  136. else
  137. GUI:Text_setString(self.view.text_challenge_tips, "开服第" .. levelInfo.startDay .. "天开启")
  138. GUI:Button_setGrey(self.view.btn_start_challenge, true)
  139. GUI:Button_setBright(self.view.btn_start_challenge, false)
  140. end
  141. if self.player_challenge_level ~= levelInfo.id or self.passLevel then
  142. GUI:SetActive(self.view.btn_start_challenge, false)
  143. end
  144. self:RefreshChallengeTime()
  145. end
  146. function this:RefreshChallengeTime()
  147. if self.player_challenge_time then
  148. if self.player_challenge_time > 0 then
  149. GUI:Text_setString(self.view.text_pass_times, "剩余通关次数:<color=#1ADD1F>" .. self.player_challenge_time .. "</color>")
  150. else
  151. GUI:Text_setString(self.view.text_pass_times, "剩余通关次数:<color=#FF2323>" .. self.player_challenge_time .. "</color>")
  152. GUI:Button_setGrey(self.view.btn_start_challenge, true)
  153. GUI:Button_setBright(self.view.btn_start_challenge, false)
  154. end
  155. end
  156. end
  157. function this:RefreshFinalReward()
  158. ---@type cfg_global_column
  159. local global = SL:GetConfig("cfg_repGlobal", 12001002)
  160. if global then
  161. local src = string.split(global.value, '#')
  162. self.finalReward = tonumber(src[2])
  163. self.stageLevel = src[1]
  164. GUI:Item_setItemId(self.view.item_stage_reward, self.finalReward)
  165. ---@type cfg_global_column
  166. local img = SL:GetConfig("cfg_repGlobal", 12001003)
  167. if img then
  168. GUI:Image_loadTexture(self.view.img_stage_reward, string.split(img.value, '#')[2], "Atlas/KLBraveTrialsUI.spriteatlas")
  169. end
  170. end
  171. end
  172. function this:StartChallenge()
  173. local map_id = SL:GetMetaValue(EMetaVarGetKey.MAP_ID)
  174. local mapTab = SL:GetConfig("cfg_map_info",map_id)
  175. if mapTab.nopositionmove and mapTab.nopositionmove == 1 then
  176. SL:MessageTip({ id = 116 })--"副本中无法传送",
  177. return
  178. end
  179. SL:SendLuaNetMsg(LuaMessageIdToSever.REQ_ENTER_DUPLICATE, self.player_challenge_level)
  180. self:CloseSelf()
  181. end
  182. function this:BRAVE_TEST_PANEL_INFO(_, message)
  183. local info
  184. if SL:HasConfigTwoKeys("cfg_rep", self.braveType, message.level, "type", "repLevel") then
  185. ---@type cfg_rep_column
  186. info = SL:GetConfigTwoKeys("cfg_rep", self.braveType, message.level, "type", "repLevel")
  187. end
  188. if not info then
  189. info = SL:GetConfig("cfg_rep", self.finalLevel)
  190. self.passLevel = true
  191. else
  192. self.passLevel = false
  193. end
  194. self.getStageReward = message.stageReward
  195. if self.getStageReward then
  196. GUI:setVisible(self.view.text_receive_reward, true)
  197. GUI:Image_setAlpha(self.view.img_reward_click, 1)
  198. else
  199. GUI:setVisible(self.view.text_receive_reward, false)
  200. GUI:Image_setAlpha(self.view.img_reward_click, 0)
  201. end
  202. self.player_challenge_level = info.id
  203. self:RefreshLevelMainInfo(self.player_challenge_level)
  204. self:RefreshFinalReward()
  205. self.braveTrialsShowTbl = {}
  206. for i, v in ipairs(self.braveTrialsTbl) do
  207. if v.id >= self.player_challenge_level then
  208. self.braveTrialsShowTbl[#self.braveTrialsShowTbl + 1] = v
  209. end
  210. end
  211. GUI:OSAScrollView_RefreshList(self.view.osascroll_bravetrials, #self.braveTrialsShowTbl)
  212. local index = self.totalLevel - message.level
  213. if index < 0 then
  214. index = 0
  215. end
  216. GUI:OSAScrollView_ScrollTo(self.view.osascroll_bravetrials, #self.braveTrialsShowTbl - 1)
  217. end
  218. function this:RES_GET_ACTIVITY_COUNT(_, message)
  219. if message["1"] == self.braveType then
  220. self.player_challenge_time = message["2"]
  221. self:RefreshChallengeTime()
  222. end
  223. end
  224. function this:ReceiveFinalReward()
  225. if self.passLevel and not self.getStageReward then
  226. SL:SendLuaNetMsg(LuaMessageIdToSever.BRAVE_TEST_STAGE_REWARD)
  227. elseif not self.passLevel then
  228. SL:OpenTips(nil, self.finalReward)
  229. end
  230. end
  231. function this:BRAVE_TEST_STAGE_REWARD(_,message)
  232. local reward = {}
  233. for i, v in pairs(message) do
  234. reward[tonumber(i)] = tonumber(v)
  235. end
  236. SL:OpenRewardTips(reward,0)
  237. GUI:setVisible(self.view.text_receive_reward, true)
  238. GUI:Image_setAlpha(self.view.img_reward_click, 1)
  239. end
  240. function this:CloseSelf()
  241. GUI:UIPanel_Close("dev/outui/BraveTrials/Panel/KLBraveTrials/KLBraveTrialsPanel")
  242. end
  243. function this:Close()
  244. self.trialsItemList = {}
  245. SL.ShowMainPanel()
  246. end
  247. return this