KLDailyActivityPanel.lua 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  1. ---@class KLDailyActivityPanel:UIKmlLuaPanelBase
  2. ---@field view KLDailyActivityPanelView
  3. local KLDailyActivityPanel = class(UIKmlLuaPanelBase)
  4. local this =KLDailyActivityPanel
  5. ---创建时调用一次
  6. function this:Init()
  7. GUI:DataListInitData(self.view.datalist_activity, function() return self:ItemCountGetFun() end,
  8. function(realIndex) return self:ItemGetFun(realIndex) end,
  9. nil,
  10. function(realIndex,kmlControl) self:ItemUpdateFun(realIndex,kmlControl) end,
  11. nil)
  12. ---@type cfg_activity_rule_column[]
  13. self.activityRuleTblList = {}
  14. local list = SL:GetConfigTable("cfg_activity_rule")
  15. for k, v in pairs(list) do
  16. if v.targetOpen == 1 then
  17. table.insert(self.activityRuleTblList,v)
  18. end
  19. end
  20. --table.sort(self.activityRuleTblList, self.ActivitySortCompare)
  21. self.activityItems = {}
  22. end
  23. ---@param a cfg_activity_rule_column
  24. ---@param b cfg_activity_rule_column
  25. function this.ActivitySortCompare(a,b)
  26. local rankA = a.rank
  27. local rankB = b.rank
  28. if this.activityOpenMap then
  29. if not this.activityOpenMap[a.id] then
  30. rankA = rankA + 1000
  31. end
  32. if not this.activityOpenMap[b.id] then
  33. rankB = rankB + 1000
  34. end
  35. end
  36. return rankA < rankB
  37. end
  38. function this:ItemCountGetFun()
  39. return #self.activityRuleTblList
  40. end
  41. function this:ItemGetFun(realIndex)
  42. local data = self.activityRuleTblList[realIndex + 1]
  43. local item = GUI:UIPanel_Open("dev/outui/DailyGoal/Item/KLDailyActivity/KLDailyActivityItem",self.view.datalist_activity,self,this.activityOpenMap[data.id],true)
  44. self.activityItems[item.view.root] = item
  45. return item.view.root
  46. end
  47. function this:ItemUpdateFun(realIndex,kmlControl)
  48. ---@type KLDailyActivityItem
  49. local item = self.activityItems[kmlControl]
  50. item:UpdateData(self.activityRuleTblList[realIndex + 1])
  51. end
  52. ---创建或者刷新界面数据时调用
  53. function this:Refresh()
  54. SL:SendLuaNetMsg(LuaMessageIdToSever.GET_DAILY_ACTIVITY_ACTIVITY_LIST)
  55. end
  56. ---注册UI事件和服务器消息
  57. function this:RegistEvents()
  58. SL:RegisterLuaNetMsg(LuaMessageIdToClient.GET_DAILY_ACTIVITY_ACTIVITY_LIST,self.ResDailyActivityList,self)
  59. end
  60. ---@param data DailyActivityActivity[]
  61. function this:ResDailyActivityList(_,data)
  62. ---@type table<number,boolean>
  63. this.activityOpenMap = this.activityOpenMap or {}
  64. for _, v in pairs(data) do
  65. this.activityOpenMap[v.activityid] = v.open
  66. end
  67. table.sort(self.activityRuleTblList, self.ActivitySortCompare)
  68. GUI:DataListUpdateData(self.view.datalist_activity)
  69. SL:RefreshPanelALLRedPoint("KLDailyActivityPanel")
  70. end
  71. function this:Close()
  72. end
  73. return this