KLCopyTeamPanel.lua 8.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231
  1. ---@class KLCopyTeamPanel:UIKmlLuaPanelBase
  2. ---@field view KLCopyTeamPanelView
  3. local KLCopyTeamPanel = class(UIKmlLuaPanelBase)
  4. local this = KLCopyTeamPanel
  5. ---创建时调用一次
  6. function this:Init()
  7. self.team_all_item = {}
  8. self.teamData = {}
  9. GUI:DataListInitData(self.view.teamList, function()
  10. return self:TeamDataListItemCountFunc()
  11. end, function(realIndex)
  12. return self:TeamDataListItemGetFunc(realIndex)
  13. end, function(realIndex, kmlcontrol)
  14. return self:TeamDataListItemInitFunc(realIndex, kmlcontrol)
  15. end, function(realIndex, kmlcontrol)
  16. return self:TeamDataListItemUpdateFunc(realIndex, kmlcontrol)
  17. end)
  18. end
  19. ---创建或者刷新界面数据时调用
  20. function this:Refresh()
  21. GUI:UIPanel_Close("dev/outui/Activity/Panel/KLActivityDetail/KLActivityDetailPanel")
  22. SL.HideMainPanel()
  23. ---@type cfg_rep_column
  24. local tbl = SL:GetConfig("cfg_rep", self.args.configId, "id")
  25. GUI:Text_setString(self.view.title, tbl.cehua .. "第" .. tbl.repLevel .. "层")
  26. self.teamData = {}
  27. ---@type cfg_global_column
  28. --local tbl = SL:GetConfig("cfg_global",220,"id")
  29. --tonumber(tbl.value)
  30. self:StartCountDown(30)
  31. self:RefreshCostItem()
  32. self:RefreshTeamInfoList(self.args)
  33. if tbl.type == EActivityType.DevilSquare then
  34. GUI:setPositionY(self.view.ticketModel, -150)
  35. else
  36. GUI:setPositionY(self.view.ticketModel, -167)
  37. end
  38. end
  39. ---注册UI事件和服务器消息
  40. function this:RegistEvents()
  41. SL:RegisterLuaNetMsg(LuaMessageIdToClient.RES_DUPLICATE_TEAM_INFO, self.RES_DUPLICATE_TEAM_INFO, self)
  42. SL:RegisterLuaNetMsg(LuaMessageIdToClient.RES_BREAK_DUPLICATE_TEAM, self.RES_BREAK_DUPLICATE_TEAM, self)
  43. SL:RegisterLUAEvent(LUA_EVENT_BAG_CHANGE_AFTER,self.LUA_EVENT_BAG_CHANGE_AFTER,self)
  44. GUI:AddOnClickEvent(self.view.closeBtn, self, self.OnClickClose)
  45. GUI:AddOnClickEvent(self.view.Btcanel, self, self.OnClickBtcanel)
  46. GUI:AddOnClickEvent(self.view.BtnDissolve, self, self.OnClickBtnDissolve)
  47. GUI:AddOnClickEvent(self.view.Btnok, self, self.OnClickBtnok)
  48. GUI:AddOnClickEvent(self.view.ticketBtn, self, self.OnCliCkTicketBtn)
  49. GUI:AddOnClickEvent(self.view.addBtn, self, self.OnCliCkAddCountBtn)
  50. end
  51. function this:OnClickClose()
  52. SL:SendLuaNetMsg(LuaMessageIdToSever.REQ_CHANGE_DUPLICATE_TEAM_STATE, DupTeamChangeState.REFUSE)
  53. GUI:UIPanel_Close("dev/outui/Activity/Panel/KLCopyTeam/KLCopyTeamPanel")
  54. end
  55. ---拒绝
  56. function this:OnClickBtcanel()
  57. SL:SendLuaNetMsg(LuaMessageIdToSever.REQ_CHANGE_DUPLICATE_TEAM_STATE, DupTeamChangeState.REFUSE)
  58. GUI:UIPanel_Close("dev/outui/Activity/Panel/KLCopyTeam/KLCopyTeamPanel")
  59. end
  60. ---解散
  61. function this:OnClickBtnDissolve()
  62. SL:SendLuaNetMsg(LuaMessageIdToSever.REQ_CHANGE_DUPLICATE_TEAM_STATE, DupTeamChangeState.BREAK)
  63. GUI:UIPanel_Close("dev/outui/Activity/Panel/KLCopyTeam/KLCopyTeamPanel")
  64. end
  65. ---准备
  66. function this:OnClickBtnok()
  67. if self.meEnterCopyState == EnterLimitResultConst.REFUSE then
  68. SL:SendLuaNetMsg(LuaMessageIdToSever.REQ_CHANGE_DUPLICATE_TEAM_STATE, DupTeamChangeState.READY)
  69. elseif self.meEnterCopyState ~= EnterLimitResultConst.ALLOW then
  70. local state = self:CheckCondition(self.meEnterCopyState)
  71. SL:TipMessage(state, 1, NoticeType.NoticeMid)
  72. end
  73. end
  74. function this:OnCliCkTicketBtn()
  75. ---@type cfg_rep_column
  76. local tbl = SL:GetConfig("cfg_rep", self.args.configId, "id")
  77. SL:OpenTips(nil, tbl.itemId[1])
  78. end
  79. function this:OnCliCkAddCountBtn()
  80. ---@type cfg_rep_column
  81. local tbl = SL:GetConfig("cfg_rep", self.args.configId, "id")
  82. SL:CommonItemGetPath(nil, tbl.itemId[1])
  83. end
  84. function this:RefreshCostItem()
  85. ---@type cfg_rep_column
  86. local tbl = SL:GetConfig("cfg_rep", self.args.configId, "id")
  87. local ownerTicket = SL:GetBagItemCount(tbl.itemId[1])
  88. isMeet = tbl.itemId[2] <= ownerTicket
  89. GUI:setVisible(self.view.addBtn, not isMeet)
  90. color = isMeet and "#28E529" or "#ff2323"
  91. GUI:Text_setString(self.view.ticketCount, GUIUtil.GetColorText(ownerTicket .. "/" .. tbl.itemId[2], color))
  92. ---@type cfg_item_column
  93. local itemTbl = SL:GetConfig("cfg_item", tbl.itemId[1], "id")
  94. ---@type cfg_model_charactor_column
  95. local modelTbl = SL:GetConfig("cfg_model_charactor", itemTbl.shape[1], "id")
  96. GUI:Model_setSrc(self.view.ticketModel, modelTbl.path)
  97. end
  98. function this:TeamDataListItemCountFunc()
  99. return #self.teamData
  100. end
  101. function this:TeamDataListItemGetFunc(realIndex)
  102. local data = self.teamData[realIndex + 1]
  103. local item = GUI:UIPanel_Open("dev/outui/Activity/Item/KLTeamInfo/KLTeamInfoItem", self.view.teamList, self, data, true)
  104. self.team_all_item[item.view.root] = item
  105. return item.view.root
  106. end
  107. function this:TeamDataListItemInitFunc(realIndex, kmlcontrol)
  108. end
  109. function this:TeamDataListItemUpdateFunc(realIndex, kmlcontrol)
  110. local data = self.teamData[realIndex + 1]
  111. self.team_all_item[kmlcontrol]:RefreshItem(data)
  112. end
  113. function this:CheckCondition(state)
  114. if state == EnterLimitResultConst.LEVEL then
  115. return "等级不足"
  116. end
  117. if state == EnterLimitResultConst.ITEM then
  118. return "道具不足"
  119. end
  120. if state == EnterLimitResultConst.COUNT then
  121. return "次数不足"
  122. end
  123. if state == EnterLimitResultConst.REFUSE then
  124. return "拒绝进入"
  125. end
  126. return
  127. end
  128. function this:RefreshTeamInfoList(data)
  129. self.args = data
  130. self.isEnterMap = true
  131. self.meEnterCopyState = EnterLimitResultConst.ALLOW
  132. table.clear(self.teamData)
  133. local rid = SL:GetMetaValue(EMetaVarGetKey.MAIN_ACTOR_ID)
  134. rid = tonumber(rid)
  135. for i, v in pairs(data.members) do
  136. local teamInfo = {}
  137. local state = self:CheckCondition(v.state)
  138. teamInfo.select = not state
  139. if not state then
  140. state = "<color=#28E529>已准备</color>"
  141. end
  142. teamInfo.state = state
  143. teamInfo.isLeader = data.leaderid == v.rid
  144. teamInfo.name = v.name
  145. teamInfo.career = tonumber(v.career)
  146. table.insert(self.teamData, teamInfo)
  147. if v.state ~= EnterLimitResultConst.ALLOW then
  148. self.isEnterMap = false
  149. end
  150. if rid == v.rid then
  151. self.meEnterCopyState = v.state
  152. end
  153. end
  154. if self.isEnterMap then
  155. self:StartCountDown(5)
  156. end
  157. local isMeet = data.leaderid == rid
  158. GUI:setVisible(self.view.Btcanel, not isMeet)
  159. GUI:setVisible(self.view.BtnDissolve, isMeet)
  160. GUI:setVisible(self.view.Btnok, not isMeet)
  161. GUI:DataListUpdateData(self.view.teamList)
  162. end
  163. function this:StartCountDown(countdown)
  164. ---@type cfg_global_column
  165. --local tbl = SL:GetConfig("cfg_global",220,"id")
  166. self.countdown = countdown--tonumber(tbl.value)
  167. self.timer = SL:Schedule(self.timer, 0, 1, self.countdown, function()
  168. self.countdown = self.countdown - 1
  169. GUI:Text_setString(self.view.countDown, GUIUtil.FormatTimeMS(self.countdown))
  170. if self.countdown <= 0 then
  171. if self.timer then
  172. SL:UnSchedule(self.timer)
  173. self.timer = nil
  174. end
  175. local rid = SL:GetMetaValue(EMetaVarGetKey.MAIN_ACTOR_ID)
  176. if self.args.leaderid == tonumber(rid) then
  177. if not self.isEnterMap then
  178. SL:SendLuaNetMsg(LuaMessageIdToSever.REQ_CHANGE_DUPLICATE_TEAM_STATE, DupTeamChangeState.BREAK)
  179. else
  180. SL:SendLuaNetMsg(LuaMessageIdToSever.REQ_DUPLICATE_TEAM_ENTER)
  181. end
  182. end
  183. GUI:UIPanel_Close("dev/outui/Activity/Panel/KLCopyTeam/KLCopyTeamPanel")
  184. end
  185. end)
  186. end
  187. function this:RES_DUPLICATE_TEAM_INFO(id, message)
  188. self:RefreshTeamInfoList(message)
  189. end
  190. function this:RES_BREAK_DUPLICATE_TEAM(id, message)
  191. GUI:UIPanel_Close("dev/outui/Activity/Panel/KLCopyTeam/KLCopyTeamPanel")
  192. end
  193. function this:LUA_EVENT_BAG_CHANGE_AFTER(id, message)
  194. self:RefreshCostItem()
  195. end
  196. function this:Close()
  197. if self.timer then
  198. SL:UnSchedule(self.timer)
  199. self.timer = nil
  200. end
  201. self.countdown = 0
  202. SL.ShowMainPanel()
  203. end
  204. return this