| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288 |
- local ActivityFortnightTaskItem = class("ActivityFortnightTaskItem",require("Activities/ActivityTypeItem"))
- local ActivityTaskItem = require("Activities/ActivityTaskItem")
- local ActivityTaskBoxItem = require("Activities/ActivityTaskBoxItem")
- function ActivityFortnightTaskItem:ctor()
- self.curDay = 0
- self.curDayEndTime = 0
- self.taskScore = 0
- self.totalTaskScore = 0
- self.taskScoreReward = 0
- self.taskList = nil
- self.boxRewards = nil
- self.curShowBoxType = 0
- self:InitData()
- end
- function ActivityFortnightTaskItem:GetBg()
- local subfix = "_7"
- if self.curDay > 7 then
- subfix = "_14"
- end
- return self.bg .. subfix
- end
- function ActivityFortnightTaskItem:InitData()
- self.data = {}
- self.taskList = {}
- local cfgList = ManagerContainer.CfgMgr:GetFortnightDaysCfg()
- if cfgList ~= nil then
- for i = 1, 14 do
- local cfg = cfgList[i]
- if cfg ~= nil then
- local taskList1 = {}
- local taskList2 = {}
- if cfg.TaskIds ~= nil then
- for j = 1, #cfg.TaskIds do
- local task = ActivityTaskItem:new(cfg.TaskIds[j])
- taskList1[#taskList1 + 1] = task
- self.taskList[#self.taskList+1] = task
- end
- end
- if cfg.DailyTaskIds ~= nil then
- for j = 1, #cfg.DailyTaskIds do
- local task = ActivityTaskItem:new(cfg.DailyTaskIds[j])
- taskList2[#taskList2 + 1] = task
- self.taskList[#self.taskList+1] = task
- end
- end
- self.data[#self.data+1] = {day = i, gTasks = taskList1, dTasks = taskList2}
- end
- end
- end
- self:SetRPType(Enum.RPNotifyType.FortnightTaskReward)
- end
- function ActivityFortnightTaskItem:RefreshBoxReward(pageId)
- self:InitBoxReward(pageId)
- self:RefreshBoxRewardState()
- end
- function ActivityFortnightTaskItem:InitBoxReward(boxType)
- if self.curShowBoxType == boxType then
- return
- end
- self.totalTaskScore = 0
- self.boxRewards = {}
- local cfgList = ManagerContainer.CfgMgr:GetActivityRewardCfg()
- if cfgList ~= nil then
- for k,v in pairs(cfgList) do
- if v.Type == boxType then
- local box = ActivityTaskBoxItem:new(v)
- self.boxRewards[#self.boxRewards+1] = box
- if box.score > self.totalTaskScore then
- self.totalTaskScore = box.score
- end
- end
- end
- end
- if #self.boxRewards > 1 then
- table.sort(
- self.boxRewards,
- function(a, b)
- return a.score < b.score
- end
- )
- end
- end
- function ActivityFortnightTaskItem:RefreshBoxRewardState()
- if self.boxRewards == nil then
- return
- end
- -- LogError(" taskScoreReward = " .. self.taskScoreReward)
- for i = 1, #self.boxRewards do
- local box = self.boxRewards[i]
- if self.taskScore >= box.score then
- box:SetCanGet(true)
- else
- box:SetCanGet(false)
- end
- local val = math.pow(2, box.boxId)
- if CommonUtil.And(self.taskScoreReward, val) == val then
- box:SetGoReward(true)
- else
- box:SetGoReward(false)
- end
- end
- end
- function ActivityFortnightTaskItem:GetBoxRewards(pageId)
- self:RefreshBoxReward(pageId)
- return self.boxRewards
- end
- function ActivityFortnightTaskItem:SyncSrvData(serverData)
- if self.curDay ~= serverData[1] then
- self.curDay = serverData[1]
- for i = 1, #self.data do
- local dTasks = self.data[i].dTasks
- for j = 1, #dTasks do
- local task = dTasks[j]
- task:SetOutofDate(i < self.curDay)
- end
- end
- ManagerContainer.LuaEventMgr:Dispatch(UIEventNames.EID_Activity_Day_Change,self.actId)
- end
- self.curDayEndTime = tonumber(tostring(serverData[2] / 1000))
- local fortnightDaysData = serverData[3]
- if fortnightDaysData ~= nil then
- self.taskScore = fortnightDaysData.task_score
- self.taskScoreReward = fortnightDaysData.task_score_reward
-
- local taskList = fortnightDaysData.task_list
- for i = 1, #taskList do
- local taskData = taskList[i]
- local task = self:GetTaskById(taskData.task_id)
- if task ~= nil then
- task:SyncServerData(taskData)
- local isLimitedTask, inDay = self:IsLimitedTask(taskData.task_id)
- if isLimitedTask then
- task:SetOutofDate(inDay < self.curDay)
- end
- end
- end
- end
- for i = 1, #self.data do
- self:SortTask(self.data[i].gTasks)
- self:SortTask(self.data[i].dTasks)
- end
- if self.curDay <= 7 then
- self:InitBoxReward(1)
- else
- self:InitBoxReward(2)
- end
- self:RefreshBoxRewardState()
- end
- function ActivityFortnightTaskItem:IsLimitedTask(taskId)
- if self.data == nil then
- return false, nil
- end
- for i = 1, #self.data do
- local dTasks = self.data[i].dTasks
- for j = 1, #dTasks do
- if dTasks[j].taskId == taskId then
- return true, i
- end
- end
- end
- return false, nil
- end
- function ActivityFortnightTaskItem:SortTask(taskList)
- if taskList == nil or #taskList < 2 then
- return
- end
- table.sort(
- taskList,
- function(a, b)
- if a.showPriority < b.showPriority then
- return true
- elseif a.showPriority > b.showPriority then
- return false
- else
- return a.taskId < b.taskId
- end
- end
- )
- end
- function ActivityFortnightTaskItem:GetTaskById(id)
- if self.taskList == nil then
- return nil
- end
- for i = 1, #self.taskList do
- if self.taskList[i].taskId == id then
- return self.taskList[i]
- end
- end
- return nil
- end
- function ActivityFortnightTaskItem:GetTaskListByDay(day)
- if self.data == nil then
- return nil
- end
- for i = 1, #self.data do
- if self.data[i].day == day then
- return self.data[i]
- end
- end
- return nil
- end
- function ActivityFortnightTaskItem:HasDayRedPoint(day)
- local data = self:GetTaskListByDay(day)
- if data == nil then
- return false
- end
- local gHasRedPoint = false
- local dHasRedPoint = false
- if data.gTasks ~= nil then
- for i = 1, #data.gTasks do
- if data.gTasks[i]:HasRedPoint() then
- gHasRedPoint = true
- break
- end
- end
- end
- if data.dTasks ~= nil then
- for i = 1, #data.dTasks do
- if data.dTasks[i]:HasRedPoint() then
- dHasRedPoint = true
- break
- end
- end
- end
- return gHasRedPoint,dHasRedPoint
- end
- function ActivityFortnightTaskItem:HasRedPoint()
- if self.taskList == nil then
- return false
- end
- for i = 1, #self.taskList do
- local task = self.taskList[i]
- if task:HasRedPoint() then
- return true
- end
- end
- if self.boxRewards ~= nil then
- for i = 1, #self.boxRewards do
- if self.boxRewards[i]:IsCanGet() and not self.boxRewards[i]:IsGotReward() then
- return true
- end
- end
- end
- return false
- end
- function ActivityFortnightTaskItem:GetLeftTime()
- local leftTime = self.curDayEndTime - ManagerContainer.LuaTimerMgr:GetTimeSecond()
- if leftTime < 0 then
- leftTime = 0
- end
- return leftTime
- end
- return ActivityFortnightTaskItem
|