From 5d7771fd87d18bc913fcdfe3ad4786e314933802 Mon Sep 17 00:00:00 2001 From: chenxi Date: Tue, 30 May 2023 15:32:58 +0800 Subject: [PATCH] =?UTF-8?q?=E8=A7=A3=E9=94=81=E6=96=B0=E5=8A=9F=E8=83=BD?= =?UTF-8?q?=E5=BC=B9=E7=AA=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lua/app/module/chapter/chapter_manager.lua | 2 + lua/app/module/maincity/maincity_manager.lua | 9 ++++ lua/app/ui/main_city/main_city_ui.lua | 5 ++ lua/app/ui/main_city/module_unlock_ui.lua | 52 +++++++++++++++++++ .../ui/main_city/module_unlock_ui.lua.meta | 10 ++++ lua/app/userdata/player/player_data.lua | 41 ++++++++++++++- 6 files changed, 118 insertions(+), 1 deletion(-) create mode 100644 lua/app/ui/main_city/module_unlock_ui.lua create mode 100644 lua/app/ui/main_city/module_unlock_ui.lua.meta diff --git a/lua/app/module/chapter/chapter_manager.lua b/lua/app/module/chapter/chapter_manager.lua index e232d97f..c2d109c6 100644 --- a/lua/app/module/chapter/chapter_manager.lua +++ b/lua/app/module/chapter/chapter_manager.lua @@ -117,6 +117,8 @@ function ChapterManager:endFightFinish(result) ModuleManager.TaskManager:addTaskProgress(GConst.TaskConst.TASK_TYPE.X_PASS_CHAPTER) -- 章节通关 检查是否要弹出英雄解锁界面 DataManager.HeroData:checkIfCanShowHeroUnlock(maxChapter) + -- 章节通关 检查是否要弹出功能解锁界面 + DataManager.PlayerData:checkIfCanShowModuleUnlock(maxChapter) end ModuleManager.TaskManager:addFightTaskProgress(reqData) diff --git a/lua/app/module/maincity/maincity_manager.lua b/lua/app/module/maincity/maincity_manager.lua index 4a39833b..3bad2657 100644 --- a/lua/app/module/maincity/maincity_manager.lua +++ b/lua/app/module/maincity/maincity_manager.lua @@ -4,6 +4,15 @@ function MaincityManager:showMainCityUI(isFirstEnter, targetIndex) UIManager:showUI(UIManager.UI_PATH.MAINCITY_UI, {isFirstEnter = isFirstEnter, targetIndex = targetIndex}) end +function MaincityManager:showModuleUnlockUI() + local chapterId = DataManager.PlayerData:getModuleUnlockChapter() + if chapterId <= 0 then + return + end + DataManager.PlayerData:markShowModuleUnlock() + UIManager:showUI("app/ui/main_city/module_unlock_ui", {chapterId = chapterId}) +end + -- 从登录界面第一次进入主城 function MaincityManager:firstEnterMainCity() if ModuleManager.TutorialManager:checkFuncTutorial(GConst.TutorialConst.START_TUTORIAL, true) then diff --git a/lua/app/ui/main_city/main_city_ui.lua b/lua/app/ui/main_city/main_city_ui.lua index cd67a56f..f2169528 100644 --- a/lua/app/ui/main_city/main_city_ui.lua +++ b/lua/app/ui/main_city/main_city_ui.lua @@ -817,6 +817,11 @@ function MainCityUI:checkMainPop() ModuleManager.PlayerManager:levelUp() return end + -- 检查功能弹窗 + if DataManager.PlayerData:getIfCanShowModuleUnlock() then + ModuleManager.MaincityManager:showModuleUnlockUI() + return + end -- 是否是否有英雄解锁弹窗 if DataManager.HeroData:getIfCanShowHeroUnlock() then local list = DataManager.HeroData:getHeroChapterUnlockList() diff --git a/lua/app/ui/main_city/module_unlock_ui.lua b/lua/app/ui/main_city/module_unlock_ui.lua new file mode 100644 index 00000000..6bbb584d --- /dev/null +++ b/lua/app/ui/main_city/module_unlock_ui.lua @@ -0,0 +1,52 @@ +local ModuleUnlockUI = class("ModuleUnlockUI", BaseUI) + +function ModuleUnlockUI:getPrefabPath() + return "assets/prefabs/ui/main_city/module_unlock_ui.prefab" +end + +function ModuleUnlockUI:isFullScreen() + return false +end + +function ModuleUnlockUI:ctor(params) + self.chapterId = params and params.chapterId + + self.unlockList = {} + local cfg = ConfigManager:getConfig("func_open") + for k, v in pairs(cfg) do + if v.stage == self.chapterId and v.pop_ups == nil then + table.insert(self.unlockList, k) + end + end +end + +function ModuleUnlockUI:onLoadRootComplete() + self.uiMap = self.root:genAllChildren() + self.uiMap["module_unlock_ui.bg"]:addClickListener(function() + self:showModuleUnlockAnimation() + end) + + self.moduleNameTx = self.uiMap["module_unlock_ui.name_tx"] + self.moduleIcon = self.uiMap["module_unlock_ui.icon"] + self.uiMap["module_unlock_ui.continue"]:setText(I18N:getGlobalText(I18N.GlobalConst.CLICK_TO_CONTINUE)) + self.uiMap["module_unlock_ui.title_tx"]:setText(I18N:getGlobalText(I18N.GlobalConst.FUNC_UNLOCK)) + + self:showModuleUnlockAnimation() +end + +function ModuleUnlockUI:showModuleUnlockAnimation() + if #self.unlockList <= 0 then + self:closeUI() + return + end + local moduleKey = table.remove(self.unlockList, 1) + local info = ConfigManager:getConfig("func_open")[moduleKey] + local i18nInfo = I18N:getConfig("func_open")[moduleKey] + if info == nil or i18nInfo == nil then + self:closeUI() + return + end + self.moduleNameTx:setText(i18nInfo.name) +end + +return ModuleUnlockUI \ No newline at end of file diff --git a/lua/app/ui/main_city/module_unlock_ui.lua.meta b/lua/app/ui/main_city/module_unlock_ui.lua.meta new file mode 100644 index 00000000..f4489320 --- /dev/null +++ b/lua/app/ui/main_city/module_unlock_ui.lua.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: 73423d981f0c1704ba50c8435ac13416 +ScriptedImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 2 + userData: + assetBundleName: + assetBundleVariant: + script: {fileID: 11500000, guid: 3b8b241bab4a4ac9a22fcce9c64f1242, type: 3} diff --git a/lua/app/userdata/player/player_data.lua b/lua/app/userdata/player/player_data.lua index 3f9f665c..52abf7ca 100644 --- a/lua/app/userdata/player/player_data.lua +++ b/lua/app/userdata/player/player_data.lua @@ -25,6 +25,22 @@ function PlayerData:init(data) self:markDirty() end) self.createTime = basicInfo.create_at or 0 -- 创角时间 + self:initModuleUnlockInfo() +end + +function PlayerData:initModuleUnlockInfo() + self.showModuleUnlockChapter = 0 + if self.moduleUnlockChapterMap then + return + end + self.moduleUnlockChapterMap = {} + local cfg = ConfigManager:getConfig("func_open") + for _, info in pairs(cfg) do + if info.pop_ups == nil and info.stage then + self.moduleUnlockChapterMap[info.stage] = true + end + end + Logger.printTable(self.moduleUnlockChapterMap) end function PlayerData:resetOnCrossDay() @@ -138,7 +154,30 @@ end -- 获取创角时间 function PlayerData:getCreateTime() - return self.createTime + return self.createTime +end + +-- 获取玩家是否可以显示功能解锁 +function PlayerData:getIfCanShowModuleUnlock() + return self.showModuleUnlockChapter > 0 +end + +function PlayerData:markShowModuleUnlock() + self.showModuleUnlockChapter = 0 +end + +function PlayerData:getModuleUnlockChapter() + return self.showModuleUnlockChapter +end + +function PlayerData:checkIfCanShowModuleUnlock(chapterId) + if self.moduleUnlockChapterMap == nil then + return + end + if not self.moduleUnlockChapterMap[chapterId] then + return + end + self.showModuleUnlockChapter = chapterId end return PlayerData \ No newline at end of file