KLChallengeBossSanctuaryMapPanel.lua 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138
  1. ---@class KLChallengeBossSanctuaryMapPanel:UIKmlLuaPanelBase
  2. ---@field view KLChallengeBossSanctuaryMapPanelView
  3. ---@field itemList KLChallengeBossSanctuaryMapItem[]
  4. ---@field monsterMap cfg_mapMove_column[]
  5. local KLChallengeBossSanctuaryMapPanel = class(UIKmlLuaPanelBase)
  6. local this = KLChallengeBossSanctuaryMapPanel
  7. function this:AsyncLoadUI()
  8. end
  9. ---创建时调用一次
  10. function this:Init()
  11. self.itemList = {}
  12. GUI:DataListInitData(self.view.dataList, function()
  13. return self:DataListItemCountFunc()
  14. end, function(realIndex)
  15. return self:DataListItemGetFunc(realIndex)
  16. end, function(realIndex, kmlcontrol)
  17. return self:DataListItemInitFunc(realIndex, kmlcontrol)
  18. end, function(realIndex, kmlcontrol)
  19. return self:DataListItemUpdateFunc(realIndex, kmlcontrol)
  20. end)
  21. end
  22. ---注册UI事件和服务器消息
  23. function this:RegistEvents()
  24. GUI:AddOnClickEvent(self.view.btnClose, self, self.BtnCloseOnClick)
  25. GUI:AddOnClickEvent(self.view.btnEnter, self, self.BtnEnterOnClick)
  26. end
  27. ----关闭界面
  28. function this:BtnCloseOnClick()
  29. GUI:UIPanel_Close("dev/outui/ChallengeBoss/Panel/KLChallengeBossSanctuaryMap/KLChallengeBossSanctuaryMapPanel")
  30. end
  31. function this:BtnEnterOnClick()
  32. if not self.selectItem then
  33. SL:TipMessage("请选中一个地图", 1, NoticeType.NoticeMid)
  34. return
  35. end
  36. if not self.selectItem.isLevel then
  37. SL:TipMessage("等级不足", 1, NoticeType.NoticeMid)
  38. return
  39. end
  40. SL:SendLuaNetMsg(LuaMessageIdToSever.REQ_SANCTUARY_BOSS_ENTER_MAP, self.selectItem.data.id)
  41. end
  42. ---界面显示时调用一次
  43. function this:Show()
  44. end
  45. ---创建或者刷新界面数据时调用
  46. function this:Refresh()
  47. SL:HideMainPanel()
  48. self:InitMonsterMapData()
  49. GUI:DataListUpdateData(self.view.dataList)
  50. end
  51. function this:InitMonsterMapData()
  52. self.monsterMap = {}
  53. local tempTable = {}
  54. ----@type cfg_BOSS_challenge_column[]
  55. local boosCfgTable = SL:GetConfigTable("cfg_BOSS_challenge")
  56. for k, v in pairs(boosCfgTable) do
  57. if v.monsterType == EBossChallengeType.Sanctuary then
  58. ---圣域BOSS都在单独的图里
  59. ---@type cfg_mapMove_column
  60. local mapCfg = SL:GetConfig("cfg_mapMove", v.mapMoveId[1][1])
  61. tempTable[mapCfg.id] = mapCfg
  62. end
  63. end
  64. for k, v in pairs(tempTable) do
  65. table.insert(self.monsterMap, v)
  66. end
  67. ---@param a cfg_mapMove_column
  68. ---@param b cfg_mapMove_column
  69. table.sort(self.monsterMap, function(a, b)
  70. if a.level < b.level then
  71. return true
  72. end
  73. return false
  74. end)
  75. end
  76. function this:Hide()
  77. end
  78. function this:DataListItemCountFunc()
  79. return table.count(self.monsterMap)
  80. end
  81. function this:DataListItemGetFunc(realIndex)
  82. ---@type KLChallengeBossSanctuaryMapItem
  83. local tempItem = GUI:UIPanel_Open("dev/outui/ChallengeBoss/Item/KLChallengeBossSanctuaryMap/KLChallengeBossSanctuaryMapItem", self.view.dataList, self, nil, true)
  84. self.itemList[tempItem.view.root] = tempItem
  85. return tempItem.view.root
  86. end
  87. ---@param kmlcontrol UIKmlLuaControl
  88. function this:DataListItemInitFunc(realIndex, kmlcontrol)
  89. end
  90. function this:DataListItemUpdateFunc(realIndex, kmlcontrol)
  91. self.itemList[kmlcontrol]:InitData(realIndex + 1, self.monsterMap[realIndex + 1], self)
  92. self.itemList[kmlcontrol]:RefreshUI()
  93. ---其他地方跳转过来的的显示选中
  94. if self.args or InfoManager.sanctuaryBossInfo.sanctuaryMapId then
  95. local mapId = self.args or InfoManager.sanctuaryBossInfo.sanctuaryMapId
  96. if self.monsterMap[realIndex + 1].mapID == mapId then
  97. self.itemList[kmlcontrol]:SetSelected(true)
  98. self.args = nil
  99. InfoManager.sanctuaryBossInfo.sanctuaryMapId = nil
  100. self.selectItem = self.itemList[kmlcontrol]
  101. end
  102. end
  103. end
  104. ---@param item KLChallengeBossSanctuaryMapItem
  105. function this:ItemSelectOnClick(item)
  106. item:SetSelected(not item.isSelected)
  107. if self.selectItem and item.index ~= self.selectItem.index then
  108. self.selectItem:SetSelected(false)
  109. end
  110. if not item.isSelected then
  111. self.selectItem = nil
  112. else
  113. self.selectItem = item
  114. end
  115. end
  116. function this:Close()
  117. InfoManager.sanctuaryBossInfo.sanctuaryNpcId = nil
  118. SL:ShowMainPanel()
  119. end
  120. return this