diff --git a/lua/app/common/bi_report.lua b/lua/app/common/bi_report.lua index d51d9a47..a985e7f2 100644 --- a/lua/app/common/bi_report.lua +++ b/lua/app/common/bi_report.lua @@ -42,6 +42,15 @@ BIReport.CHAPTER_OPT_TYPE = { BOX_OPEN = "BoxOpen", } +BIReport.TASK_TYPE = { + DAILY = "Daily", +} + +BIReport.TASK_OPT_TYPE = { + FINISH = "Finish", + REWARD = "Reward", +} + BIReport.ITEM_GET_TYPE = { NEW_PLAYER_INITIAL = "NewPlayerInitial", -- 新玩家创号自带 UPGRADE_HERO = "UpgradeHero", @@ -111,6 +120,7 @@ local EVENT_NAME_ACCOUNT_OPT = "client_account_opt" local EVENT_NAME_CHAPTER_OPT = "client_chapter_opt" -- 章节 local EVENT_NAME_VIT_USE = "client_vit_use" local EVENT_NAME_VIT_GET = "client_vit_get" +local EVENT_NAME_TASK = "client_task" function BIReport:setIsNewPlayer(isNewPlayer) self.isNewPlayer = isNewPlayer @@ -686,4 +696,15 @@ function BIReport:postGemUse(num, getType, itemId) self:report(EVENT_NAME_COIN_USE, args) end +function BIReport:postDailyTaskFinish(taskType, cfgId, taskId, refresh) + local args = { + task_type = taskType, + task_id = taskId, + cfg_id = cfgId, + task_refresh = refresh, + event_type = BIReport.TASK_OPT_TYPE.FINISH, + } + self:report(EVENT_NAME_TASK, args) +end + return BIReport \ No newline at end of file diff --git a/lua/app/common/data_manager.lua b/lua/app/common/data_manager.lua index 5230acb0..8bdaccc3 100644 --- a/lua/app/common/data_manager.lua +++ b/lua/app/common/data_manager.lua @@ -15,7 +15,7 @@ function DataManager:init() self:initManager("TutorialData", "app/userdata/tutorial/tutorial_data") self:initManager("ActivityData", "app/userdata/activity/activity_data") self:initManager("GodPigData", "app/userdata/activity/god_pig/god_pig_data") - self:initManager("TaskData", "app/userdata/task/task_data") + self:initManager("DailyTaskData", "app/userdata/task/daily_task_data") self:initManager("BountyData", "app/userdata/bounty/bounty_data") -- self:initManager("IdleData", "app/userdata/idle/idle_data") -- self:initManager("SevenDayData", "app/userdata/activity/seven_day/seven_day_data") @@ -84,7 +84,7 @@ function DataManager:clear() self.ActivityData:clear() self.GodPigData:clear() self.BountyData:clear() - self.TaskData:clear() + self.DailyTaskData:clear() -- self.IdleData:clear() -- self.SevenDayData:clear() @@ -114,7 +114,7 @@ function DataManager:initWithServerData(data) self.GodPigData:init() self.BountyData:init() -- 要在BountyData之后初始化,依赖BountyData的数据 - self.TaskData:init(data.task_daily) + self.DailyTaskData:init(data.task_daily) -- self.IdleData:clear(data.IdleData) -- self.SevenDayData:init(data.SevenDayData) @@ -234,8 +234,6 @@ function DataManager:scheduleGlobal() end end end - - ModuleManager.TaskManager:addTaskProgress(GConst.TaskConst.TASK_TYPE.X_LOGIN_DAY) end end, 1) end diff --git a/lua/app/common/event_manager.lua b/lua/app/common/event_manager.lua index ab62e9e5..8ea90c2a 100644 --- a/lua/app/common/event_manager.lua +++ b/lua/app/common/event_manager.lua @@ -23,6 +23,7 @@ EventManager.CUSTOM_EVENT = { SHOW_ELIMINATION_TUTORAIL = "SHOW_ELIMINATION_TUTORAIL", BOARD_FILL_OVER = "BOARD_FILL_OVER", LOGIN_REQ_SUCCESS = "LOGIN_REQ_SUCCESS", + DAILY_TASK_ADD_PROGRESS = "DAILY_TASK_ADD_PROGRESS", -- BORAD_TOUCH_BEGIN = "BORAD_TOUCH_BEGIN", -- BORAD_TOUCH_OVER = "BORAD_TOUCH_OVER" } diff --git a/lua/app/common/module_manager.lua b/lua/app/common/module_manager.lua index df1fc7ea..dd1e18f1 100644 --- a/lua/app/common/module_manager.lua +++ b/lua/app/common/module_manager.lua @@ -12,6 +12,7 @@ local MODULE_PATHS = { -- 引导 TutorialManager = "app/module/tutorial/tutorial_manager", ToastManager = "app/ui/common/toast", + TaskToastManager = "app/ui/common/task_toast", -- 任务 TaskManager = "app/module/task/task_manager", -- 战斗 @@ -58,7 +59,7 @@ local MODULE_METATABLE = { setmetatable(ModuleManager, MODULE_METATABLE) function ModuleManager:init() - + ModuleManager.TaskManager:init() end -- 功能是否开启 diff --git a/lua/app/global/global_func.lua b/lua/app/global/global_func.lua index 1f5b7aac..98247b9a 100644 --- a/lua/app/global/global_func.lua +++ b/lua/app/global/global_func.lua @@ -344,8 +344,8 @@ function GFunc.hideCheatingBox() CheatMessageBox:hideCheatMessageBox() end -function GFunc.showToast(tab) - ModuleManager.ToastManager:showToast(tab) +function GFunc.showToast(params) + ModuleManager.ToastManager:showToast(params) end function GFunc.UiRectTransformScreenPointToLocalPointInRectangle(go, x, y) diff --git a/lua/app/module/task/task_const.lua b/lua/app/module/task/task_const.lua index b2e3734e..71a5ed73 100644 --- a/lua/app/module/task/task_const.lua +++ b/lua/app/module/task/task_const.lua @@ -1,37 +1,26 @@ local TaskConst = {} TaskConst.TASK_TYPE = { - X_KILL_MONSTER = 1, - PASS_CHAPTER = 2, - X_SUMMON = 3, - X_WATCH_AD = 4, - COMPLETED_DALY_TASK = 5, - X_LOGIN_DAY = 6, - X_WEAPON_SUMMON = 7, - X_PROTECTIVE_SUMMON = 8, - X_LEGACY_SUMMON = 9, - COMPLETED_JEWELRY_BATTLE = 10, - COMPLETED_GOLD_BATTLE = 11, - COMPLETED_MITHRIL_BATTLE = 12, - COMPLETED_CHARACTERISTIC_BATTLE = 13, - ARENA_TIER_ON = 14, - X_HOE_USE = 15, - X_BORING_CROWN_USE = 16, - X_BOOM_USE = 17, - X_RESEARCH_USE = 18, - X_MINE_GRID = 19, - X_MINE_DISTANCE = 20, - X_BLESSING_GOT = 21, - X_RUNE_GOT = 22, - X_RUNE_LV_UP = 23, - X_TRAIN_ATK = 24, - X_TRAIN_HP = 25, - X_STAGE_CHALLENGE = 26, - X_JEWELRY_BATTLE = 27, - X_GOLD_BATTLE = 28, - X_MITHRIL_BATTLE = 29, - X_CHARACTERISTIC_BATTLE = 30, - X_ARENA_CHALLENGE = 31, + X_WATCH_AD = 1, + X_GOLD_GOT = 2, + X_GEM_GOT = 3, + X_GOLD_COST = 4, + X_GEM_COST = 5, + X_OPEN_SHOP_BOX = 6, + X_OPEN_SHOP_EPIC_BOX = 7, + X_SKILL_BOX_GOT_IN_BATTLE = 8, + X_BATTLE_VICTORY = 9, + X_HERO_LV_UP = 10, + X_HERO_FRAGMENT_GOT = 11, + X_KILL_BOSS = 12, + X_KILL_MONSTER = 13, + X_ELIMINATE = 14, + X_ELIMINATE_SIX_ONCE = 15, + X_ELIMINATE_EIGHT_ONCE = 16, + X_COMBO_TEN = 17, + X_USE_SKILL = 18, + X_BATTLE_PASS_WAVE = 19, + COMPLETED_DALY_TASK = 20 } return TaskConst \ No newline at end of file diff --git a/lua/app/module/task/task_manager.lua b/lua/app/module/task/task_manager.lua index 5e8d7e4c..db893148 100644 --- a/lua/app/module/task/task_manager.lua +++ b/lua/app/module/task/task_manager.lua @@ -1,5 +1,14 @@ local TaskManager = class("TaskManager", BaseModule) +function TaskManager:init() + self:addEventListener(EventManager.CUSTOM_EVENT.DAILY_TASK_ADD_PROGRESS, function(id, taskId, from, to) + ModuleManager.TaskToastManager:showToast(id, taskId, from, to) + end) + self:addEventListener(EventManager.CUSTOM_EVENT.UI_SHOW_COMPLETE, function() + ModuleManager.TaskToastManager:checkOnOpenUI() + end) +end + function TaskManager:showTaskMainUI() UIManager:showUI("app/ui/task/task_main_ui") end @@ -16,7 +25,7 @@ end function TaskManager:onDailyTaskRefresh(result) if result.err_code == GConst.ERROR_STR.SUCCESS then if result.task then - DataManager.TaskData:refreshDailyTask(result.task) + DataManager.DailyTaskData:refreshDailyTask(result.task) end end end @@ -31,7 +40,7 @@ end function TaskManager:onDailyTaskClaim(result) if result.err_code == GConst.ERROR_STR.SUCCESS then if result.task then - DataManager.TaskData:refreshDailyTask(result.task) + DataManager.DailyTaskData:refreshDailyTask(result.task) end if result.rewards then GFunc.showRewardBox(result.rewards) @@ -117,28 +126,6 @@ function TaskManager:xKillMonster(params) self:dispatchTask(GConst.TaskConst.TASK_TYPE.X_KILL_MONSTER, num) end -function TaskManager:passChapter() - local id = DataManager.ChapterData:getHistoryChapterId() - self:dispatchTask(GConst.TaskConst.TASK_TYPE.PASS_CHAPTER, id) -end - -function TaskManager:xSummon(params) - local num = params.num - local cfgId = params.cfgId - if not num then - return - end - - self:dispatchTask(GConst.TaskConst.TASK_TYPE.X_SUMMON, num) - if cfgId == ModuleManager.SummonManager.WEAPON_SUMMON then - self:dispatchTask(GConst.TaskConst.TASK_TYPE.X_WEAPON_SUMMON, num) - elseif cfgId == ModuleManager.SummonManager.PROTECTIVE_SUMMON then - self:dispatchTask(GConst.TaskConst.TASK_TYPE.X_PROTECTIVE_SUMMON, num) - elseif cfgId == ModuleManager.SummonManager.LEGACY_SUMMON then - self:dispatchTask(GConst.TaskConst.TASK_TYPE.X_LEGACY_SUMMON, num) - end -end - function TaskManager:xWatchAd(params) self:dispatchTask(GConst.TaskConst.TASK_TYPE.X_WATCH_AD, 1) end @@ -147,152 +134,11 @@ function TaskManager:completeDailyTask() self:dispatchTask(GConst.TaskConst.TASK_TYPE.COMPLETED_DALY_TASK, 1) end -function TaskManager:xLoginDay() - self:dispatchTask(GConst.TaskConst.TASK_TYPE.X_LOGIN_DAY, 1) -end - -function TaskManager:arenaTierOn(params) - local segement = params.segement - self:dispatchTask(GConst.TaskConst.TASK_TYPE.ARENA_TIER_ON, segement) -end - -function TaskManager:xHoeUse(params) - local num = params.num - if not num then - return - end - - self:dispatchTask(GConst.TaskConst.TASK_TYPE.X_HOE_USE, num) -end - -function TaskManager:xboringCrownUse(params) - local num = params.num - if not num then - return - end - - self:dispatchTask(GConst.TaskConst.TASK_TYPE.X_BORING_CROWN_USE, num) -end - -function TaskManager:xBoomUse(params) - local num = params.num - if not num then - return - end - - self:dispatchTask(GConst.TaskConst.TASK_TYPE.X_BOOM_USE, num) -end - -function TaskManager:xResearchUse(params) - local count = DataManager.ResearchData:getResearchCount() - self:dispatchTask(GConst.TaskConst.TASK_TYPE.X_RESEARCH_USE, 1) -end - -function TaskManager:xMineGrid(params) - local num = params.num - self:dispatchTask(GConst.TaskConst.TASK_TYPE.X_MINE_GRID, num) -end - -function TaskManager:xMineDistance(params) - local distance = DataManager.MiningData:getDepth() - self:dispatchTask(GConst.TaskConst.TASK_TYPE.X_MINE_DISTANCE, distance) -end - -function TaskManager:xBlessingGot(params) - self:dispatchTask(GConst.TaskConst.TASK_TYPE.X_BLESSING_GOT, 1) -end - -function TaskManager:xRuneGot(params) - local runeList = params.runeList - if not runeList then - return - end - - local count = #runeList - self:dispatchTask(GConst.TaskConst.TASK_TYPE.X_RUNE_GOT, count) -end - -function TaskManager:xRuneLvUp(params) - self:dispatchTask(GConst.TaskConst.TASK_TYPE.X_RUNE_LV_UP, 1) -end - -function TaskManager:xTrainAtk(params) - local num = params.count - if not num then - return - end - - self:dispatchTask(GConst.TaskConst.TASK_TYPE.X_TRAIN_ATK, num) -end - -function TaskManager:xTrainHp(params) - local num = params.count - if not num then - return - end - - self:dispatchTask(GConst.TaskConst.TASK_TYPE.X_TRAIN_HP, num) -end - -function TaskManager:xStageChallenge(params) - self:dispatchTask(GConst.TaskConst.TASK_TYPE.X_STAGE_CHALLENGE, 1) -end - -function TaskManager:onDungenBattle(params) - local id = params.id - local maxLevel = DataManager.DungeonData:getPassedMaxLevel(id) - if id == 1 then - self:dispatchTask(GConst.TaskConst.TASK_TYPE.X_GOLD_BATTLE, 1) - self:dispatchTask(GConst.TaskConst.TASK_TYPE.COMPLETED_GOLD_BATTLE, maxLevel) - elseif id == 2 then - self:dispatchTask(GConst.TaskConst.TASK_TYPE.X_JEWELRY_BATTLE, 1) - self:dispatchTask(GConst.TaskConst.TASK_TYPE.COMPLETED_JEWELRY_BATTLE, maxLevel) - elseif id == 3 then - self:dispatchTask(GConst.TaskConst.TASK_TYPE.X_MITHRIL_BATTLE, 1) - self:dispatchTask(GConst.TaskConst.TASK_TYPE.COMPLETED_MITHRIL_BATTLE, maxLevel) - elseif id == 4 then - self:dispatchTask(GConst.TaskConst.TASK_TYPE.X_CHARACTERISTIC_BATTLE, 1) - self:dispatchTask(GConst.TaskConst.TASK_TYPE.COMPLETED_CHARACTERISTIC_BATTLE, maxLevel) - end -end - -function TaskManager:xArenaChallenge(params) - self:dispatchTask(GConst.TaskConst.TASK_TYPE.X_ARENA_CHALLENGE, 1) -end - ---- 没有特殊说明,方法均返回任务增量 TaskManager.TYPE_DEAL_FUNC = { [GConst.TaskConst.TASK_TYPE.X_KILL_MONSTER] = TaskManager.xKillMonster, - [GConst.TaskConst.TASK_TYPE.PASS_CHAPTER] = TaskManager.passChapter, - [GConst.TaskConst.TASK_TYPE.X_SUMMON] = TaskManager.xSummon, [GConst.TaskConst.TASK_TYPE.X_WATCH_AD] = TaskManager.xWatchAd, [GConst.TaskConst.TASK_TYPE.COMPLETED_DALY_TASK] = TaskManager.completeDailyTask, - [GConst.TaskConst.TASK_TYPE.X_LOGIN_DAY] = TaskManager.xLoginDay, - [GConst.TaskConst.TASK_TYPE.X_WEAPON_SUMMON] = TaskManager.xSummon, - [GConst.TaskConst.TASK_TYPE.X_PROTECTIVE_SUMMON] = TaskManager.xSummon, - [GConst.TaskConst.TASK_TYPE.X_LEGACY_SUMMON] = TaskManager.xSummon, - [GConst.TaskConst.TASK_TYPE.COMPLETED_JEWELRY_BATTLE] = TaskManager.onDungenBattle, - [GConst.TaskConst.TASK_TYPE.COMPLETED_GOLD_BATTLE] = TaskManager.onDungenBattle, - [GConst.TaskConst.TASK_TYPE.COMPLETED_MITHRIL_BATTLE] = TaskManager.onDungenBattle, - [GConst.TaskConst.TASK_TYPE.COMPLETED_CHARACTERISTIC_BATTLE] = TaskManager.onDungenBattle, - [GConst.TaskConst.TASK_TYPE.ARENA_TIER_ON] = TaskManager.arenaTierOn, - [GConst.TaskConst.TASK_TYPE.X_HOE_USE] = TaskManager.xHoeUse, - [GConst.TaskConst.TASK_TYPE.X_BORING_CROWN_USE] = TaskManager.xboringCrownUse, - [GConst.TaskConst.TASK_TYPE.X_BOOM_USE] = TaskManager.xBoomUse, - [GConst.TaskConst.TASK_TYPE.X_RESEARCH_USE] = TaskManager.xResearchUse, - [GConst.TaskConst.TASK_TYPE.X_MINE_GRID] = TaskManager.xMineGrid, - [GConst.TaskConst.TASK_TYPE.X_MINE_DISTANCE] = TaskManager.xMineDistance, - [GConst.TaskConst.TASK_TYPE.X_BLESSING_GOT] = TaskManager.xBlessingGot, - [GConst.TaskConst.TASK_TYPE.X_RUNE_GOT] = TaskManager.xRuneGot, - [GConst.TaskConst.TASK_TYPE.X_RUNE_LV_UP] = TaskManager.xRuneLvUp, - [GConst.TaskConst.TASK_TYPE.X_TRAIN_ATK] = TaskManager.xTrainAtk, - [GConst.TaskConst.TASK_TYPE.X_TRAIN_HP] = TaskManager.xTrainHp, - [GConst.TaskConst.TASK_TYPE.X_STAGE_CHALLENGE] = TaskManager.xStageChallenge, - [GConst.TaskConst.TASK_TYPE.X_JEWELRY_BATTLE] = TaskManager.onDungenBattle, - [GConst.TaskConst.TASK_TYPE.X_GOLD_BATTLE] = TaskManager.onDungenBattle, - [GConst.TaskConst.TASK_TYPE.X_MITHRIL_BATTLE] = TaskManager.onDungenBattle, - [GConst.TaskConst.TASK_TYPE.X_CHARACTERISTIC_BATTLE] = TaskManager.onDungenBattle, - [GConst.TaskConst.TASK_TYPE.X_ARENA_CHALLENGE] = TaskManager.xArenaChallenge, } function TaskManager:taskGoto(taskType) @@ -305,52 +151,8 @@ function TaskManager:gotoMainUI() ModuleManager.MaincityManager:showMainCityUI() end -function TaskManager:gotoSummonUI() - EventManager:dispatchEvent(EventManager.CUSTOM_EVENT.CHANGE_MAIN_CITY_PAGE, {page = GConst.MainCityConst.BOTTOM_PAGE.SHOP, storeIdx = 1}) -end - -function TaskManager:gotoSectUI() - EventManager:dispatchEvent(EventManager.CUSTOM_EVENT.CHANGE_MAIN_CITY_PAGE, {page = GConst.MainCityConst.BOTTOM_PAGE.SECT}) -end - -function TaskManager:gotoDungenUI() - EventManager:dispatchEvent(EventManager.CUSTOM_EVENT.CHANGE_MAIN_CITY_PAGE, {page = GConst.MainCityConst.BOTTOM_PAGE.DUNGEON}) -end - -function TaskManager:gotoTarinUI() - EventManager:dispatchEvent(EventManager.CUSTOM_EVENT.CHANGE_MAIN_CITY_PAGE, {page = GConst.MainCityConst.BOTTOM_PAGE.TRAIN}) -end - TaskManager.gotoFunc = { [GConst.TaskConst.TASK_TYPE.X_KILL_MONSTER] = TaskManager.gotoMainUI, - [GConst.TaskConst.TASK_TYPE.PASS_CHAPTER] = TaskManager.gotoMainUI, - [GConst.TaskConst.TASK_TYPE.X_SUMMON] = TaskManager.gotoSummonUI, - [GConst.TaskConst.TASK_TYPE.X_WATCH_AD] = TaskManager.gotoSummonUI, - [GConst.TaskConst.TASK_TYPE.X_WEAPON_SUMMON] = TaskManager.gotoSummonUI, - [GConst.TaskConst.TASK_TYPE.X_PROTECTIVE_SUMMON] = TaskManager.gotoSummonUI, - [GConst.TaskConst.TASK_TYPE.X_LEGACY_SUMMON] = TaskManager.gotoSummonUI, - [GConst.TaskConst.TASK_TYPE.COMPLETED_JEWELRY_BATTLE] = TaskManager.gotoDungenUI, - [GConst.TaskConst.TASK_TYPE.COMPLETED_GOLD_BATTLE] = TaskManager.gotoDungenUI, - [GConst.TaskConst.TASK_TYPE.COMPLETED_MITHRIL_BATTLE] = TaskManager.gotoDungenUI, - [GConst.TaskConst.TASK_TYPE.COMPLETED_CHARACTERISTIC_BATTLE] = TaskManager.gotoDungenUI, - [GConst.TaskConst.TASK_TYPE.ARENA_TIER_ON] = TaskManager.gotoDungenUI, - [GConst.TaskConst.TASK_TYPE.X_HOE_USE] = TaskManager.gotoSectUI, - [GConst.TaskConst.TASK_TYPE.X_BORING_CROWN_USE] = TaskManager.gotoSectUI, - [GConst.TaskConst.TASK_TYPE.X_BOOM_USE] = TaskManager.gotoSectUI, - [GConst.TaskConst.TASK_TYPE.X_RESEARCH_USE] = TaskManager.gotoSectUI, - [GConst.TaskConst.TASK_TYPE.X_MINE_GRID] = TaskManager.gotoSectUI, - -- [GConst.TaskConst.TASK_TYPE.X_MINE_DISTANCE] = TaskManager.gotoMainUI, - -- [GConst.TaskConst.TASK_TYPE.X_BLESSING_GOT] = TaskManager.gotoMainUI, - -- [GConst.TaskConst.TASK_TYPE.X_RUNE_GOT] = TaskManager.gotoMainUI, - -- [GConst.TaskConst.TASK_TYPE.X_RUNE_LV_UP] = TaskManager.gotoMainUI, - [GConst.TaskConst.TASK_TYPE.X_TRAIN_ATK] = TaskManager.gotoTarinUI, - [GConst.TaskConst.TASK_TYPE.X_TRAIN_HP] = TaskManager.gotoTarinUI, - -- [GConst.TaskConst.TASK_TYPE.X_STAGE_CHALLENGE] = TaskManager.gotoMainUI, - -- [GConst.TaskConst.TASK_TYPE.X_JEWELRY_BATTLE] = TaskManager.gotoMainUI, - -- [GConst.TaskConst.TASK_TYPE.X_GOLD_BATTLE] = TaskManager.gotoMainUI, - -- [GConst.TaskConst.TASK_TYPE.X_MITHRIL_BATTLE] = TaskManager.gotoMainUI, - -- [GConst.TaskConst.TASK_TYPE.X_CHARACTERISTIC_BATTLE] = TaskManager.gotoMainUI, - -- [GConst.TaskConst.TASK_TYPE.X_ARENA_CHALLENGE] = TaskManager.gotoMainUI, } function TaskManager:getTaskDesc(type, count, totalCount) @@ -359,17 +161,7 @@ function TaskManager:getTaskDesc(type, count, totalCount) return GConst.EMPTY_STRING end - local str = GConst.EMPTY_STRING - if type == GConst.TaskConst.TASK_TYPE.PASS_CHAPTER or - type == GConst.TaskConst.TASK_TYPE.COMPLETED_JEWELRY_BATTLE or - type == GConst.TaskConst.TASK_TYPE.COMPLETED_GOLD_BATTLE or - type == GConst.TaskConst.TASK_TYPE.COMPLETED_MITHRIL_BATTLE or - type == GConst.TaskConst.TASK_TYPE.COMPLETED_CHARACTERISTIC_BATTLE - then - str = totalCount - else - str = "(" .. count .. "/" .. totalCount .. ")" - end + local str = "(" .. count .. "/" .. totalCount .. ")" return I18N:getText("task", type, "desc", str) end @@ -379,20 +171,11 @@ function TaskManager:getTaskTutorialDesc(type, count, totalCount) return GConst.EMPTY_STRING end - local endStr = GConst.EMPTY_STRING - if type == GConst.TaskConst.TASK_TYPE.PASS_CHAPTER or - type == GConst.TaskConst.TASK_TYPE.COMPLETED_JEWELRY_BATTLE or - type == GConst.TaskConst.TASK_TYPE.COMPLETED_GOLD_BATTLE or - type == GConst.TaskConst.TASK_TYPE.COMPLETED_MITHRIL_BATTLE or - type == GConst.TaskConst.TASK_TYPE.COMPLETED_CHARACTERISTIC_BATTLE - then - endStr = totalCount + local endStr + if count then + endStr = "(" .. count .. "/" .. totalCount .. ")" else - if count then - endStr = "(" .. count .. "/" .. totalCount .. ")" - else - endStr = "(" .. totalCount .. ")" - end + endStr = "(" .. totalCount .. ")" end local str = I18N:getText("task", type, "tutorial_desc") .. endStr diff --git a/lua/app/ui/common/task_toast.lua b/lua/app/ui/common/task_toast.lua new file mode 100644 index 00000000..092d7302 --- /dev/null +++ b/lua/app/ui/common/task_toast.lua @@ -0,0 +1,182 @@ +local TaskToastManager = class("TaskToastManager", BaseModule) + +function TaskToastManager:ctor() + self.toastList = {} +end + +function TaskToastManager:clear() +end + +function TaskToastManager:checkOnOpenUI() + if #self.toastList <= 0 then + return + end + local topUIObj = UIManager:getTopUIObj() + if topUIObj then + if self:checkUnshowUI(topUIObj) then + self:closeToast() + end + end +end + +function TaskToastManager:checkUnshowUI(uiObj) + local uiIndex = uiObj:getUIIndex() + if uiIndex == UIManager.UI_PATH.BATTLE_UI then + return true + end + return false +end + +function TaskToastManager:showToast(id, taskId, from, to) + local topUIObj = UIManager:getTopUIObj() + if topUIObj then + if self:checkUnshowUI(topUIObj) then + return + end + end + local params = { + id = id, + taskId = taskId, + from = from, + to = to + } + table.insert(self.toastList, params) + if #self.toastList == 1 then + self:_showToast() + end +end + +function TaskToastManager:_showToast() + local params = self.toastList[1] + if params == nil then + return + end + UIManager:getTaskToast(function(prefabObject) + local uiMap = prefabObject:genAllChildren() + local lockBg = uiMap["task_toast.lock_bg"] + local icon = uiMap["task_toast.icon"] + local nameTx = uiMap["task_toast.name_tx"] + local progressComp = uiMap["task_toast.progress_bg.progress"]:getComponent(GConst.TYPEOF_UNITY_CLASS.BF_SLIDER) + local progressTx = uiMap["task_toast.progress_bg.progress_tx"] + local rewardCellComp = uiMap["task_toast.reward_cell"]:addLuaComponent(GConst.TYPEOF_LUA_CLASS.REWARD_CELL) + + local dailyTaskInfo = ConfigManager:getConfig("task_daily")[params.id] + if dailyTaskInfo == nil then + return self:onFinish() + end + if dailyTaskInfo.bounty then + lockBg:setVisible(true) + else + lockBg:setVisible(false) + end + local taskInfo = ConfigManager:getConfig("task")[params.taskId] + if taskInfo == nil then + return self:onFinish() + end + icon:setSprite(GConst.ATLAS_PATH.ICON_TASK, taskInfo.icon) + + local taskI18NInfo = I18N:getConfig("task")[params.taskId] + if taskI18NInfo == nil then + return self:onFinish() + end + nameTx:setText(taskI18NInfo.desc) + local reward = taskInfo.reward + if reward and reward[1] then + rewardCellComp:refreshByConfig(reward[1]) + end + + if self.sliderSequence then + self.sliderSequence:Kill() + end + self.sliderSequence = DOTweenManager:createSeqWithIntId() + local curProgress = 0 + local from = params.from + local to = params.to + local last = to - from + local startPercent = params.from / params.to + local lastPercent = 1 - startPercent + progressComp.value = from / to + progressTx:setText(from .. "/" .. to) + local tween = DOTweenManager:createDOTweenTo( + function() + return curProgress + end, + function(value) + curProgress = value + progressComp.value = startPercent + lastPercent*curProgress + progressTx:setText(from + math.floor(last*curProgress) .. "/" .. to) + end, + 1, 1) + self.sliderSequence:Append(tween) + self.sliderSequence:AppendCallback(function() + self.sliderSequence = nil + end) + + local notchHeight = SafeAreaManager:getNotchScreenHeight() + prefabObject:setAnchoredPositionY(-notchHeight) + prefabObject:getComponent(GConst.TYPEOF_UNITY_CLASS.CANVAS).enabled = true + + if self.toastSequence == nil then + self.toastSequence = DOTweenManager:createSeqWithIntId() + self.toastSequence:AppendInterval(2) + self.toastSequence:AppendCallback(function() + self:onFinish() + end) + self.toastSequence:SetAutoKill(false) + else + self.toastSequence:Restart() + end + end) +end + +function TaskToastManager:refreshText() + if #self.toastList <= 0 then + return + end + if self.toastSequence then + self.toastSequence:Pause() + end + if self.sliderSequence then + self.sliderSequence:Kill() + self.sliderSequence = nil + end + self:onFinish() +end + +function TaskToastManager:closeToast() + if #self.toastList <= 0 then + return + end + if self.toastSequence then + self.toastSequence:Pause() + end + if self.sliderSequence then + self.sliderSequence:Kill() + self.sliderSequence = nil + end + UIManager:getTaskToast(function(prefabObject) + prefabObject:getComponent(GConst.TYPEOF_UNITY_CLASS.CANVAS).enabled = false + end) + for i = 1, #self.toastList do + table.remove(self.toastList) + end +end + +function TaskToastManager:onFinish() + if #self.toastList <= 0 then + UIManager:getTaskToast(function(prefabObject) + prefabObject:getComponent(GConst.TYPEOF_UNITY_CLASS.CANVAS).enabled = false + end) + return + end + table.remove(self.toastList, 1) + if #self.toastList > 0 then + self:_showToast() + else + UIManager:getTaskToast(function(prefabObject) + prefabObject:getComponent(GConst.TYPEOF_UNITY_CLASS.CANVAS).enabled = false + end) + end +end + +return TaskToastManager \ No newline at end of file diff --git a/lua/app/userdata/task/task_data.lua.meta b/lua/app/ui/common/task_toast.lua.meta similarity index 86% rename from lua/app/userdata/task/task_data.lua.meta rename to lua/app/ui/common/task_toast.lua.meta index 14c7deda..27e37843 100644 --- a/lua/app/userdata/task/task_data.lua.meta +++ b/lua/app/ui/common/task_toast.lua.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 2a8741d6d926b6848be6dea53c501674 +guid: 34e0461139b4c0f41a6c701479808938 ScriptedImporter: internalIDToNameTable: [] externalObjects: {} diff --git a/lua/app/ui/main_city/main_city_ui.lua b/lua/app/ui/main_city/main_city_ui.lua index 88eca47e..74415e70 100644 --- a/lua/app/ui/main_city/main_city_ui.lua +++ b/lua/app/ui/main_city/main_city_ui.lua @@ -453,7 +453,7 @@ function MainCityUI:refreshBounty() end function MainCityUI:refreshTask() - local isOpen = DataManager.TaskData:getIsOpen() + local isOpen = DataManager.DailyTaskData:getIsOpen() if not isOpen then self.taskBtn:setVisible(false) return diff --git a/lua/app/ui/task/cell/daily_task_cell.lua b/lua/app/ui/task/cell/daily_task_cell.lua index 551ee6b0..7f10bd70 100644 --- a/lua/app/ui/task/cell/daily_task_cell.lua +++ b/lua/app/ui/task/cell/daily_task_cell.lua @@ -40,9 +40,9 @@ end function DailyTaskCell:refresh(task) self.taskId = task.id - local icon = DataManager.TaskData:getDailyTaskIcon(task.id) + local icon = DataManager.DailyTaskData:getDailyTaskIcon(task.id) self.icon:setSprite(GConst.ATLAS_PATH.ICON_TASK, icon) - local taskDesc = DataManager.TaskData:getDailyTaskDesc(task.id) + local taskDesc = DataManager.DailyTaskData:getDailyTaskDesc(task.id) self.nameTx:setText(taskDesc) if task.lock then @@ -77,7 +77,7 @@ function DailyTaskCell:refresh(task) self.refreshBtn:setVisible(false) else self.getBtn:setVisible(false) - local canRefresh = DataManager.TaskData:getDailyTaskCanRefresh(task.id) + local canRefresh = DataManager.DailyTaskData:getDailyTaskCanRefresh(task.id) if canRefresh then if task.refresh then -- 刷过了 self.refreshBtn:setVisible(false) @@ -92,7 +92,7 @@ function DailyTaskCell:refresh(task) self.progressTx:setText(count .. "/" .. needCount) self.progress:getComponent(GConst.TYPEOF_UNITY_CLASS.BF_SLIDER).value = count/needCount end - local reward = DataManager.TaskData:getDailyTaskReward(task.id) + local reward = DataManager.DailyTaskData:getDailyTaskReward(task.id) if reward and reward[1] then self.rewardCellComp:refreshByConfig(reward[1]) end diff --git a/lua/app/ui/task/task_main_ui.lua b/lua/app/ui/task/task_main_ui.lua index 253e099f..21405fb0 100644 --- a/lua/app/ui/task/task_main_ui.lua +++ b/lua/app/ui/task/task_main_ui.lua @@ -37,9 +37,9 @@ function TaskMainUI:ctor(params) self.page = params and params.page or PAGE_DAILY self.dailyTaskList = {} self.challengeTaskList = {} - local taskAdId = DataManager.TaskData:getDailyTaskAdId() - local taskFinalId = DataManager.TaskData:getDailyTaskFinalId() - local dailyTasks = DataManager.TaskData:getDailyTasks() + local taskAdId = DataManager.DailyTaskData:getDailyTaskAdId() + local taskFinalId = DataManager.DailyTaskData:getDailyTaskFinalId() + local dailyTasks = DataManager.DailyTaskData:getDailyTasks() for k, v in pairs(dailyTasks) do if k ~= taskAdId and k ~= taskFinalId then if v.type == TASK_TYPE_DAILY then @@ -172,7 +172,7 @@ function TaskMainUI:initCountDown() end function TaskMainUI:bindData() - self:bind(DataManager.TaskData, "dailyTaskDirty", function() + self:bind(DataManager.DailyTaskData, "dailyTaskDirty", function() self:onRefresh() end) end @@ -209,10 +209,10 @@ function TaskMainUI:refreshDaily() end function TaskMainUI:refreshDailyTaskAdCell() - local taskId = DataManager.TaskData:getDailyTaskAdId() - local taskDesc = DataManager.TaskData:getDailyTaskDesc(taskId) + local taskId = DataManager.DailyTaskData:getDailyTaskAdId() + local taskDesc = DataManager.DailyTaskData:getDailyTaskDesc(taskId) self.dailyTaskAdCellNameTx:setText(taskDesc) - local count, needCount = DataManager.TaskData:getDailyTaskProgress(taskId) + local count, needCount = DataManager.DailyTaskData:getDailyTaskProgress(taskId) if count > needCount then count = needCount end @@ -221,10 +221,10 @@ function TaskMainUI:refreshDailyTaskAdCell() end function TaskMainUI:refreshDailyTaskFinalCell() - local taskId = DataManager.TaskData:getDailyTaskFinalId() - local taskDesc = DataManager.TaskData:getDailyTaskDesc(taskId) + local taskId = DataManager.DailyTaskData:getDailyTaskFinalId() + local taskDesc = DataManager.DailyTaskData:getDailyTaskDesc(taskId) self.dailyTaskFinalCellNameTx:setText(taskDesc) - local count, needCount = DataManager.TaskData:getDailyTaskProgress(taskId) + local count, needCount = DataManager.DailyTaskData:getDailyTaskProgress(taskId) if count > needCount then count = needCount end @@ -259,7 +259,7 @@ function TaskMainUI:showHelp() end function TaskMainUI:updateTime() - local time = DataManager.TaskData:getDailyResetTime() + local time = DataManager.DailyTaskData:getDailyResetTime() if self.resetTime == time then return end diff --git a/lua/app/ui/ui_manager.lua b/lua/app/ui/ui_manager.lua index c8304f50..7a9e3ed1 100644 --- a/lua/app/ui/ui_manager.lua +++ b/lua/app/ui/ui_manager.lua @@ -710,23 +710,36 @@ function UIManager:getToast(callback) end end +function UIManager:getTaskToast(callback) + if self.taskToast == nil then + UIPrefabManager:loadUIWidgetAsync("assets/prefabs/ui/common/task_toast.prefab", self.toastNode, function (_prefabObject) + _prefabObject:initPrefabHelper() + self.taskToast = _prefabObject + callback(_prefabObject) + end) + else + callback(self.taskToast) + end +end + function UIManager:getAllToast() return self.toastPool end function UIManager:hideToast() - if not self.toastPool then - return - end - - ModuleManager.ToastManager:clear() - for i, toastObj in ipairs(self.toastPool) do - if toastObj._toastSequence then - toastObj._toastSequence:Kill() - toastObj._toastSequence = nil + if self.toastPool then + ModuleManager.ToastManager:clear() + for i, toastObj in ipairs(self.toastPool) do + if toastObj._toastSequence then + toastObj._toastSequence:Kill() + toastObj._toastSequence = nil + end + toastObj._using = false + toastObj:getComponent(GConst.TYPEOF_UNITY_CLASS.CANVAS).enabled = false end - toastObj._using = false - toastObj:getComponent(GConst.TYPEOF_UNITY_CLASS.CANVAS).enabled = false + end + if self.taskToast then + ModuleManager.ToastManager:clear() end end @@ -1145,6 +1158,7 @@ function UIManager:refreshOnChangeLanguage() MessageBox:refreshText(true) end ModuleManager.ToastManager:refreshText() + ModuleManager.TaskToastManager:refreshText() end if EDITOR_MODE then diff --git a/lua/app/userdata/activity/seven_day/seven_day_data.lua b/lua/app/userdata/activity/seven_day/seven_day_data.lua index b0f96322..24694cfa 100644 --- a/lua/app/userdata/activity/seven_day/seven_day_data.lua +++ b/lua/app/userdata/activity/seven_day/seven_day_data.lua @@ -368,131 +368,6 @@ function SevenDayData:showRedPoint(day) end function SevenDayData:initTaskListener() - ModuleManager.TaskManager:registerTask("SevenDayData", GConst.TaskConst.TASK_TYPE.PASS_CHAPTER, function(count) - local list = self:getTaskListByType(GConst.TaskConst.TASK_TYPE.PASS_CHAPTER) - for _, id in ipairs(list) do - self:setTaskProgress(id, count) - end - end) - - ModuleManager.TaskManager:registerTask("SevenDayData", GConst.TaskConst.TASK_TYPE.X_WATCH_AD, function(count) - local list = self:getTaskListByType(GConst.TaskConst.TASK_TYPE.X_WATCH_AD) - for _, id in ipairs(list) do - self:addTaskProgress(id, count) - end - end) - - ModuleManager.TaskManager:registerTask("SevenDayData", GConst.TaskConst.TASK_TYPE.X_LOGIN_DAY, function(count) - local list = self:getTaskListByType(GConst.TaskConst.TASK_TYPE.X_LOGIN_DAY) - for _, id in ipairs(list) do - self:addTaskProgress(id, count) - end - end) - - ModuleManager.TaskManager:registerTask("SevenDayData", GConst.TaskConst.TASK_TYPE.X_WEAPON_SUMMON, function(count) - local list = self:getTaskListByType(GConst.TaskConst.TASK_TYPE.X_WEAPON_SUMMON) - for _, id in ipairs(list) do - self:addTaskProgress(id, count) - end - end) - - ModuleManager.TaskManager:registerTask("SevenDayData", GConst.TaskConst.TASK_TYPE.X_PROTECTIVE_SUMMON, function(count) - local list = self:getTaskListByType(GConst.TaskConst.TASK_TYPE.X_PROTECTIVE_SUMMON) - for _, id in ipairs(list) do - self:addTaskProgress(id, count) - end - end) - - ModuleManager.TaskManager:registerTask("SevenDayData", GConst.TaskConst.TASK_TYPE.X_LEGACY_SUMMON, function(count) - local list = self:getTaskListByType(GConst.TaskConst.TASK_TYPE.X_LEGACY_SUMMON) - for _, id in ipairs(list) do - self:addTaskProgress(id, count) - end - end) - - ModuleManager.TaskManager:registerTask("SevenDayData", GConst.TaskConst.TASK_TYPE.COMPLETED_JEWELRY_BATTLE, function(count) - local list = self:getTaskListByType(GConst.TaskConst.TASK_TYPE.COMPLETED_JEWELRY_BATTLE) - for _, id in ipairs(list) do - self:setTaskProgress(id, count) - end - end) - - ModuleManager.TaskManager:registerTask("SevenDayData", GConst.TaskConst.TASK_TYPE.COMPLETED_GOLD_BATTLE, function(count) - local list = self:getTaskListByType(GConst.TaskConst.TASK_TYPE.COMPLETED_GOLD_BATTLE) - for _, id in ipairs(list) do - self:setTaskProgress(id, count) - end - end) - - ModuleManager.TaskManager:registerTask("SevenDayData", GConst.TaskConst.TASK_TYPE.COMPLETED_MITHRIL_BATTLE, function(count) - local list = self:getTaskListByType(GConst.TaskConst.TASK_TYPE.COMPLETED_MITHRIL_BATTLE) - for _, id in ipairs(list) do - self:setTaskProgress(id, count) - end - end) - - ModuleManager.TaskManager:registerTask("SevenDayData", GConst.TaskConst.TASK_TYPE.X_HOE_USE, function(count) - local list = self:getTaskListByType(GConst.TaskConst.TASK_TYPE.X_HOE_USE) - for _, id in ipairs(list) do - self:addTaskProgress(id, count) - end - end) - - ModuleManager.TaskManager:registerTask("SevenDayData", GConst.TaskConst.TASK_TYPE.X_BORING_CROWN_USE, function(count) - local list = self:getTaskListByType(GConst.TaskConst.TASK_TYPE.X_BORING_CROWN_USE) - for _, id in ipairs(list) do - self:addTaskProgress(id, count) - end - end) - - ModuleManager.TaskManager:registerTask("SevenDayData", GConst.TaskConst.TASK_TYPE.X_BOOM_USE, function(count) - local list = self:getTaskListByType(GConst.TaskConst.TASK_TYPE.X_BOOM_USE) - for _, id in ipairs(list) do - self:addTaskProgress(id, count) - end - end) - - ModuleManager.TaskManager:registerTask("SevenDayData", GConst.TaskConst.TASK_TYPE.X_RESEARCH_USE, function(count) - local list = self:getTaskListByType(GConst.TaskConst.TASK_TYPE.X_RESEARCH_USE) - for _, id in ipairs(list) do - self:addTaskProgress(id, count) - end - end) - - ModuleManager.TaskManager:registerTask("SevenDayData", GConst.TaskConst.TASK_TYPE.X_MINE_DISTANCE, function(count) - local list = self:getTaskListByType(GConst.TaskConst.TASK_TYPE.X_MINE_DISTANCE) - for _, id in ipairs(list) do - self:setTaskProgress(id, count) - end - end) - - ModuleManager.TaskManager:registerTask("SevenDayData", GConst.TaskConst.TASK_TYPE.X_BLESSING_GOT, function(count) - local list = self:getTaskListByType(GConst.TaskConst.TASK_TYPE.X_BLESSING_GOT) - for _, id in ipairs(list) do - self:addTaskProgress(id, count) - end - end) - - ModuleManager.TaskManager:registerTask("SevenDayData", GConst.TaskConst.TASK_TYPE.X_RUNE_GOT, function(count) - local list = self:getTaskListByType(GConst.TaskConst.TASK_TYPE.X_RUNE_GOT) - for _, id in ipairs(list) do - self:addTaskProgress(id, count) - end - end) - - ModuleManager.TaskManager:registerTask("SevenDayData", GConst.TaskConst.TASK_TYPE.X_TRAIN_ATK, function(count) - local list = self:getTaskListByType(GConst.TaskConst.TASK_TYPE.X_TRAIN_ATK) - for _, id in ipairs(list) do - self:setTaskProgress(id, count) - end - end) - - ModuleManager.TaskManager:registerTask("SevenDayData", GConst.TaskConst.TASK_TYPE.X_TRAIN_HP, function(count) - local list = self:getTaskListByType(GConst.TaskConst.TASK_TYPE.X_TRAIN_HP) - for _, id in ipairs(list) do - self:setTaskProgress(id, count) - end - end) end return SevenDayData \ No newline at end of file diff --git a/lua/app/userdata/bounty/bounty_data.lua b/lua/app/userdata/bounty/bounty_data.lua index 274fd0a5..aede934f 100644 --- a/lua/app/userdata/bounty/bounty_data.lua +++ b/lua/app/userdata/bounty/bounty_data.lua @@ -362,61 +362,6 @@ function BountyData:getTaskCanCaimed(id) end function BountyData:initTaskListener() - ModuleManager.TaskManager:registerTask("BountyData", GConst.TaskConst.TASK_TYPE.X_KILL_MONSTER, function(count) - local list = self:getTaskListByType(GConst.TaskConst.TASK_TYPE.X_KILL_MONSTER) - for _, id in ipairs(list) do - self:addTaskProgress(id, count) - end - end) - - ModuleManager.TaskManager:registerTask("BountyData", GConst.TaskConst.TASK_TYPE.X_SUMMON, function(count) - local list = self:getTaskListByType(GConst.TaskConst.TASK_TYPE.X_SUMMON) - for _, id in ipairs(list) do - self:addTaskProgress(id, count) - end - end) - - ModuleManager.TaskManager:registerTask("BountyData", GConst.TaskConst.TASK_TYPE.X_HOE_USE, function(count) - local list = self:getTaskListByType(GConst.TaskConst.TASK_TYPE.X_HOE_USE) - for _, id in ipairs(list) do - self:addTaskProgress(id, count) - end - end) - - ModuleManager.TaskManager:registerTask("BountyData", GConst.TaskConst.TASK_TYPE.X_JEWELRY_BATTLE, function(count) - local list = self:getTaskListByType(GConst.TaskConst.TASK_TYPE.X_JEWELRY_BATTLE) - for _, id in ipairs(list) do - self:addTaskProgress(id, count) - end - end) - - ModuleManager.TaskManager:registerTask("BountyData", GConst.TaskConst.TASK_TYPE.X_GOLD_BATTLE, function(count) - local list = self:getTaskListByType(GConst.TaskConst.TASK_TYPE.X_GOLD_BATTLE) - for _, id in ipairs(list) do - self:addTaskProgress(id, count) - end - end) - - ModuleManager.TaskManager:registerTask("BountyData", GConst.TaskConst.TASK_TYPE.X_MITHRIL_BATTLE, function(count) - local list = self:getTaskListByType(GConst.TaskConst.TASK_TYPE.X_MITHRIL_BATTLE) - for _, id in ipairs(list) do - self:addTaskProgress(id, count) - end - end) - - ModuleManager.TaskManager:registerTask("BountyData", GConst.TaskConst.TASK_TYPE.X_ARENA_CHALLENGE, function(count) - local list = self:getTaskListByType(GConst.TaskConst.TASK_TYPE.X_ARENA_CHALLENGE) - for _, id in ipairs(list) do - self:addTaskProgress(id, count) - end - end) - - ModuleManager.TaskManager:registerTask("BountyData", GConst.TaskConst.TASK_TYPE.X_LOGIN_DAY, function(count) - local list = self:getTaskListByType(GConst.TaskConst.TASK_TYPE.X_LOGIN_DAY) - for _, id in ipairs(list) do - self:addTaskProgress(id, count) - end - end) end function BountyData:getTaskRp() diff --git a/lua/app/userdata/task/daily_task_data.lua b/lua/app/userdata/task/daily_task_data.lua new file mode 100644 index 00000000..55f64cb1 --- /dev/null +++ b/lua/app/userdata/task/daily_task_data.lua @@ -0,0 +1,238 @@ +local DailyTaskData = class("DailyTaskData", BaseData) + +local DAILY_TASK_AD_ID = 1 +local DAILY_TASK_FINAL_ID = 2 +local DATA_NAME = "DailyTaskData" + +function DailyTaskData:ctor() + self.data.dailyTaskDirty = false + self.taskTypeMap = {} + self.dailyTasks = {} +end + +function DailyTaskData:init(data) + local tasks = data and data.tasks + local cfg = self:getDailyTaskCfg() + local taskCfg = self:getTaskCfg() + for k, v in pairs(self.dailyTasks) do + self.dailyTasks[k] = nil + end + for k, v in pairs(self.taskTypeMap) do + for i = 1, #v do + table.remove(v) + end + end + for k, v in pairs(cfg) do + local task = tasks and tasks[k] or GConst.EMPTY_TABLE + local taskInfo = taskCfg[task.task_id] + if taskInfo then + local dailyTaskObj = { + id = k, + taskId = task.task_id, + progress = task.progress, + needProgress = taskInfo.number, + refresh = task.refresh, + claimed = task.claimed, + type = v.type + } + if v.bounty then + dailyTaskObj.lock = true + end + self.dailyTasks[k] = dailyTaskObj + local list = self.taskTypeMap[taskInfo.type] + if list == nil then + list = {} + self.taskTypeMap[taskInfo.type] = list + end + table.insert(list, dailyTaskObj) + if #list == 1 then + self:registerTask(taskInfo.type) + end + end + end +end + +function DailyTaskData:refreshDailyTask(task) + local id = task.id + local dailyTaskObj = self.dailyTasks[id] + if dailyTaskObj == nil then + return + end + local taskInfo = self:getTaskCfg()[task.task_id] + if taskInfo == nil then + return + end + local originTaskInfo = self:getTaskCfg()[dailyTaskObj.taskId] + if originTaskInfo == nil then + return + end + dailyTaskObj.id = task.id + dailyTaskObj.taskId = task.task_id + dailyTaskObj.progress = task.progress + dailyTaskObj.needProgress = taskInfo.number + dailyTaskObj.refresh = task.refresh + dailyTaskObj.claimed = task.claimed + local originTaskType = originTaskInfo.type + if originTaskType ~= taskInfo.type then -- 任务类型变了 + local originTaskList = self.taskTypeMap[originTaskType] + if originTaskList then + for k, v in ipairs(originTaskList) do + if v.id == id then + table.remove(originTaskList, k) + break + end + end + if #originTaskList == 0 then + self:unregisterTask(originTaskType) + end + end + local newTaskList = self.taskTypeMap[taskInfo.type] + if newTaskList == nil then + newTaskList = {} + self.taskTypeMap[taskInfo.type] = newTaskList + end + table.insert(newTaskList, dailyTaskObj) + if #newTaskList == 1 then + self:registerTask(taskInfo.type) + end + end + self:markDailyTaskDirty() +end + +function DailyTaskData:getIsOpen() + return ModuleManager:getIsOpen(ModuleManager.MODULE_KEY.TASK, true) +end + +function DailyTaskData:getDailyResetTime() + return 86400 - Time:getServerTime() % 86400 +end + +function DailyTaskData:getDailyTaskAdId() + return DAILY_TASK_AD_ID +end + +function DailyTaskData:getDailyTaskFinalId() + return DAILY_TASK_FINAL_ID +end + +function DailyTaskData:markDailyTaskDirty() + self.data.dailyTaskDirty = not self.data.dailyTaskDirty +end + +function DailyTaskData:getDailyTaskProgress(id) + local task = self.dailyTasks[id] + if task == nil then + return 0, 1 + end + return task.progress, task.needProgress +end + +function DailyTaskData:getDailyTaskDesc(id) + local task = self.dailyTasks[id] + if task == nil then + return GConst.EMPTY_STRING + end + local cfg = self:getTaskI18NCfg() + return cfg[task.taskId].desc +end + +function DailyTaskData:getDailyTaskIsLock(id) + local task = self.dailyTasks[id] + if task == nil then + return nil + end + return task.lock +end + +function DailyTaskData:getDailyTaskCanRefresh(id) + local cfg = self:getDailyTaskCfg()[id] + if cfg == nil then + return false + end + return cfg.ad_refresh +end + +function DailyTaskData:getDailyTaskIcon(id) + local task = self.dailyTasks[id] + if task == nil then + return GConst.EMPTY_STRING + end + local cfg = self:getTaskCfg() + return cfg[task.taskId].icon +end + +function DailyTaskData:getDailyTaskReward(id) + local task = self.dailyTasks[id] + if task == nil then + return GConst.EMPTY_STRING + end + local cfg = self:getTaskCfg() + return cfg[task.taskId].reward +end + +function DailyTaskData:getDailyTasks() + return self.dailyTasks +end + +function DailyTaskData:getTaskI18NCfg() + if self.taskI18NCfg == nil then + self.taskI18NCfg = I18N:getConfig("task") + end + return self.taskI18NCfg +end + +function DailyTaskData:getTaskCfg() + if self.taskCfg == nil then + self.taskCfg = ConfigManager:getConfig("task") + end + return self.taskCfg +end + +function DailyTaskData:getDailyTaskCfg() + if self.dailyTaskCfg == nil then + self.dailyTaskCfg = ConfigManager:getConfig("task_daily") + end + return self.dailyTaskCfg +end + +function DailyTaskData:getTaskListByType(taskType) + return self.taskTypeMap[taskType] or GConst.EMPTY_TABLE +end + +function DailyTaskData:getIfCanClaimTask(task) + if task.claimed then + return false + end + return task.progress <= task.needProgress +end + +function DailyTaskData:addTaskProgress(task, count) + local currProgress = task.progress + if currProgress >= task.needProgress then + return + end + local can = self:getIfCanClaimTask(task) + task.progress = task.progress + count + self:markDailyTaskDirty() + if not can and self:getIfCanClaimTask(task) then + EventManager:dispatchEvent(EventManager.CUSTOM_EVENT.DAILY_TASK_ADD_PROGRESS, task.id, task.taskId, currProgress, task.needProgress) + BIReport:postDailyTaskFinish(BIReport.TASK_TYPE.DAILY, task.id, task.taskId, task.refresh) + end +end + +function DailyTaskData:registerTask(taskType) + ModuleManager.TaskManager:registerTask(DATA_NAME, taskType, function(count) + local list = self:getTaskListByType(taskType) + if #list > 0 then + for _, task in ipairs(list) do + self:addTaskProgress(task, count) + end + end + end) +end + +function DailyTaskData:unregisterTask(taskType) + ModuleManager.TaskManager:unRegisterTask(DATA_NAME, taskType) +end + +return DailyTaskData \ No newline at end of file diff --git a/lua/app/userdata/task/daily_task_data.lua.meta b/lua/app/userdata/task/daily_task_data.lua.meta new file mode 100644 index 00000000..f2c1956a --- /dev/null +++ b/lua/app/userdata/task/daily_task_data.lua.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: 78418602370585e449e79da7a5f4345b +ScriptedImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 2 + userData: + assetBundleName: + assetBundleVariant: + script: {fileID: 11500000, guid: 3b8b241bab4a4ac9a22fcce9c64f1242, type: 3} diff --git a/lua/app/userdata/task/task_data.lua b/lua/app/userdata/task/task_data.lua deleted file mode 100644 index c61d964d..00000000 --- a/lua/app/userdata/task/task_data.lua +++ /dev/null @@ -1,153 +0,0 @@ -local TaskData = class("TaskData", BaseData) - -local DAILY_TASK_AD_ID = 1 -local DAILY_TASK_FINAL_ID = 2 - -function TaskData:ctor() - self.data.dailyTaskDirty = false -end - -function TaskData:init(data) - local tasks = data and data.tasks - local cfg = self:getDailyTaskCfg() - local taskCfg = self:getTaskCfg() - self.dailyTasks = {} - for k, v in pairs(cfg) do - local task = tasks and tasks[k] or GConst.EMPTY_TABLE - local taskInfo = taskCfg[task.task_id] - if taskInfo then - local dailyTaskObj = { - id = k, - taskId = task.task_id, - progress = task.progress, - needProgress = taskInfo.number, - refresh = task.refresh, - claimed = task.claimed, - type = v.type - } - if v.bounty then - dailyTaskObj.lock = true - end - self.dailyTasks[k] = dailyTaskObj - end - end -end - -function TaskData:refreshDailyTask(task) - local taskInfo = self:getTaskCfg()[task.task_id] - if taskInfo == nil then - return - end - local id = task.id - local dailyTaskObj = self.dailyTasks[id] - if dailyTaskObj == nil then - dailyTaskObj = {} - self.dailyTasks[id] = dailyTaskObj - end - -- 刷新任务的时候type不会变 - dailyTaskObj.id = task.id - dailyTaskObj.taskId = task.task_id - dailyTaskObj.progress = task.progress - dailyTaskObj.needProgress = taskInfo.number - dailyTaskObj.refresh = task.refresh - dailyTaskObj.claimed = task.claimed - self:markDailyTaskDirty() -end - -function TaskData:getIsOpen() - return ModuleManager:getIsOpen(ModuleManager.MODULE_KEY.TASK, true) -end - -function TaskData:getDailyResetTime() - return 86400 - Time:getServerTime() % 86400 -end - -function TaskData:getDailyTaskAdId() - return DAILY_TASK_AD_ID -end - -function TaskData:getDailyTaskFinalId() - return DAILY_TASK_FINAL_ID -end - -function TaskData:markDailyTaskDirty() - self.data.dailyTaskDirty = not self.data.dailyTaskDirty -end - -function TaskData:getDailyTaskProgress(id) - local task = self.dailyTasks[id] - if task == nil then - return 0, 1 - end - return task.progress, task.needProgress -end - -function TaskData:getDailyTaskDesc(id) - local task = self.dailyTasks[id] - if task == nil then - return GConst.EMPTY_STRING - end - local cfg = self:getTaskI18NCfg() - return cfg[task.taskId].desc -end - -function TaskData:getDailyTaskIsLock(id) - local task = self.dailyTasks[id] - if task == nil then - return nil - end - return task.lock -end - -function TaskData:getDailyTaskCanRefresh(id) - local cfg = self:getDailyTaskCfg()[id] - if cfg == nil then - return false - end - return cfg.ad_refresh -end - -function TaskData:getDailyTaskIcon(id) - local task = self.dailyTasks[id] - if task == nil then - return GConst.EMPTY_STRING - end - local cfg = self:getTaskCfg() - return cfg[task.taskId].icon -end - -function TaskData:getDailyTaskReward(id) - local task = self.dailyTasks[id] - if task == nil then - return GConst.EMPTY_STRING - end - local cfg = self:getTaskCfg() - return cfg[task.taskId].reward -end - -function TaskData:getDailyTasks() - return self.dailyTasks -end - -function TaskData:getTaskI18NCfg() - if self.taskI18NCfg == nil then - self.taskI18NCfg = I18N:getConfig("task") - end - return self.taskI18NCfg -end - -function TaskData:getTaskCfg() - if self.taskCfg == nil then - self.taskCfg = ConfigManager:getConfig("task") - end - return self.taskCfg -end - -function TaskData:getDailyTaskCfg() - if self.dailyTaskCfg == nil then - self.dailyTaskCfg = ConfigManager:getConfig("task_daily") - end - return self.dailyTaskCfg -end - -return TaskData \ No newline at end of file