This commit is contained in:
puxuan 2025-09-29 17:02:47 +08:00
parent 869dad3cff
commit 8cf688aeae
12 changed files with 480 additions and 786 deletions

View File

@ -23,6 +23,7 @@ function DataManager:init()
self:initManager("TutorialData", "app/userdata/tutorial/tutorial_data") self:initManager("TutorialData", "app/userdata/tutorial/tutorial_data")
self:initManager("MailData", "app/userdata/mail/mail_data") self:initManager("MailData", "app/userdata/mail/mail_data")
self:initManager("ActivityData", "app/userdata/activity/activity_data") self:initManager("ActivityData", "app/userdata/activity/activity_data")
self:initManager("ActTaskData", "app/userdata/activity/act_task_data")
self:initManager("BountyData", "app/userdata/bounty/bounty_data") self:initManager("BountyData", "app/userdata/bounty/bounty_data")
self:initManager("ArenaBountyData", "app/userdata/arena/arena_bounty_data") self:initManager("ArenaBountyData", "app/userdata/arena/arena_bounty_data")
self:initManager("TaskData", "app/userdata/task/task_data") self:initManager("TaskData", "app/userdata/task/task_data")
@ -170,7 +171,7 @@ function DataManager:initWithServerData(data)
-- 活动要在礼包后初始化 -- 活动要在礼包后初始化
self.ActTimeData:init(data.activities) -- 全活动时间, after PlayerData self.ActTimeData:init(data.activities) -- 全活动时间, after PlayerData
self.ActivityData:initExchangeData(data.activity_exchange) self.ActivityData:initExchangeData(data.activity_exchange)
self.ActivityData:initTaskData(data.activity_score_task, data.activity_task) self.ActTaskData:initTaskData(data.activity_score_task, data.activity_task)
self.ActSprintData:init(data.activity_rush_exchange) self.ActSprintData:init(data.activity_rush_exchange)
self.ActSevenDayData:initData(data.seven_days, true) self.ActSevenDayData:initData(data.seven_days, true)
-- self.ActSprintSummonDataAll:initTaskData(data.activity_score_task, data.activity_task) -- self.ActSprintSummonDataAll:initTaskData(data.activity_score_task, data.activity_task)

View File

@ -81,7 +81,7 @@ function ActSprintManager:rspStandardReward(result)
local sprintData = DataManager.ActSprintData:getSprintDetailData(result.reqData.activity_id) local sprintData = DataManager.ActSprintData:getSprintDetailData(result.reqData.activity_id)
-- sprintData:onGetStandardTurnReward(result.reqData.id) -- sprintData:onGetStandardTurnReward(result.reqData.id)
DataManager.ActivityData:onGetTurnRewardScore(result.reqData.activity_id) DataManager.ActTaskData:onGetTurnRewardScore(result.reqData.activity_id)
if result.rewards then if result.rewards then
GFunc.showRewardBox(result.rewards) GFunc.showRewardBox(result.rewards)
end end
@ -122,14 +122,14 @@ function ActSprintManager:rspTask(result)
GFunc.showRewardBox(result.rewards) GFunc.showRewardBox(result.rewards)
end end
DataManager.ActivityData:onTaskClaimed(result.reqData.activity_id, result.reqData.task_id) DataManager.ActTaskData:onTaskClaimed(result.reqData.activity_id, result.reqData.task_id)
-- bi -- bi
local sprintData = DataManager.ActSprintData:getSprintDetailData(result.reqData.activity_id) local sprintData = DataManager.ActSprintData:getSprintDetailData(result.reqData.activity_id)
local biType = sprintData:getBIType() local biType = sprintData:getBIType()
local taskFinishNum, taskTotalNum = sprintData:getBINormalTaskNumInfo() local taskFinishNum, taskTotalNum = sprintData:getBINormalTaskNumInfo()
local sprintTaskRound = DataManager.ActivityData:getTurnScore(result.reqData.activity_id) local sprintTaskRound = DataManager.ActTaskData:getTurnScore(result.reqData.activity_id)
local sprintRewardRound = DataManager.ActivityData:getClaimedTurnScore(result.reqData.activity_id) local sprintRewardRound = DataManager.ActTaskData:getClaimedTurnScore(result.reqData.activity_id)
BIReport:postActSprintClaimNormalTask(result.reqData.activity_id, biType, result.reqData.task_id, taskFinishNum, taskTotalNum, sprintTaskRound, sprintRewardRound) BIReport:postActSprintClaimNormalTask(result.reqData.activity_id, biType, result.reqData.task_id, taskFinishNum, taskTotalNum, sprintTaskRound, sprintRewardRound)
end end
@ -146,14 +146,14 @@ function ActSprintManager:rspStandardTask(result)
GFunc.showRewardBox(result.rewards) GFunc.showRewardBox(result.rewards)
end end
DataManager.ActivityData:onTaskSuccessScore(result.reqData.activity_id) DataManager.ActTaskData:onTaskSuccessScore(result.reqData.activity_id)
local sprintData = DataManager.ActSprintData:getSprintDetailData(result.reqData.activity_id) local sprintData = DataManager.ActSprintData:getSprintDetailData(result.reqData.activity_id)
local canGetRewardStandardTaskList = sprintData:getCanGetRewardStandardTaskList() local canGetRewardStandardTaskList = sprintData:getCanGetRewardStandardTaskList()
-- bi -- bi
local biType = sprintData:getBIType() local biType = sprintData:getBIType()
local taskFinishNum, taskTotalNum = sprintData:getBISprintTaskNumInfo() local taskFinishNum, taskTotalNum = sprintData:getBISprintTaskNumInfo()
local sprintTaskRound = DataManager.ActivityData:getTurnScore(result.reqData.activity_id) local sprintTaskRound = DataManager.ActTaskData:getTurnScore(result.reqData.activity_id)
local sprintRewardRound = DataManager.ActivityData:getClaimedTurnScore(result.reqData.activity_id) local sprintRewardRound = DataManager.ActTaskData:getClaimedTurnScore(result.reqData.activity_id)
BIReport:postActSprintClaimSprintTask(result.reqData.activity_id, biType, canGetRewardStandardTaskList, taskFinishNum, taskTotalNum, sprintTaskRound, sprintRewardRound) BIReport:postActSprintClaimSprintTask(result.reqData.activity_id, biType, canGetRewardStandardTaskList, taskFinishNum, taskTotalNum, sprintTaskRound, sprintRewardRound)
end end

View File

@ -100,6 +100,10 @@ function ActSprintMainUI:onLoadRootComplete()
self:refreshRedPoint() self:refreshRedPoint()
self:onRefresh() self:onRefresh()
end) end)
self:bind(DataManager.ActTaskData, "isDirty", function()
self:refreshRedPoint()
self:onRefresh()
end)
self:addEventListener(EventManager.CUSTOM_EVENT.CHANGE_MAIN_CITY_PAGE, function() self:addEventListener(EventManager.CUSTOM_EVENT.CHANGE_MAIN_CITY_PAGE, function()
self:closeUI() self:closeUI()
end) end)

View File

@ -17,11 +17,11 @@ function StandardCell:refresh(actId, actTaskId)
end end
local rewardLayout = uiMap["standard_cell.bg.rewards"]:getComponent(GConst.TYPEOF_UNITY_CLASS.BF_HORIZONTAL_OR_VERTICAL_LAYOUT) local rewardLayout = uiMap["standard_cell.bg.rewards"]:getComponent(GConst.TYPEOF_UNITY_CLASS.BF_HORIZONTAL_OR_VERTICAL_LAYOUT)
local num = DataManager.ActivityData:getTaskNumScore(actId, actTaskId) local num = DataManager.ActTaskData:getTaskNumScore(actId, actTaskId)
local type = DataManager.ActivityData:getTaskType(actTaskId) local type = DataManager.ActTaskData:getTaskType(actTaskId)
local limit = DataManager.ActivityData:getTaskTarget(actTaskId) local limit = DataManager.ActTaskData:getTaskTarget(actTaskId)
local rewards = DataManager.ActivityData:getTaskReward(actTaskId) local rewards = DataManager.ActTaskData:getTaskReward(actTaskId)
local hasGot = DataManager.ActivityData:getHasGotTaskRewardScore(actId, actTaskId) local hasGot = DataManager.ActTaskData:getHasGotTaskRewardScore(actId, actTaskId)
local canGet = num >= limit and not hasGot local canGet = num >= limit and not hasGot
-- 修订 -- 修订
if num > limit then if num > limit then

View File

@ -21,11 +21,11 @@ function TaskCell:refresh(actId, actTaskId)
local funcBtn = uiMap["task_cell.bg.func_btn"] local funcBtn = uiMap["task_cell.bg.func_btn"]
local funcTx = uiMap["task_cell.bg.func_btn.desc_tx"] local funcTx = uiMap["task_cell.bg.func_btn.desc_tx"]
local num = DataManager.ActivityData:getTaskProg(actId, actTaskId) local num = DataManager.ActTaskData:getTaskProg(actId, actTaskId)
local taskType = DataManager.ActivityData:getTaskType(actTaskId) local taskType = DataManager.ActTaskData:getTaskType(actTaskId)
local limit = DataManager.ActivityData:getTaskTarget(actTaskId) local limit = DataManager.ActTaskData:getTaskTarget(actTaskId)
local rewards = DataManager.ActivityData:getTaskReward(actTaskId) local rewards = DataManager.ActTaskData:getTaskReward(actTaskId)
local hasGot = DataManager.ActivityData:isTaskReceived(actId, actTaskId) local hasGot = DataManager.ActTaskData:isTaskReceived(actId, actTaskId)
-- 修订 -- 修订
if num > limit then if num > limit then
num = limit num = limit

View File

@ -13,7 +13,7 @@ function GiftComp:refresh(actId)
self.txTitle:setText(I18N:getGlobalText(GConst.ActSprintConst.ACT_LIST_NAME[actId])) self.txTitle:setText(I18N:getGlobalText(GConst.ActSprintConst.ACT_LIST_NAME[actId]))
self.banner:setTexture(GConst.ActSprintConst.ACT_MAIN_BANNER[actId]) self.banner:setTexture(GConst.ActSprintConst.ACT_MAIN_BANNER[actId])
local cfgList = DataManager.ActSprintSummonDataAll:getActGiftList(actId) local cfgList = DataManager.ActSprintSummonDataAll:getActGiftList(actId)
self.giftList = DataManager.ActGiftData:getGiftIdsSort(actId) self.giftList = table.clearOrCreate(self.giftList)
for _, id in ipairs(cfgList) do for _, id in ipairs(cfgList) do
table.insert(self.giftList, id) table.insert(self.giftList, id)
end end

View File

@ -25,13 +25,13 @@ function StandardComp:init()
end end
function StandardComp:refresh(actId) function StandardComp:refresh(actId)
local turn = DataManager.ActivityData:getTurnScore(actId) local turn = DataManager.ActTaskData:getTurnScore(actId)
local maxTurn = DataManager.ActivityData:getMaxTurnScore(actId) local maxTurn = DataManager.ActTaskData:getMaxTurnScore(actId)
local canGetTurnReward = DataManager.ActivityData:getCanGetTurnRewardScore(actId) local canGetTurnReward = DataManager.ActTaskData:getCanGetTurnRewardScore(actId)
local gotAllTurnReward = DataManager.ActivityData:getGotAllTurnRewardScore(actId) local gotAllTurnReward = DataManager.ActTaskData:getGotAllTurnRewardScore(actId)
-- 轮次奖励 -- 轮次奖励
local rewards = DataManager.ActivityData:getRewardsgetMaxTurnScore(actId) local rewards = DataManager.ActTaskData:getRewardsgetMaxTurnScore(actId)
for i = 1, REWARD_CELL_COUNT do for i = 1, REWARD_CELL_COUNT do
local reward = rewards and rewards[i] local reward = rewards and rewards[i]
if reward then if reward then
@ -74,7 +74,7 @@ function StandardComp:refresh(actId)
end) end)
-- 滑动窗 -- 滑动窗
self.standardList = DataManager.ActivityData:getActTaskListScore(actId) self.standardList = DataManager.ActTaskData:getActTaskListScore(actId)
if self.scrollRect == nil then if self.scrollRect == nil then
self.scrollRect = self.scrollrect:addLuaComponent(GConst.TYPEOF_LUA_CLASS.SCROLL_RECT_BASE) self.scrollRect = self.scrollrect:addLuaComponent(GConst.TYPEOF_LUA_CLASS.SCROLL_RECT_BASE)
self.scrollRect:addInitCallback(function() self.scrollRect:addInitCallback(function()

View File

@ -12,7 +12,7 @@ end
function TaskComp:refresh(actId) function TaskComp:refresh(actId)
self.txTitle:setText(I18N:getGlobalText(GConst.ActSprintConst.ACT_LIST_NAME[actId])) self.txTitle:setText(I18N:getGlobalText(GConst.ActSprintConst.ACT_LIST_NAME[actId]))
self.banner:setTexture(GConst.ActSprintConst.ACT_MAIN_BANNER[actId]) self.banner:setTexture(GConst.ActSprintConst.ACT_MAIN_BANNER[actId])
self.taskList = DataManager.ActivityData:getTaskSortList(actId) self.taskList = DataManager.ActTaskData:getTaskSortList(actId)
if self.scrollRect == nil then if self.scrollRect == nil then
self.scrollRect = self.scrollrect:addLuaComponent(GConst.TYPEOF_LUA_CLASS.SCROLL_RECT_BASE) self.scrollRect = self.scrollrect:addLuaComponent(GConst.TYPEOF_LUA_CLASS.SCROLL_RECT_BASE)
self.scrollRect:addInitCallback(function() self.scrollRect:addInitCallback(function()

View File

@ -7,18 +7,7 @@ end
function ActSprintSummonData:clear() function ActSprintSummonData:clear()
DataManager:unregisterCrossDayFunc("ActSprintSummonDataAll") DataManager:unregisterCrossDayFunc("ActSprintSummonDataAll")
ModuleManager.TaskManager:unRegisterAllModuleTask("ActSprintSummonDataAll")
self.isInit = false self.isInit = false
-- 达标任务数据
self.standardScore = 0
self.standardTotalScore = 0
self.standardTurn = 0
self.standardClaimed = 0
self.standardClaimedTaskMap = {}
-- 普通任务进度
self.taskProgressMap = {}
self.taskClaimedMap = {}
end end
function ActSprintSummonData:setDirty() function ActSprintSummonData:setDirty()
@ -32,51 +21,6 @@ function ActSprintSummonData:clearActInfo(actId)
end end
end end
-- 初始化任务数据
function ActSprintSummonData:initTaskData(standardData, normalData)
standardData = standardData and standardData.task_data or {}
normalData = normalData and normalData.task_data or {}
if EDITOR_MODE then
Logger.logHighlight("任务模块")
Logger.printTable(standardData)
Logger.printTable(normalData)
end
-- 达标任务
for _, info in ipairs(standardData) do
if info.activity_id == self.actId then
-- 约定只有1个
local score = info.score
local totalScore = info.total_score
local round = info.round
local roundClaimed = info.round_claimed
local claimedTaskList = info.claimed
self.standardScore = score
self.standardTotalScore = totalScore
self.standardTurn = round
self.standardClaimed = roundClaimed
self.standardClaimedTaskMap = table.clearOrCreate(self.standardClaimedTaskMap)
for _, taskId in ipairs(claimedTaskList) do
self.standardClaimedTaskMap[taskId] = true
end
end
end
-- 常规任务
for _, info in ipairs(normalData) do
if info.activity_id == self.actId then
local taskId = info.data.id
local progress = info.data.progress
local stageClaimed = info.data.stage_claimed
self.taskProgressMap[taskId] = progress
self.taskClaimedMap[taskId] = stageClaimed > 0
end
end
end
function ActSprintSummonData:setActivityInfo(data) function ActSprintSummonData:setActivityInfo(data)
if self.actId ~= data.actId then if self.actId ~= data.actId then
self:clear() self:clear()
@ -103,15 +47,7 @@ function ActSprintSummonData:setActivityInfo(data)
end end
-- 当天开启 重置任务 -- 当天开启 重置任务
if self:getStartTime() == Time:getBeginningOfServerToday() then if self:getStartTime() == Time:getBeginningOfServerToday() then
-- 达标任务数据 DataManager.ActTaskData:getTaskDataScore(self.actId)
self.standardScore = 0
self.standardTotalScore = 0
self.standardTurn = 0
self.standardClaimed = 0
self.standardClaimedTaskMap = {}
-- 普通任务进度
self.taskProgressMap = {}
self.taskClaimedMap = {}
end end
local isCrossWeek = Time:getDayofWeek() == 1 local isCrossWeek = Time:getDayofWeek() == 1
-- 重置礼包 -- 重置礼包
@ -130,17 +66,6 @@ function ActSprintSummonData:setActivityInfo(data)
self:setDirty() self:setDirty()
end) end)
-- 注册任务监听
-- for id, info in pairs(self:getActTaskConfig()) do
-- if info.activity == self.actId and info.display ~= nil then
-- ModuleManager.TaskManager:registerTask("ActSprintSummonDataAll", info.type, function(count)
-- if not self:getIsOpen() then
-- return
-- end
-- self:addTaskProgress(info.type, count)
-- end)
-- end
-- end
end end
end end
@ -153,6 +78,7 @@ function ActSprintSummonData:initActivityData(data)
self.bountyInfo = data.sign or GConst.EMPTY_TABLE self.bountyInfo = data.sign or GConst.EMPTY_TABLE
end end
--region 战令
function ActSprintSummonData:onBountySign(sign) function ActSprintSummonData:onBountySign(sign)
if sign then if sign then
self.bountyInfo = sign self.bountyInfo = sign
@ -304,8 +230,9 @@ function ActSprintSummonData:hasBountyRp()
end end
return false return false
end end
--endregion
--@region 活动时间 --region 活动时间
function ActSprintSummonData:syncedData() function ActSprintSummonData:syncedData()
return self.syncData return self.syncData
end end
@ -439,7 +366,7 @@ end
function ActSprintSummonData:hasStandardRp(actId) function ActSprintSummonData:hasStandardRp(actId)
actId = actId or self:getActId() actId = actId or self:getActId()
return DataManager.ActivityData:getCanGetTurnRewardScore(actId) or self:getCanAnyStandardTaskCanGetReward(actId) return DataManager.ActTaskData:getCanGetTurnRewardScore(actId) or DataManager.ActTaskData:getCanAnyTaskCanGetRewardScore(actId)
end end
function ActSprintSummonData:hasGiftRp() function ActSprintSummonData:hasGiftRp()
@ -449,10 +376,9 @@ end
function ActSprintSummonData:hasTaskRp() function ActSprintSummonData:hasTaskRp()
return self:getCanAnyNormalTaskCanGetReward() return self:getCanAnyNormalTaskCanGetReward()
end end
--@endregion --endregion
-- 活动数据相关 **********************************************************************
--region 配置
function ActSprintSummonData:getActConfig(id) function ActSprintSummonData:getActConfig(id)
if id then if id then
return ConfigManager:getConfig("activity")[id] return ConfigManager:getConfig("activity")[id]
@ -476,278 +402,9 @@ end
function ActSprintSummonData:getActFuncOpen(id) function ActSprintSummonData:getActFuncOpen(id)
return self:getActConfig(id).func_open return self:getActConfig(id).func_open
end end
--endregion
-- 活动任务相关 ********************************************************************** --region 礼包
-- function ActSprintSummonData:addTaskProgress(taskType, progress)
-- local standardList = self:getActStandardTaskIdList(self.actId)
-- local normalList = self:getActNormalTaskIdList(self.actId)
-- -- 约定只有1个类型
-- if standardList and standardList[1] then
-- if self:getActTaskType(standardList[1]) == taskType then
-- self.standardScore = (self.standardScore or 0) + progress
-- end
-- end
-- for _, taskId in ipairs(normalList) do
-- if self:getActTaskType(taskId) == taskType then
-- if table.containValue(GConst.TaskConst.TASK_TYPE, taskType) then
-- -- 特别处理升星
-- if taskType == GConst.TaskConst.TASK_TYPE.HERO_LEGEND_STAR_UP_TO then
-- if self:getActTaskNum(taskId) < progress and progress <= self:getActTaskNumber1(taskId) then
-- self:setActTaskNum(taskId, progress)
-- end
-- else
-- if self:getActTaskNum(taskId) < progress then
-- self:setActTaskNum(taskId, progress)
-- end
-- end
-- else
-- self:addActTaskNum(taskId, progress)
-- end
-- end
-- end
-- end
function ActSprintSummonData:getActTaskConfig(id)
if id then
return ConfigManager:getConfig("act_task")[id]
else
return ConfigManager:getConfig("act_task")
end
end
-- 达标任务
function ActSprintSummonData:getActStandardTaskIdList(actId)
actId = actId or self.actId
local cfg = self:getActTaskConfig()
local actTaskList = {}
for taskId, info in pairs(cfg) do
if info.activity == actId and info.display == 1 then
table.insert(actTaskList, taskId)
end
end
return actTaskList
end
function ActSprintSummonData:getActTaskActivityId(actTaskId)
return self:getActTaskConfig(actTaskId).activity
end
function ActSprintSummonData:getActTaskDisplay(actTaskId)
return self:getActTaskConfig(actTaskId).display
end
function ActSprintSummonData:getActTaskType(actTaskId)
return self:getActTaskConfig(actTaskId).type
end
function ActSprintSummonData:getActTaskNumber1(actTaskId)
return self:getActTaskConfig(actTaskId).number_1
end
function ActSprintSummonData:getActTaskReward(actTaskId)
return self:getActTaskConfig(actTaskId).reward
end
function ActSprintSummonData:getActTaskI18NName(actTaskId)
return ConfigManager:getConfig("act_task")[actTaskId].desc
end
-- 达标任务列表
function ActSprintSummonData:getActStandardList(id)
id = id or self.actId
local list = {}
local cfg = self:getActTaskConfig()
for taskId, info in pairs(cfg) do
if info.activity == id and info.display == 1 then
table.insert(list, taskId)
end
end
table.sort(list, function(a, b)
-- 已完成(可领奖) > 进行中 > 已完成(已领奖) > id
local canGetA = self:getCanGetTaskReward(a)
local canGetB = self:getCanGetTaskReward(b)
if canGetA == canGetB then
local gotA = self:getHasGotTaskReward(a)
local gotB = self:getHasGotTaskReward(b)
if gotA == gotB then
return a < b
else
return gotB
end
else
return canGetA
end
end)
return list
end
-- 普通任务列表
function ActSprintSummonData:getActTaskList(id)
id = id or self.actId
local list = {}
local cfg = self:getActTaskConfig()
for taskId, info in pairs(cfg) do
if info.activity == id and info.display == 2 then
table.insert(list, taskId)
end
end
table.sort(list, function(a, b)
-- 已完成(可领奖) > 进行中 > 已完成(已领奖) > id
local canGetA = self:getCanGetTaskReward(a)
local canGetB = self:getCanGetTaskReward(b)
if canGetA == canGetB then
local gotA = self:getHasGotTaskReward(a)
local gotB = self:getHasGotTaskReward(b)
if gotA == gotB then
return a < b
else
return gotB
end
else
return canGetA
end
end)
return list
end
function ActSprintSummonData:getStandardTurn()
return self.standardTurn or 0
end
function ActSprintSummonData:getStandardClaimedTurn()
return self.standardClaimed or 0
end
function ActSprintSummonData:getStandardMaxTurn(actId)
actId = actId or self.actId
return GConst.ActSprintConst.ACT_ROUND_LIMIT[actId]
end
function ActSprintSummonData:getStandardRewards(actId)
actId = actId or self.actId
return GConst.ActSprintConst.ACT_ROUND_REWARD[actId]
end
function ActSprintSummonData:getCanAnyStandardTaskCanGetReward(actId)
actId = actId or self.actId
local taskList = DataManager.ActivityData:getActTaskListScore(actId)
for _, actTaskId in ipairs(taskList) do
if DataManager.ActivityData:getCanGetTaskRewardScore(actId, actTaskId) then
return true
end
end
return false
end
function ActSprintSummonData:getAllStandardTaskGotReward(actId)
actId = actId or self.actId
local taskList = self:getActStandardList(actId)
for _, actTaskId in ipairs(taskList) do
if not self:getHasGotTaskReward(actTaskId) then
return false
end
end
return true
end
-- 成功领取轮次奖励
function ActSprintSummonData:onGetStandardTurnReward(actId)
self.standardClaimed = (self.standardClaimed or 0) + 1
self:setDirty()
end
-- 是否已经领完了全部的轮次奖励
function ActSprintSummonData:getGotAllTurnReward(actId)
local claimed = self.standardClaimed or 0
local maxTurn = self:getStandardMaxTurn(actId)
return claimed >= maxTurn
end
function ActSprintSummonData:getActTaskNum(actTaskId)
if self:getActTaskDisplay(actTaskId) == 1 then
return self.standardScore or 0
else
return self.taskProgressMap[actTaskId] or 0
end
end
function ActSprintSummonData:addActTaskNum(actTaskId, progress)
self.taskProgressMap[actTaskId] = (self.taskProgressMap[actTaskId] or 0) + progress
end
function ActSprintSummonData:setActTaskNum(actTaskId, progress)
self.taskProgressMap[actTaskId] = progress
end
function ActSprintSummonData:getHasGotTaskReward(actTaskId)
if self:getActTaskDisplay(actTaskId) == 1 then
return self.standardTurn >= self:getStandardMaxTurn(self:getActId()) or self.standardClaimedTaskMap[actTaskId]
else
return self.taskClaimedMap[actTaskId]
end
end
-- 特定任务是否可领奖
function ActSprintSummonData:getCanGetTaskReward(actTaskId)
if not self:getHasGotTaskReward(actTaskId) and self:getActTaskNum(actTaskId) >= self:getActTaskNumber1(actTaskId) then
return true
else
return false
end
end
-- 领取任务成功
function ActSprintSummonData:onStandardTaskSuccess(actTaskId)
if actTaskId and actTaskId > 0 then
self.standardClaimedTaskMap[actTaskId] = true
else
local list = self:getActStandardTaskIdList(self:getActId())
for _, id in ipairs(list) do
if self:getCanGetTaskReward(id) then
self.standardClaimedTaskMap[id] = true
end
end
end
-- 如果所有任务都领取了 增加轮次
local list = self:getActStandardTaskIdList(self:getActId())
local isAllGot = true
for _, id in ipairs(list) do
if not self:getHasGotTaskReward(id) then
isAllGot = false
break
end
end
if isAllGot then
self.standardTurn = (self.standardTurn or 0) + 1
self.standardClaimedTaskMap = {}
self.standardScore = self.standardScore - self:getStandardTurnScoreLimit()
end
self:setDirty()
end
function ActSprintSummonData:onNormalTaskSuccess(actTaskId)
self.taskClaimedMap[actTaskId] = true
self:setDirty()
end
function ActSprintSummonData:getStandardTurnScoreLimit()
local scoreLimit = 0
local list = self:getActStandardTaskIdList(self:getActId())
for _, id in ipairs(list) do
local cfg = self:getActTaskConfig(id)
if cfg then
if self:getActTaskNumber1(id) > scoreLimit then
scoreLimit = self:getActTaskNumber1(id)
end
end
end
return scoreLimit
end
-- 活动礼包相关 **********************************************************************
function ActSprintSummonData:getActGiftBuyCount(actGiftId) function ActSprintSummonData:getActGiftBuyCount(actGiftId)
return DataManager.PaymentData:getGiftBoughtNum(PayManager.PURCHARSE_TYPE.ACT_GIFT, actGiftId) return DataManager.PaymentData:getGiftBoughtNum(PayManager.PURCHARSE_TYPE.ACT_GIFT, actGiftId)
end end
@ -826,10 +483,9 @@ function ActSprintSummonData:getHasFreeGiftCanBuy()
end end
end end
end end
--endregion
--region
--@region
function ActSprintSummonData:getBIType() function ActSprintSummonData:getBIType()
return BIReport.ACT_SPRINT_TYPE.SUMMON return BIReport.ACT_SPRINT_TYPE.SUMMON
end end
@ -837,9 +493,9 @@ end
-- 普通任务 -- 普通任务
function ActSprintSummonData:getBINormalTaskNumInfo() function ActSprintSummonData:getBINormalTaskNumInfo()
local num, totalNum = 0, 0 local num, totalNum = 0, 0
local taskList = DataManager.ActivityData:getTaskIdList(self.actId) local taskList = DataManager.ActTaskData:getTaskIdList(self.actId)
for _, taskId in ipairs(taskList) do for _, taskId in ipairs(taskList) do
if DataManager.ActivityData:isTaskReceived(self.actId, taskId) then if DataManager.ActTaskData:isTaskReceived(self.actId, taskId) then
num = num + 1 num = num + 1
end end
totalNum = totalNum + 1 totalNum = totalNum + 1
@ -848,9 +504,9 @@ function ActSprintSummonData:getBINormalTaskNumInfo()
end end
function ActSprintSummonData:getCanAnyNormalTaskCanGetReward() function ActSprintSummonData:getCanAnyNormalTaskCanGetReward()
local taskList = DataManager.ActivityData:getTaskIdList(self.actId) local taskList = DataManager.ActTaskData:getTaskIdList(self.actId)
for _, actTaskId in ipairs(taskList) do for _, actTaskId in ipairs(taskList) do
if DataManager.ActivityData:canClaimTask(self.actId, actTaskId) then if DataManager.ActTaskData:canClaimTask(self.actId, actTaskId) then
return true return true
end end
end end
@ -860,9 +516,9 @@ end
-- 达标任务 -- 达标任务
function ActSprintSummonData:getBISprintTaskNumInfo() function ActSprintSummonData:getBISprintTaskNumInfo()
local num, totalNum = 0, 0 local num, totalNum = 0, 0
local taskList = DataManager.ActivityData:getTaskIdListScore(self.actId) local taskList = DataManager.ActTaskData:getTaskIdListScore(self.actId)
for _, taskId in ipairs(taskList) do for _, taskId in ipairs(taskList) do
if DataManager.ActivityData:getHasGotTaskRewardScore(self.actId, taskId) then if DataManager.ActTaskData:getHasGotTaskRewardScore(self.actId, taskId) then
num = num + 1 num = num + 1
end end
totalNum = totalNum + 1 totalNum = totalNum + 1
@ -872,13 +528,14 @@ end
function ActSprintSummonData:getCanGetRewardStandardTaskList() function ActSprintSummonData:getCanGetRewardStandardTaskList()
local taskIdList = {} local taskIdList = {}
local taskList = DataManager.ActivityData:getTaskIdListScore(self.actId) local taskList = DataManager.ActTaskData:getTaskIdListScore(self.actId)
for _, taskId in ipairs(taskList) do for _, taskId in ipairs(taskList) do
if DataManager.ActivityData:getCanGetTaskRewardScore(self.actId, taskId) then if DataManager.ActTaskData:getCanGetTaskRewardScore(self.actId, taskId) then
table.insert(taskIdList, taskId) table.insert(taskIdList, taskId)
end end
end end
return taskIdList return taskIdList
end end
--@endregion --endregion
return ActSprintSummonData return ActSprintSummonData

View File

@ -0,0 +1,418 @@
local ActTaskData = class("ActTaskData", BaseData)
function ActTaskData:setDirty()
self.data.isDirty = not self.data.isDirty
end
function ActTaskData:ctor()
end
function ActTaskData:clear()
self.taskData = nil
self.taskDataScore = nil
end
-- 任务初始化
function ActTaskData:initTaskData(scoreData, normalData)
scoreData = scoreData or {}
normalData = normalData or {}
if EDITOR_MODE then
Logger.logHighlight("活动任务数据")
Logger.printTable(scoreData)
Logger.printTable(normalData)
end
self.taskData = self.taskData or {}
self.taskDataScore = self.taskDataScore or {}
for i, info in ipairs(normalData.task_data) do
self.taskData[info.activity_id] = self.taskData[info.activity_id] or {}
self.taskData[info.activity_id][info.data.id] = info.data
end
for i, info in ipairs(scoreData.task_data) do
self.taskDataScore[info.activity_id] = self.taskDataScore[info.activity_id] or {}
self.taskDataScore[info.activity_id] = info
self.taskDataScore[info.activity_id].claimedMap = {}
for _, taskId in ipairs(info.claimed) do
self.taskDataScore[info.activity_id].claimedMap[taskId] = true
end
end
if not self.isInit then
self.isInit = true
-- 监听任务
for id, info in pairs(self:getTaskConfig()) do
ModuleManager.TaskManager:registerTask("ActTaskData", info.type, function(count)
self:addTaskProgressCallback(info.type, count)
self:addTaskProgressCallbackScore(info.type, count)
end)
end
-- 跨天
DataManager:registerCrossDayFunc("ActTaskData", function()
self:setDirty()
end)
end
end
--region 普通任务
function ActTaskData:getTaskIdList(actId)
local cfg = self:getTaskConfig()
local actTaskList = {}
for taskId, info in pairs(cfg) do
if info.activity == actId and info.display == 2 then
table.insert(actTaskList, taskId)
end
end
return actTaskList
end
function ActTaskData:addTaskProgressCallback(taskType, count)
for actId, data in pairs(self.taskData) do
for i, taskId in ipairs(self:getAllTaskIdsByActId(actId)) do
if self:getTaskType(taskId) == taskType and self:getTaskDisplay(taskId) == 2 then
self:addTaskProgress(actId, taskId, count)
end
end
end
end
-- 添加任务进度
function ActTaskData:addTaskProgress(actId, taskId, count)
if not self:isTaskFinished(actId, taskId) then
local taskType = self:getTaskType(taskId)
local data = self:getTaskData(actId, taskId)
if table.containValue(GConst.TaskConst.RELPACE_TASK_TYPE, taskType) then
data.progress = math.max(data.progress or 0, count)
else
data.progress = (data.progress or 0) + count
end
end
self:setDirty()
end
function ActTaskData:getTaskData(actId, taskId)
if taskId then
self.taskData[actId] = self.taskData[actId] or {}
if self.taskData[actId][taskId] == nil then
self.taskData[actId][taskId] = {id = taskId, progress = 0, claimed = 0}
end
return self.taskData[actId][taskId]
else
return self.taskData[actId]
end
end
-- 获取活动全部任务id
function ActTaskData:getAllTaskIdsByActId(actId)
self.taskIds = self.taskIds or {}
if self.taskIds[actId] == nil then
self.taskIds[actId] = {}
for id, info in pairs(self:getTaskConfig()) do
if self:getActId(id) == actId then
table.insert(self.taskIds[actId], id)
end
end
table.sort(self.taskIds, function(a, b) return a.id < b.id end)
end
return self.taskIds[actId]
end
-- 获取任务当前进度
function ActTaskData:getTaskProg(actId, taskId)
taskId = tonumber(taskId)
local data = self:getTaskData(actId, taskId)
return data and data.progress or 0
end
-- 任务是否已领取
function ActTaskData:isTaskReceived(actId, taskId)
taskId = tonumber(taskId)
local data = self:getTaskData(actId, taskId)
return data and data.claimed and data.claimed > 0
end
-- 任务是否已完成
function ActTaskData:isTaskFinished(actId, taskId)
return self:getTaskProg(actId, taskId) >= self:getTaskTarget(taskId)
end
-- 任务是否可领取
function ActTaskData:canClaimTask(actId, taskId)
return self:isTaskFinished(actId, taskId) and not self:isTaskReceived(actId, taskId)
end
-- 重置任务数据
function ActTaskData:resetTaskData(actId)
for taskId, data in pairs(self:getTaskData(actId)) do
data.claimed = 0
data.progress = 0
end
self:setDirty()
end
-- 领奖成功
function ActTaskData:onTaskClaimed(actId, taskId)
local data = self:getTaskData(actId, taskId)
data.claimed = 1
self:setDirty()
end
-- 普通任务列表
function ActTaskData:getTaskSortList(actId)
local list = {}
local cfg = self:getTaskConfig()
for taskId, info in pairs(cfg) do
if info.activity == actId and info.display == 2 then
local info = {}
info.id = taskId
info._sort = 1000000 - taskId
if self:canClaimTask(actId, taskId) then
info._sort = info._sort + 100000000
end
if not self:isTaskFinished(actId, taskId) then
info._sort = info._sort + 10000000
end
table.insert(list, info)
end
end
table.sort(list, function(a, b)
-- 已完成(可领奖) > 进行中 > 已完成(已领奖) > id
return a._sort > b._sort
end)
return list
end
--endregion
--region 积分任务
function ActTaskData:getTaskIdListScore(actId)
local cfg = self:getTaskConfig()
local actTaskList = {}
for taskId, info in pairs(cfg) do
if info.activity == actId and info.display == 1 then
table.insert(actTaskList, taskId)
end
end
return actTaskList
end
function ActTaskData:addTaskProgressCallbackScore(taskType, count)
for actId, data in pairs(self.taskDataScore) do
local actTaskList = self:getTaskIdListScore(actId)
if actTaskList and actTaskList[1] then
if self:getTaskType(actTaskList[1]) == taskType then
data.score = (data.score or 0) + count
end
end
end
end
-- 添加任务进度
function ActTaskData:addTaskProgressScore(actId, taskId, count)
if not self:isTaskFinishedScore(actId, taskId) then
self.taskDataScore[actId].score = (self.taskDataScore[actId].score or 0) + count
end
self:setDirty()
end
function ActTaskData:getTaskNumScore(actId, actTaskId)
if self:getTaskDisplay(actTaskId) == 1 then
return self.taskDataScore[actId].score or 0
else
return self.taskData[actTaskId] or 0
end
end
function ActTaskData:getMaxTurnScore(actId)
return GConst.ActSprintConst.ACT_ROUND_LIMIT[actId]
end
function ActTaskData:getRewardsgetMaxTurnScore(actId)
return GConst.ActSprintConst.ACT_ROUND_REWARD[actId]
end
function ActTaskData:getHasGotTaskRewardScore(actId, actTaskId)
return self.taskDataScore[actId].round >= self:getMaxTurnScore(actId) or self.taskDataScore[actId].claimedMap[actTaskId]
end
function ActTaskData:getTaskDataScore(actId)
return self.taskDataScore[actId] or {activity_id = actId, score = 0, total_score = 0, round = 0, round_claimed = 0, claimed = {}, claimedMap = {}}
end
-- 获取任务当前进度
function ActTaskData:getTaskProgScore(actId)
local data = self:getTaskDataScore(actId)
return data and data.score or 0
end
-- 任务是否已完成
function ActTaskData:isTaskFinishedScore(actId, taskId)
return self:getTaskProgScore(actId) >= self:getTaskTarget(taskId)
end
function ActTaskData:getTurnLimitScore(actId)
local scoreLimit = 0
local list = self:getTaskIdListScore(actId)
for _, id in ipairs(list) do
local cfg = self:getTaskConfig(id)
if cfg then
if self:getTaskTarget(id) > scoreLimit then
scoreLimit = self:getTaskTarget(id)
end
end
end
return scoreLimit
end
-- 特定任务是否可领奖
function ActTaskData:getCanGetTaskRewardScore(actId, actTaskId)
if not self:getHasGotTaskRewardScore(actId, actTaskId) and self:getTaskNumScore(actId, actTaskId) >= self:getTaskTarget(actTaskId) then
return true
else
return false
end
end
function ActTaskData:getCanGetTurnRewardScore(actId)
actId = actId or self.actId
-- 当前任务全部领取 未领取当前波次奖励
if (self:getClaimedTurnScore(actId) < self:getTurnScore(actId)) then
return true
else
return false
end
end
-- 是否已经领完了全部的轮次奖励
function ActTaskData:getGotAllTurnRewardScore(actId)
local claimed = self:getClaimedTurnScore(actId) or 0
local maxTurn = self:getMaxTurnScore(actId)
return claimed >= maxTurn
end
function ActTaskData:getTurnScore(actId)
return self.taskDataScore[actId].round or 0
end
function ActTaskData:getClaimedTurnScore(actId)
return self.taskDataScore[actId].round_claimed or 0
end
-- 成功领取轮次奖励
function ActTaskData:onGetTurnRewardScore(actId)
self.taskDataScore[actId].round_claimed = (self.taskDataScore[actId].round_claimed or 0) + 1
self:setDirty()
end
function ActTaskData:getCanAnyTaskCanGetRewardScore(actId)
local taskList = self:getActTaskListScore(actId)
for _, actTaskId in ipairs(taskList) do
if self:getCanGetTaskRewardScore(actId, actTaskId) then
return true
end
end
return false
end
-- 领取任务成功
function ActTaskData:onTaskSuccessScore(actId, actTaskId)
self.taskDataScore[actId] = self.taskDataScore[actId] or {}
if actTaskId and actTaskId > 0 then
self.taskDataScore[actId].claimedMap[actTaskId] = true
else
local list = self:getTaskIdListScore(actId)
for _, id in ipairs(list) do
if self:getCanGetTaskRewardScore(actId, id) then
self.taskDataScore[actId].claimedMap[id] = true
end
end
end
-- 如果所有任务都领取了 增加轮次
local list = self:getTaskIdListScore(actId)
local isAllGot = true
for _, id in ipairs(list) do
if not self:getHasGotTaskRewardScore(actId, id) then
isAllGot = false
break
end
end
if isAllGot then
self.taskDataScore[actId].round = (self.taskDataScore[actId].round or 0) + 1
self.taskDataScore[actId].claimedMap = {}
self.taskDataScore[actId].score = self.taskDataScore[actId].score - self:getTurnLimitScore(actId)
end
self:setDirty()
end
-- 达标任务列表
function ActTaskData:getActTaskListScore(actId)
local list = {}
local cfg = self:getTaskConfig()
for taskId, info in pairs(cfg) do
if info.activity == actId and info.display == 1 then
table.insert(list, taskId)
end
end
table.sort(list, function(a, b)
-- 已完成(可领奖) > 进行中 > 已完成(已领奖) > id
local canGetA = self:getCanGetTaskRewardScore(actId, a)
local canGetB = self:getCanGetTaskRewardScore(actId, b)
if canGetA == canGetB then
local gotA = self:getHasGotTaskRewardScore(actId, a)
local gotB = self:getHasGotTaskRewardScore(actId, b)
if gotA == gotB then
return a < b
else
return gotB
end
else
return canGetA
end
end)
return list
end
--endregion
--region 任务配置
function ActTaskData:getTaskConfig(taskId)
if taskId then
return ConfigManager:getConfig("act_task")[taskId]
else
return ConfigManager:getConfig("act_task")
end
end
-- 获取任务活动id
function ActTaskData:getActId(taskId)
return self:getTaskConfig(taskId).activity
end
-- 获取任务类型
function ActTaskData:getTaskType(taskId)
return self:getTaskConfig(taskId).type
end
-- 获取任务目标
function ActTaskData:getTaskTarget(taskId)
return self:getTaskConfig(taskId).number_1
end
-- 获取任务奖励
function ActTaskData:getTaskReward(taskId)
return self:getTaskConfig(taskId).reward
end
-- 获取任务展示要求
function ActTaskData:getTaskDisplay(taskId)
return self:getTaskConfig(taskId).display
end
function ActTaskData:getTaskI18NName(taskId)
return ConfigManager:getConfig("act_task")[taskId].desc
end
--endregion
return ActTaskData

View File

@ -0,0 +1,10 @@
fileFormatVersion: 2
guid: 7a239fcdc5b3546d9ab0ccc629a86736
ScriptedImporter:
internalIDToNameTable: []
externalObjects: {}
serializedVersion: 2
userData:
assetBundleName:
assetBundleVariant:
script: {fileID: 11500000, guid: 3b8b241bab4a4ac9a22fcce9c64f1242, type: 3}

View File

@ -78,402 +78,6 @@ function ActivityData:getExchangeTime(id)
end end
--endregion --endregion
--region 任务
function ActivityData:initTaskData(scoreData, normalData)
scoreData = scoreData or {}
normalData = normalData or {}
if EDITOR_MODE then
Logger.logHighlight("活动任务数据")
Logger.printTable(scoreData)
Logger.printTable(normalData)
end
self.taskData = self.taskData or {}
self.taskDataScore = self.taskDataScore or {}
for i, info in ipairs(normalData.task_data) do
self.taskData[info.activity_id] = self.taskData[info.activity_id] or {}
self.taskData[info.activity_id][info.data.id] = info.data
end
for i, info in ipairs(scoreData.task_data) do
self.taskDataScore[info.activity_id] = self.taskDataScore[info.activity_id] or {}
self.taskDataScore[info.activity_id] = info
self.taskDataScore[info.activity_id].claimedMap = {}
for _, taskId in ipairs(info.claimed) do
self.taskDataScore[info.activity_id].claimedMap[taskId] = true
end
end
if not self.isInit then
self.isInit = true
-- 监听任务
for id, info in pairs(self:getTaskConfig()) do
ModuleManager.TaskManager:registerTask("ActivityData", info.type, function(count)
self:addTaskProgressCallback(info.type, count)
self:addTaskProgressCallbackScore(info.type, count)
end)
end
-- 跨天
DataManager:registerCrossDayFunc("ActivityData", function()
self:setDirty()
end)
end
end
--region 普通任务
function ActivityData:getTaskIdList(actId)
local cfg = self:getTaskConfig()
local actTaskList = {}
for taskId, info in pairs(cfg) do
if info.activity == actId and info.display == 2 then
table.insert(actTaskList, taskId)
end
end
return actTaskList
end
function ActivityData:addTaskProgressCallback(taskType, count)
for actId, data in pairs(self.taskData) do
for i, taskId in ipairs(self:getAllTaskIdsByActId(actId)) do
if self:getTaskType(taskId) == taskType and self:getTaskDisplay(taskId) == 2 then
self:addTaskProgress(actId, taskId, count)
end
end
end
end
-- 添加任务进度
function ActivityData:addTaskProgress(actId, taskId, count)
if not self:isTaskFinished(actId, taskId) then
local taskType = self:getTaskType(taskId)
local data = self:getTaskData(actId, taskId)
if table.containValue(GConst.TaskConst.RELPACE_TASK_TYPE, taskType) then
data.progress = math.max(data.progress or 0, count)
else
data.progress = (data.progress or 0) + count
end
end
self:setDirty()
end
function ActivityData:getTaskData(actId, taskId)
if taskId then
self.taskData[actId] = self.taskData[actId] or {}
if self.taskData[actId][taskId] == nil then
self.taskData[actId][taskId] = {id = taskId, progress = 0, claimed = 0}
end
return self.taskData[actId][taskId]
else
return self.taskData[actId]
end
end
-- 获取活动全部任务id
function ActivityData:getAllTaskIdsByActId(actId)
self.taskIds = self.taskIds or {}
if self.taskIds[actId] == nil then
self.taskIds[actId] = {}
for id, info in pairs(self:getTaskConfig()) do
if self:getActId(id) == actId then
table.insert(self.taskIds[actId], id)
end
end
table.sort(self.taskIds, function(a, b) return a.id < b.id end)
end
return self.taskIds[actId]
end
-- 获取任务当前进度
function ActivityData:getTaskProg(actId, taskId)
taskId = tonumber(taskId)
local data = self:getTaskData(actId, taskId)
return data and data.progress or 0
end
-- 任务是否已领取
function ActivityData:isTaskReceived(actId, taskId)
taskId = tonumber(taskId)
local data = self:getTaskData(actId, taskId)
return data and data.claimed and data.claimed > 0
end
-- 任务是否已完成
function ActivityData:isTaskFinished(actId, taskId)
return self:getTaskProg(actId, taskId) >= self:getTaskTarget(taskId)
end
-- 任务是否可领取
function ActivityData:canClaimTask(actId, taskId)
return self:isTaskFinished(actId, taskId) and not self:isTaskReceived(actId, taskId)
end
-- 重置任务数据
function ActivityData:resetTaskData(actId)
for taskId, data in pairs(self:getTaskData(actId)) do
data.claimed = 0
data.progress = 0
end
self:setDirty()
end
-- 领奖成功
function ActivityData:onTaskClaimed(actId, taskId)
local data = self:getTaskData(actId, taskId)
data.claimed = 1
self:setDirty()
end
-- 普通任务列表
function ActivityData:getTaskSortList(actId)
local list = {}
local cfg = self:getTaskConfig()
for taskId, info in pairs(cfg) do
if info.activity == actId and info.display == 2 then
local info = {}
info.id = taskId
info._sort = 1000000 - taskId
if self:canClaimTask(actId, taskId) then
info._sort = info._sort + 100000000
end
if not self:isTaskFinished(actId, taskId) then
info._sort = info._sort + 10000000
end
table.insert(list, info)
end
end
table.sort(list, function(a, b)
-- 已完成(可领奖) > 进行中 > 已完成(已领奖) > id
return a._sort > b._sort
end)
return list
end
--endregion
--region 积分任务
-- 达标任务
function ActivityData:getTaskIdListScore(actId)
local cfg = self:getTaskConfig()
local actTaskList = {}
for taskId, info in pairs(cfg) do
if info.activity == actId and info.display == 1 then
table.insert(actTaskList, taskId)
end
end
return actTaskList
end
function ActivityData:addTaskProgressCallbackScore(taskType, count)
for actId, data in pairs(self.taskDataScore) do
local actTaskList = self:getTaskIdListScore(actId)
if actTaskList and actTaskList[1] then
if self:getTaskType(actTaskList[1]) == taskType then
data.score = (data.score or 0) + count
end
end
end
end
-- 添加任务进度
function ActivityData:addTaskProgressScore(actId, taskId, count)
if not self:isTaskFinishedScore(actId, taskId) then
self.taskDataScore[actId].score = (self.taskDataScore[actId].score or 0) + count
end
self:setDirty()
end
function ActivityData:getTaskNumScore(actId, actTaskId)
if self:getTaskDisplay(actTaskId) == 1 then
return self.taskDataScore[actId].score or 0
else
return self.taskData[actTaskId] or 0
end
end
function ActivityData:getMaxTurnScore(actId)
return GConst.ActSprintConst.ACT_ROUND_LIMIT[actId]
end
function ActivityData:getRewardsgetMaxTurnScore(actId)
return GConst.ActSprintConst.ACT_ROUND_REWARD[actId]
end
function ActivityData:getHasGotTaskRewardScore(actId, actTaskId)
return self.taskDataScore[actId].round >= self:getMaxTurnScore(actId) or self.taskDataScore[actId].claimedMap[actTaskId]
end
function ActivityData:getTaskDataScore(actId)
return self.taskDataScore[actId] or {activity_id = actId, score = 0, total_score = 0, round = 0, round_claimed = 0, claimed = {}}
end
-- 获取任务当前进度
function ActivityData:getTaskProgScore(actId)
local data = self:getTaskDataScore(actId)
return data and data.score or 0
end
-- 任务是否已完成
function ActivityData:isTaskFinishedScore(actId, taskId)
return self:getTaskProgScore(actId) >= self:getTaskTarget(taskId)
end
function ActivityData:getTurnLimitScore(actId)
local scoreLimit = 0
local list = self:getTaskIdListScore(actId)
for _, id in ipairs(list) do
local cfg = self:getTaskConfig(id)
if cfg then
if self:getTaskTarget(id) > scoreLimit then
scoreLimit = self:getTaskTarget(id)
end
end
end
return scoreLimit
end
-- 特定任务是否可领奖
function ActivityData:getCanGetTaskRewardScore(actId, actTaskId)
if not self:getHasGotTaskRewardScore(actId, actTaskId) and self:getTaskNumScore(actId, actTaskId) >= self:getTaskTarget(actTaskId) then
return true
else
return false
end
end
function ActivityData:getCanGetTurnRewardScore(actId)
actId = actId or self.actId
-- 当前任务全部领取 未领取当前波次奖励
if (self:getClaimedTurnScore(actId) < self:getTurnScore(actId)) then
return true
else
return false
end
end
-- 是否已经领完了全部的轮次奖励
function ActivityData:getGotAllTurnRewardScore(actId)
local claimed = self:getClaimedTurnScore(actId) or 0
local maxTurn = self:getMaxTurnScore(actId)
return claimed >= maxTurn
end
function ActivityData:getTurnScore(actId)
return self.taskDataScore[actId].round or 0
end
function ActivityData:getClaimedTurnScore(actId)
return self.taskDataScore[actId].round_claimed or 0
end
-- 成功领取轮次奖励
function ActivityData:onGetTurnRewardScore(actId)
self.taskDataScore[actId].round_claimed = (self.taskDataScore[actId].round_claimed or 0) + 1
self:setDirty()
end
-- 领取任务成功
function ActivityData:onTaskSuccessScore(actId, actTaskId)
self.taskDataScore[actId] = self.taskDataScore[actId] or {}
if actTaskId and actTaskId > 0 then
self.taskDataScore[actId].claimedMap[actTaskId] = true
else
local list = self:getTaskIdListScore(actId)
for _, id in ipairs(list) do
if self:getCanGetTaskRewardScore(actId, id) then
self.taskDataScore[actId].claimedMap[id] = true
end
end
end
-- 如果所有任务都领取了 增加轮次
local list = self:getTaskIdListScore(actId)
local isAllGot = true
for _, id in ipairs(list) do
if not self:getHasGotTaskRewardScore(actId, id) then
isAllGot = false
break
end
end
if isAllGot then
self.taskDataScore[actId].round = (self.taskDataScore[actId].round or 0) + 1
self.taskDataScore[actId].claimedMap = {}
self.taskDataScore[actId].score = self.taskDataScore[actId].score - self:getTurnLimitScore(actId)
end
self:setDirty()
end
-- 达标任务列表
function ActivityData:getActTaskListScore(actId)
local list = {}
local cfg = self:getTaskConfig()
for taskId, info in pairs(cfg) do
if info.activity == actId and info.display == 1 then
table.insert(list, taskId)
end
end
table.sort(list, function(a, b)
-- 已完成(可领奖) > 进行中 > 已完成(已领奖) > id
local canGetA = self:getCanGetTaskRewardScore(actId, a)
local canGetB = self:getCanGetTaskRewardScore(actId, b)
if canGetA == canGetB then
local gotA = self:getHasGotTaskRewardScore(actId, a)
local gotB = self:getHasGotTaskRewardScore(actId, b)
if gotA == gotB then
return a < b
else
return gotB
end
else
return canGetA
end
end)
return list
end
--endregion
--endregion
--region 任务配置
function ActivityData:getTaskConfig(taskId)
if taskId then
return ConfigManager:getConfig("act_task")[taskId]
else
return ConfigManager:getConfig("act_task")
end
end
-- 获取任务活动id
function ActivityData:getActId(taskId)
return self:getTaskConfig(taskId).activity
end
-- 获取任务类型
function ActivityData:getTaskType(taskId)
return self:getTaskConfig(taskId).type
end
-- 获取任务目标
function ActivityData:getTaskTarget(taskId)
return self:getTaskConfig(taskId).number_1
end
-- 获取任务奖励
function ActivityData:getTaskReward(taskId)
return self:getTaskConfig(taskId).reward
end
-- 获取任务展示要求
function ActivityData:getTaskDisplay(taskId)
return self:getTaskConfig(taskId).display
end
function ActivityData:getTaskI18NName(taskId)
return ConfigManager:getConfig("act_task")[taskId].desc
end
--endregion
--endregion
function ActivityData:initSkipPopInfo() function ActivityData:initSkipPopInfo()
self.loginPopSkipFlag = false self.loginPopSkipFlag = false
local flag = LocalData:getSkipPopFlag() local flag = LocalData:getSkipPopFlag()