活动
This commit is contained in:
parent
869dad3cff
commit
8cf688aeae
@ -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)
|
||||||
|
|||||||
@ -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
|
||||||
|
|
||||||
|
|||||||
@ -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)
|
||||||
|
|||||||
@ -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
|
||||||
|
|||||||
@ -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
|
||||||
|
|||||||
@ -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
|
||||||
|
|||||||
@ -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()
|
||||||
|
|||||||
@ -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()
|
||||||
|
|||||||
@ -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
|
||||||
418
lua/app/userdata/activity/act_task_data.lua
Executable file
418
lua/app/userdata/activity/act_task_data.lua
Executable 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
|
||||||
10
lua/app/userdata/activity/act_task_data.lua.meta
Normal file
10
lua/app/userdata/activity/act_task_data.lua.meta
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 7a239fcdc5b3546d9ab0ccc629a86736
|
||||||
|
ScriptedImporter:
|
||||||
|
internalIDToNameTable: []
|
||||||
|
externalObjects: {}
|
||||||
|
serializedVersion: 2
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
|
script: {fileID: 11500000, guid: 3b8b241bab4a4ac9a22fcce9c64f1242, type: 3}
|
||||||
@ -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()
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user