KLDailyActivePanel.lua 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102
  1. ---@class KLDailyActivePanel:UIKmlLuaPanelBase
  2. ---@field view KLDailyActivePanelView
  3. local KLDailyActivePanel = class(UIKmlLuaPanelBase)
  4. local this =KLDailyActivePanel
  5. ---创建时调用一次
  6. function this:Init()
  7. GUI:DataListInitData(self.view.datalist_active, 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_daily_activity_column[]
  13. self.dailyActivityTblList = SL:GetConfigTable("cfg_daily_activity")]]
  14. ---@type table<KingML.KmlControl,KLDailyActiveItem>
  15. self.activeItems = {}
  16. end
  17. function this:ItemCountGetFun()
  18. return #self.dailyActiveDataList
  19. end
  20. function this:ItemGetFun(realIndex)
  21. local item = GUI:UIPanel_Open("dev/outui/DailyGoal/Item/KLDailyActiveItem/KLDailyActiveItem",self.view.datalist_active,self,nil,true)
  22. self.activeItems[item.view.root] = item
  23. return item.view.root
  24. end
  25. function this:ItemUpdateFun(realIndex,kmlControl)
  26. ---@type KLDailyActiveItem
  27. local item = self.activeItems[kmlControl]
  28. item:UpdateData(self.dailyActiveDataList[realIndex + 1])
  29. end
  30. ---创建或者刷新界面数据时调用
  31. function this:Refresh()
  32. SL:SendLuaNetMsg(LuaMessageIdToSever.GET_DAILY_ACTIVITY_INFO)
  33. end
  34. ---注册UI事件和服务器消息
  35. function this:RegistEvents()
  36. SL:RegisterLuaNetMsg(LuaMessageIdToClient.GET_DAILY_ACTIVITY_INFO,self.ResDailyActivityInfo,self)
  37. end
  38. function this.ActiveTblSortFun(a,b)
  39. return a.rank < b.rank
  40. end
  41. ---@param data DailyActivity
  42. function this:ResDailyActivityInfo(_,data)
  43. --data.activity_value = "60" --测试数据
  44. local list = {}
  45. for _, v in pairs(data.daily_task) do
  46. ---@type cfg_daily_activity_column
  47. local config = SL:GetConfig("cfg_daily_activity",tonumber(v.task_id))
  48. if config then
  49. if SL:CheckCondition(config.showConditions) then
  50. v.rank = config.rank
  51. table.insert(list,v)
  52. end
  53. end
  54. end
  55. table.sort(list,this.ActiveTblSortFun)
  56. self.dailyActiveDataList = list
  57. GUI:LoopScrollViewUpdateData(self.view.datalist_active,true)
  58. GUI:Text_setString(self.view.txt_cur_active_num,tostring(data.activity_value))
  59. GUI:Slider_setPercent(self.view.slider_active_num,tonumber(data.activity_value))
  60. local haveBoxCanGet = false
  61. for _, v in pairs(data.daily_box) do
  62. local index = math.tointeger(v.ax_num // 20)
  63. GUI:SetActive(self.view["icon_get_" .. index],v.state == 1)
  64. local canGet = tonumber(v.ax_num) <= tonumber(data.activity_value) and v.state ~= 1
  65. haveBoxCanGet = haveBoxCanGet or canGet
  66. GUI:SetActive(self.view["effect_box_" .. index],canGet)
  67. GUI:Image_loadTexture(self.view["icon_box_" .. index],(canGet and "icon_box_light_" or "icon_box_dark_") .. index,"Atlas/DailyGoal.spriteatlas")
  68. GUI:AddOnClickEvent(self.view["icon_box_" .. index],self,self.OnClickBoxIcon,tonumber(v.box_id))
  69. self.boxCanGet = self.boxCanGet or {}
  70. self.boxCanGet[v.box_id] = canGet
  71. end
  72. InfoManager.redDotInfo.commonRedPointInfo[96] = haveBoxCanGet
  73. SL:RefreshPanelALLRedPoint("KLDailyGoalMainPanel")
  74. end
  75. function this:OnClickBoxIcon(_,boxId)
  76. ---@type cfg_activeness_reward_column
  77. local config = SL:GetConfig("cfg_activeness_reward",boxId)
  78. local list = {}
  79. for _, v in pairs(config.caxItem) do
  80. table.insert(list,{["id"]=tonumber(v[1]),["count"]=tonumber(v[2])})
  81. end
  82. for _, v in pairs(config.randomReward) do
  83. table.insert(list,{["id"]=tonumber(v[1]),["count"]=-1})
  84. end
  85. GUI:UIPanel_Open("dev/outui/DailyGoal/Panel/KLDailyBoxReward/KLDailyBoxRewardPanel",nil,nil,{["config"]=config,["rewardList"]=list,["showBtnGet"]=self.boxCanGet[tostring(boxId)]})
  86. end
  87. function this:Close()
  88. end
  89. return this