local ModuleManager = {} local MODULE_PATHS = { LoginManager = "app/module/login/login_manager", BattleManager = "app/module/battle/battle_manager", TipsManager = "app/module/tips/tips_manager", LoadingManager = "app/module/loading/loading_manager", DevToolManager = "app/module/gm/dev_tool_manager", MaincityManager = "app/module/maincity/maincity_manager", SettingManager = "app/module/setting/setting_manager", -- 引导 TutorialManager = "app/module/tutorial/tutorial_manager", ToastManager = "app/ui/common/toast", PlayerManager = "app/module/player/player_manager", SummonManager = "app/module/summon/summon_manager", -- 英雄 HeroManager = "app/module/hero/hero_manager", -- 修炼 TrainManager = "app/module/train/train_manager", -- 商城Manager MallManager = "app/module/mall/mall_manager", ItemManager = "app/module/item/item_manager", MasteryManager = "app/module/mastery/mastery_manager", MiningManager = "app/module/mining/mining_manager", -- 章节关卡 ChapterManager = "app/module/chapter/chapter_manager", -- 挂机 IdleManager = "app/module/idle/idle_manager", -- 设置 GameSettingManager = "app/module/game_setting/game_setting_manager", AudioManager = "app/module/game_setting/game_setting_manager", DungeonManager = "app/module/dungeon/dungeon_manager", ArenaManager = "app/module/arena_manager/arena_manager", SignInManager = "app/module/signin/signin_manager", DailyTaskManager = "app/module/activity/daily_task/daily_task_manager", SevenDayManager = "app/module/activity/seven_day/seven_day_manager", TaskManager = "app/module/task/task_manager", ActivityManager = "app/module/activity/activity_manager", BlessingManager = "app/module/blessing/blessing_manager", TutorialTaskManager = "app/module/tutorial/tutorial_task_manager", BountyManager = "app/module/bounty/bounty_manager", CollectionManager = "app/module/collection/collection_manager", MailManager = "app/module/mail/mail_manager", } -- 这里的key对应func_open里的id ModuleManager.MODULE_KEY = { DUNGEON_GOLD = "dungeon_gold", DUNGEON_DIAMOND = "dungeon_diamond", DUNGEON_RUNE = "dungeon_rune", DUNGEON_CHARACTERISTIC = "dungeon_characteristic", ARENA = "arena", SUMMON_WEAPON = "summon_weapon", SUMMON_ARMOR = "summon_armor", SUMMON_LEGACY = "summon_legacy", MINE = "mine", MINE_RESEARCH = "mine_research", IDLE = "idle", COMPREHEND = "comprehend", QUICK_PASS = "quick_pass", TRAIN = "train", MASTERY = "mastery", RUNES = "runes", SHOP = "shop", SEVENDAY = "sevenday", SIGNIN = "signin", TUTORIALTASK = "tutorialtask", DAILYTASK = "dailytask", BLESSING = "blessing", EQUIP = "equip", COLLECTION = "collection", AUTO_FIGHT = "auto_fight", HERO_OPEN = "hero_open", WEAPON_OPEN = "weapon_open", ARMOR_OPEN = "armor_open", LEGACY_OPEN = "legacy_open", BATTLE_PASS = "battle_pass", BATTLE_SPEED_UP = "battle_speed_up", POWER_SAVE_MODE = "save_power_open", FUND_OPEN = "fund_open", MAIL_OPEN = "mail_open", } local _moduleMgrs = {} local MODULE_METATABLE = { __index = function(t, k) local path = MODULE_PATHS[k] if path == nil then Logger.logError("%s path is not configure in ModuleManager.lua", k) return end local v = require(path):create() table.insert(_moduleMgrs, v) rawset(t, k, v) return v end } setmetatable(ModuleManager, MODULE_METATABLE) function ModuleManager:init() if EDITOR_MODE then ---@type LoginManager self.LoginManager = self.LoginManager or require("app/module/login/login_manager"):create() ---@type BattleManager self.BattleManager = self.BattleManager or require("app/module/battle/battle_manager"):create() ---@type TipsManager self.TipsManager = self.TipsManager or require("app/module/tips/tips_manager"):create() ---@type MaincityManager self.MaincityManager = self.MaincityManager or require("app/module/maincity/maincity_manager"):create() ---@type SummonManager self.SummonManager = self.SummonManager or require("app/module/summon/summon_manager"):create() ---@type MallManager self.MallManager = self.MallManager or require("app/module/mall/mall_manager"):create() ---@type MiningManager self.MiningManager = self.MiningManager or require("app/module/mining/mining_manager"):create() ---@type DungeonManager self.DungeonManager = self.DungeonManager or require("app/module/dungeon/dungeon_manager"):create() ---@type ArenaManager self.ArenaManager = self.ArenaManager or require("app/module/arena_manager/arena_manager"):create() ---@type SignInManager self.SignInManager = self.SignInManager or require("app/module/signin/signin_manager"):create() end end -- 功能是否开启 function ModuleManager:getIsOpen(key, hideToast) local cfg = ConfigManager:getConfig("func_open")[key] if cfg == nil then return true end -- 优先判断等级 if cfg.level then local isOpen = DataManager.PlayerData:getLv() >= cfg.level if not hideToast and not isOpen then GFunc.showToast(I18N:getGlobalText(I18N.GlobalConst.FUNC_OPEN_LEVEL, cfg.level)) end return isOpen elseif cfg.stage then -- 没有填等级字段就判断关卡 local isOpen = DataManager.ChapterData:getHistoryChapterId() >= cfg.stage if not hideToast and not isOpen then GFunc.showToast(I18N:getGlobalText(I18N.GlobalConst.FUNC_OPEN_STAGE, cfg.stage)) end return isOpen elseif cfg.task then -- 判断任务 local isOver = DataManager.TutorialTaskData:getTaskCollect(cfg.task) if not hideToast and not isOver then GFunc.showToast(I18N:getGlobalText(I18N.GlobalConst.FUNC_OPEN_TASK, cfg.task)) end return isOver end return true end function ModuleManager:showPop(key) local cfg = ConfigManager:getConfig("func_open")[key] if not cfg then return false end if cfg and cfg.pop_ups and cfg.pop_ups == 1 then return false end return true end function ModuleManager:getNotOpenStr(key) local cfg = ConfigManager:getConfig("func_open")[key] if cfg == nil then return GConst.EMPTY_STRING end -- 优先判断等级 if cfg.level then return I18N:getGlobalText(I18N.GlobalConst.FUNC_OPEN_LEVEL, cfg.level) elseif cfg.stage then -- 没有填等级字段就判断关卡 return I18N:getGlobalText(I18N.GlobalConst.FUNC_OPEN_STAGE, cfg.stage) elseif cfg.task then return I18N:getGlobalText(I18N.GlobalConst.FUNC_OPEN_TASK, cfg.task) end return GConst.EMPTY_STRING end function ModuleManager:getOpenStageId(key) local cfg = ConfigManager:getConfig("func_open")[key] if not cfg or cfg.level then return end return cfg.stage end function ModuleManager:clear() for k, v in ipairs(_moduleMgrs) do v:_clear() end end return ModuleManager