KLPreviewEntrancePanel.lua 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  1. ---@class KLPreviewEntrancePanel:UIKmlLuaPanelBase
  2. ---@field view KLPreviewEntrancePanelView
  3. local KLPreviewEntrancePanel = class(UIKmlLuaPanelBase)
  4. ---创建时调用一次
  5. function KLPreviewEntrancePanel:Init()
  6. end
  7. ---创建或者刷新界面数据时调用
  8. function KLPreviewEntrancePanel:Refresh()
  9. GUI:setVisible(self.view.effect, false)
  10. local info = self:GetPreviewInfo()
  11. --Scene.mapConfig.type
  12. local mapInfo = SL:GetConfig("cfg_map_info", SL:GetMetaValue("MAP_ID"), "id")
  13. if not info or mapInfo.nopositionmove == 1 then
  14. GUI:SetActive(self.view.PreviewUIclick, false)
  15. GUI:setVisible(self.view.effect, false)
  16. return
  17. end
  18. GUI:SetActive(self.view.PreviewUIclick, true)
  19. --GUI:setVisible(self.view.effect, true)
  20. local icon = info["icon"]
  21. local atlas = icon[1]
  22. local src = icon[2]
  23. GUI:Image_loadTexture(self.view.icon, src, atlas)
  24. local name = info["name"][1][1]
  25. GUI:Text_setString(self.view.name, name)
  26. end
  27. ---注册UI事件和服务器消息
  28. function KLPreviewEntrancePanel:RegistEvents()
  29. GUI:AddOnClickEvent(self.view.PreviewUIclick, self, self.OpenPreviewPanel)
  30. SL:RegisterLUAEvent(LUA_EVENT_LEVELCHANGE, self.PreviewRefresh, self)
  31. SL:RegisterLuaNetMsg(MessageDef.ResPreviewRewardInfoMessage, self.PreviewRefresh, self)
  32. end
  33. function KLPreviewEntrancePanel:Close()
  34. SL:UnRegisterLUAEvent(Event.RoleUpGrade, self.PreviewRefresh, self)
  35. SL:UnRegisterLuaNetMsg(MessageDef.ResPreviewRewardInfoMessage, self.PreviewRefresh, self)
  36. end
  37. function KLPreviewEntrancePanel:PreviewRefresh(_, message)
  38. self:Refresh()
  39. end
  40. --获取需要显示的预告
  41. function KLPreviewEntrancePanel:GetPreviewInfo()
  42. local cfgInfo = SL:GetConfigTable("cfg_preview")
  43. local info
  44. local isEffect = false
  45. --第一个大于等级的
  46. if cfgInfo then
  47. table.sort(cfgInfo, function(a, b)
  48. return a.completionLevel > b.completionLevel
  49. end)
  50. for k, v in pairs(cfgInfo) do
  51. if SL:MeData_GetLevel() >= v.completionLevel and not SL:TaskInfo_GetPreviewRewardInfo()[v.id] then
  52. SL:onLUAEvent(LUA_EVENT_PREVIEW_OPEN, v.id)
  53. end
  54. if SL:MeData_GetLevel() >= v.showLevel and (SL:MeData_GetLevel() < v.hideLevel or not SL:TaskInfo_GetPreviewRewardInfo()[v.id]) then
  55. info = v
  56. break
  57. end
  58. end
  59. for i, v in pairs(cfgInfo) do
  60. if SL:MeData_GetLevel() >= v.completionLevel and not SL:TaskInfo_GetPreviewRewardInfo()[v.id] then
  61. isEffect = true
  62. break
  63. end
  64. end
  65. end
  66. GUI:setVisible(self.view.effect, isEffect)
  67. return info
  68. end
  69. function KLPreviewEntrancePanel:OpenPreviewPanel()
  70. self.preview = GUI:UIPanel_Open("dev/ui/Preview/Panel/KLPreview/KLPreviewPanel")
  71. end
  72. return KLPreviewEntrancePanel