KLGoldChallengeItem.lua 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276
  1. ---@class KLGoldChallengeItem:UIKmlLuaPanelBase
  2. ---@field view KLGoldChallengeItemView
  3. ---@field data {k:number,v:number}
  4. ---@field monsterCfg cfg_monster_column
  5. ---@field taskCfg cfg_task_gold_column
  6. ---@field glodBossRewarditem KLGoldChallengeRewardItem[]
  7. local KLGoldChallengeItem = class(UIKmlLuaPanelBase)
  8. local this = KLGoldChallengeItem
  9. ---创建时调用一次
  10. function this:Init()
  11. self.starList = {}
  12. self.itemList = {}
  13. self.itemRewards = {}
  14. GUI:DataListInitData(self.view.itemRoot, function()
  15. return self:GoldBossDataListItemCountFunc()
  16. end, function(realIndex)
  17. return self:GoldBossDataListItemGetFunc(realIndex)
  18. end, function(realIndex, kmlcontrol)
  19. return self:GoldBossDataListItemInitFunc(realIndex, kmlcontrol)
  20. end, function(realIndex, kmlcontrol)
  21. return self:GoldBossDataListItemUpdateFunc(realIndex, kmlcontrol)
  22. end)
  23. self.glodBossRewarditem = {}
  24. end
  25. function this:InitData(index, data)
  26. self.index = index
  27. self.data = data
  28. end
  29. ---创建或者刷新界面数据时调用
  30. function this:Refresh()
  31. end
  32. function this:RefreshUI()
  33. if self.timer then
  34. ---Timer.Stop(self.timer)
  35. SL:UnSchedule(self.timer)
  36. self.timer = nil
  37. end
  38. GUI:SetImageAlpha(self.view.btnEffect, 1, 1, 1, 1)
  39. if self.data then
  40. self.taskCfg = SL:GetConfig("cfg_task_gold", tonumber(self.data.k))
  41. if self.data.v == 1 then
  42. self.itemRewards = self.taskCfg.rewardItem1
  43. elseif self.data.v == 2 then
  44. self.itemRewards = self.taskCfg.rewardItem2
  45. elseif self.data.v == 3 then
  46. self.itemRewards = self.taskCfg.rewardItem3
  47. end
  48. self.monsterCfg = SL:GetConfig("cfg_monster", self.taskCfg.monsterId)
  49. GUI:Text_setString(self.view.textName, self.monsterCfg.name .. string.format("<size=16> %s级</size>", self.monsterCfg.level))
  50. GUI:Text_setString(self.view.textMap, "所在地图:" .. self.taskCfg.mapName)
  51. local str = ""
  52. str = string.format("<color=%s>%s/%s</color>", EColor[EGradColor.red], 0, self.taskCfg.taskGoalNum[self.data.v])
  53. GUI:Text_setString(self.view.textTask, string.format("任务数量:%s", str))
  54. GUI:setPositionZ(self.view.textRoot, -300)
  55. GUI:setPositionZ(self.view.starGrid, -300)
  56. GUI:Button_setGrey(self.view.btnGetTask, false)
  57. if InfoManager.goldChallengeTaskInfo.taskInfo.nowtask then
  58. ---当前任务
  59. if InfoManager.goldChallengeTaskInfo.taskInfo.nowtask.taskid == self.data.k then
  60. ---@type GoldChallengeTaskEnum
  61. local status = InfoManager.goldChallengeTaskInfo.taskInfo.nowtask.status
  62. if status == GoldChallengeTaskEnum.Accept then
  63. GUI:setVisible(self.view.getTaskBtnRoot, true)
  64. GUI:setVisible(self.view.btnSubmit, false)
  65. local str = ""
  66. if InfoManager.goldChallengeTaskInfo.taskInfo.nowtask.progress >= self.taskCfg.taskGoalNum[self.data.v] then
  67. str = string.format("<color=%s>%s/%s</color>", EColor[EGradColor.green], InfoManager.goldChallengeTaskInfo.taskInfo.nowtask.progress, self.taskCfg.taskGoalNum[self.data.v])
  68. else
  69. str = string.format("<color=%s>%s/%s</color>", EColor[EGradColor.red], InfoManager.goldChallengeTaskInfo.taskInfo.nowtask.progress, self.taskCfg.taskGoalNum[self.data.v])
  70. end
  71. GUI:Text_setString(self.view.textTask, string.format("任务数量:%s", str))
  72. elseif status == GoldChallengeTaskEnum.Finish then
  73. GUI:setVisible(self.view.getTaskBtnRoot, false)
  74. GUI:setVisible(self.view.btnSubmit, true)
  75. local str = string.format("<color=%s>%s/%s</color>", EColor[EGradColor.green], self.taskCfg.taskGoalNum[self.data.v], self.taskCfg.taskGoalNum[self.data.v])
  76. GUI:Text_setString(self.view.textTask, string.format("任务数量:%s", str))
  77. ---开启一个计时器用于闪烁
  78. if not self.timer then
  79. self.timer = SL:StartLoopForever(0.5, self.RefreshBtn, self) ---Timer.StartLoopForever(0.5, self.RefreshBtn, self)
  80. end
  81. self.nowAlpha = 1
  82. elseif status == GoldChallengeTaskEnum.submit then
  83. end
  84. GUI:setVisible(self.view.btnGetTask, false)
  85. else --不是当前任务要置灰
  86. GUI:setVisible(self.view.btnSubmit, false)
  87. GUI:setVisible(self.view.getTaskBtnRoot, false)
  88. GUI:setVisible(self.view.btnGetTask, true)
  89. GUI:Button_setGrey(self.view.btnGetTask, true)
  90. end
  91. else
  92. GUI:setVisible(self.view.btnSubmit, false)
  93. GUI:setVisible(self.view.getTaskBtnRoot, false)
  94. GUI:setVisible(self.view.btnGetTask, true)
  95. end
  96. GUI:setVisible(self.view.frame_2, false)
  97. GUI:setVisible(self.view.frame_3, false)
  98. if self.data.v == 2 then
  99. GUI:setVisible(self.view.frame_2, true)
  100. elseif self.data.v == 3 then
  101. GUI:setVisible(self.view.frame_3, true)
  102. end
  103. self:InitModel()
  104. --self:InitRewards()
  105. GUI:DataListUpdateData(self.view.itemRoot)
  106. self:InitStar()
  107. end
  108. end
  109. function this:InitModel()
  110. --SL:CrateMonsterModel(self.view.model.rectTransform,10001,{1,1,1})
  111. local appr = self.monsterCfg.appr
  112. local path = SL:GetConfigMultiKeys('cfg_model_monster', appr, 'id').path
  113. GUI:Model_setSrc(self.view.model1, path)
  114. end
  115. function this:GoldBossDataListItemCountFunc()
  116. return #self.itemRewards
  117. end
  118. function this:GoldBossDataListItemGetFunc(realIndex)
  119. local item = GUI:UIPanel_Open("dev/outui/Activity/Item/KLGoldChallengeReward/KLGoldChallengeRewardItem", self.view.itemRoot, self, {}, true)
  120. self.glodBossRewarditem[item.view.root] = item
  121. return item.view.root
  122. end
  123. function this:GoldBossDataListItemInitFunc(realIndex, kmlcontrol)
  124. end
  125. function this:GoldBossDataListItemUpdateFunc(realIndex, kmlcontrol)
  126. self.glodBossRewarditem[kmlcontrol]:RefreshItem(self.itemRewards[realIndex + 1])
  127. end
  128. function this:InitRewards(realIndex)
  129. local itemRewards = {}
  130. if self.data.v == 1 then
  131. itemRewards = self.taskCfg.rewardItem1
  132. elseif self.data.v == 2 then
  133. itemRewards = self.taskCfg.rewardItem2
  134. elseif self.data.v == 3 then
  135. itemRewards = self.taskCfg.rewardItem3
  136. end
  137. if #self.itemList >= #itemRewards then
  138. for i = 1, #self.itemList do
  139. if i <= #itemRewards then
  140. GUI:setVisible(self.itemList[i], true)
  141. else
  142. GUI:setVisible(self.itemList[i], false)
  143. end
  144. end
  145. else
  146. for i = #self.itemList + 1, #itemRewards do
  147. local itemId = itemRewards[i][1]
  148. local item = GUI:Item_Create(self.view.itemRoot, {
  149. width = "50",
  150. height = "50",
  151. itemid = itemId,
  152. mfixsize = "80,80",
  153. tips = "1",
  154. itemcustomcount = itemRewards[i][2]
  155. })
  156. GUI:AddOnClickEvent(item, self, function()
  157. SL:OpenTips(nil, itemId)
  158. end)
  159. table.insert(self.itemList, item)
  160. end
  161. for i = 1, #self.itemList do
  162. if i <= #itemRewards then
  163. GUI:setVisible(self.itemList[i], true)
  164. else
  165. GUI:setVisible(self.itemList[i], false)
  166. end
  167. end
  168. end
  169. end
  170. function this:InitStar()
  171. if #self.starList > 0 then
  172. for i = 1, 3 do
  173. if i <= self.data.v then
  174. GUI:setVisible(self.starList[i], true)
  175. else
  176. GUI:setVisible(self.starList[i], false)
  177. end
  178. end
  179. else
  180. for i = 1, 3 do
  181. local star = GUI:Image_Create(self.view.starGrid, {
  182. id = "star" .. i,
  183. atlas = "Atlas/UIGoldChallenge.spriteatlas",
  184. src = "star",
  185. width = "35",
  186. height = "35",
  187. })
  188. table.insert(self.starList, star)
  189. end
  190. for i = 1, 3 do
  191. if i <= self.data.v then
  192. GUI:setVisible(self.starList[i], true)
  193. else
  194. GUI:setVisible(self.starList[i], false)
  195. end
  196. end
  197. end
  198. end
  199. ---注册UI事件和服务器消息
  200. function this:RegistEvents()
  201. GUI:AddOnClickEvent(self.view.btnGo, self, self.OnClickGoTask)
  202. GUI:AddOnClickEvent(self.view.btnAbandon, self, self.OnClickAbandonTask)
  203. GUI:AddOnClickEvent(self.view.btnGetTask, self, self.OnClickGetTask)
  204. GUI:AddOnClickEvent(self.view.btnSubmit, self, self.OnClickSubmitTask)
  205. end
  206. ---前往任务
  207. function this:OnClickGoTask()
  208. --SL:ShortcutDO(self.taskCfg.instruction[1], nil, nil, function()
  209. -- --AutoFightManager.StartAutoFight()
  210. --end)
  211. GUI:UIPanel_Close("dev/outui/Activity/Panel/KLGoldChallenge/KLGoldChallengePanel")
  212. local type = SL:GetConfigMultiKeys('cfg_BOSS_challenge', self.monsterCfg.id, 'monsterid').monsterType
  213. GUI:UIPanel_Open("dev/outui/ChallengeBoss/Panel/KLChallengeBoss/KLChallengeBossPanel",nil,
  214. nil,{monsterId = self.monsterCfg.id,monsterType = type })
  215. end
  216. ---放弃任务
  217. function this:OnClickAbandonTask()
  218. --[[ local message = {
  219. title = "提示",
  220. showTips = "当前任务进度将会被清空,是否确认放弃",
  221. callback = function()
  222. SL:SendLuaNetMsg(LuaMessageIdToSever.GIVE_UP_GOLD_TASK, self.data.k)
  223. end
  224. }]]
  225. SL:CommonTipsMessage({ title = "提示", stringTblID=208,
  226. callback = function()
  227. SL:SendLuaNetMsg(LuaMessageIdToSever.GIVE_UP_GOLD_TASK, self.data.k)
  228. end
  229. })
  230. end
  231. ---领取任务
  232. function this:OnClickGetTask()
  233. SL:SendLuaNetMsg(LuaMessageIdToSever.ACCEPT_GOLD_TASK, self.data.k)
  234. end
  235. ---提交任务
  236. function this:OnClickSubmitTask()
  237. SL:SendLuaNetMsg(LuaMessageIdToSever.SUBMIT_GOLD_TASK, self.data.k)
  238. end
  239. function this:RefreshBtn()
  240. if self.nowAlpha == 1 then
  241. self.nowAlpha = 0.8
  242. else
  243. self.nowAlpha = 1
  244. end
  245. GUI:SetImageAlpha(self.view.btnEffect, 1, 1, 1, self.nowAlpha)
  246. end
  247. function this:Close()
  248. self.starList = {}
  249. if self.timer then
  250. ---Timer.Stop(self.timer)
  251. SL:UnSchedule(self.timer)
  252. self.timer = nil
  253. end
  254. end
  255. return this