local ModuleManager = {} local MODULE_PATHS = { -- 登录 LoginManager = "app/module/login/login_manager", TipsManager = "app/module/tips/tips_manager", LoadingManager = "app/module/loading/loading_manager", -- GM DevToolManager = "app/module/gm/dev_tool_manager", -- 主城 MaincityManager = "app/module/maincity/maincity_manager", -- 引导 TutorialManager = "app/module/tutorial/tutorial_manager", ToastManager = "app/ui/common/toast", TaskToastManager = "app/ui/common/task_toast", -- 任务 TaskManager = "app/module/task/task_manager", -- 战斗 BattleManager = "app/module/battle/battle_manager", -- 战斗阵容 FormationManager = "app/module/formation/formation_manager", -- 英雄 HeroManager = "app/module/hero/hero_manager", -- 主线关卡 ChapterManager = "app/module/chapter/chapter_manager", -- 每日挑战 DailyChallengeManager = "app/module/daily_challenge/daily_challenge_manager", -- 挂机 IdleManager = "app/module/idle/idle_manager", -- 基金 FundManager = "app/module/fund/fund_manager", -- 设置 GameSettingManager = "app/module/game_setting/game_setting_manager", -- 活动 ActivityManager = "app/module/activity/activity_manager", -- 礼包 CommerceManager = "app/module/commerce/commerce_manager", -- 战令 BountyManager = "app/module/bounty/bounty_manager", -- 竞技场战令 ArenaBountyManager = "app/module/arena/arena_bounty_manager", -- 道具 ItemManager = "app/module/item/item_manager", -- 商店 ShopManager = "app/module/shop/shop_manager", -- 召唤 SummonManager = "app/module/summon/summon_manager", -- 邮件 MailManager = "app/module/mail/mail_manager", -- 玩家 PlayerManager = "app/module/player/player_manager", -- 账号 AccountManager= "app/module/account/account_manager", -- 活动副本 DungeonManager = "app/module/dungeon/dungeon_manager", -- 竞技场 ArenaManager = "app/module/arena/arena_manager", -- 图鉴 CollectionManager = "app/module/collection/collection_manager", -- 通用 CommonManager = "app/module/common/common_manager", -- 武器副本 DungeonWeaponManager = "app/module/dungeon_weapon/dungeon_weapon_manager", -- 防具副本 DungeonArmorManager = "app/module/dungeon_armor/dungeon_armor_manager", -- 装备 EquipManager = "app/module/equip/equip_manager", -- 皮肤 SkinManager = "app/module/skin/skin_manager", -- 皮肤 RunesManager = "app/module/runes/runes_manager", -- 符文副本 DungeonRuneManager = "app/module/dungeon_rune/dungeon_rune_manager", -- 天赋 TalentManager = "app/module/talent/talent_manager", BagManager = "app/module/bag/bag_manager", -- 战力/攻击力toast PowerToastManager = "app/ui/common/power_toast_manager", -- 成长基金 FundLevelManager = "app/module/fund_level/fund_level_manager", -- 关卡基金 FundChapterManager = "app/module/fund_chapter/fund_chapter_manager", -- 签到 SignManager = "app/module/sign/sign_manager", -- 活动七天乐 ActSevenDayManager = "app/module/activity/act_seven_day/act_seven_day_manager", -- 特权卡 PrivilegeCardManager = "app/module/privilege/privilege_card_manager", -- 冲刺活动 ActSprintManager = "app/module/activity/act_sprint/act_sprint_manager", } -- 这里的key对应func_open里的id ModuleManager.MODULE_KEY = { SEVEN_DAY = "act_sevenday", TASK = "task", STORE_BOX_OPEN = "store_box_open", STORE_BOX_3_OPEN = "store_box_3_open", BOUNTY_OPEN = "bounty_open", IDLE_DROP = "idle_drop", ACTIVITY = "activity_open", MALL = "mall", -- 商城 MALL_DAILY = "mall_daily", -- 每日商城 DAILY_CHALLENGE = "daily_challenge", -- 每日挑战 ACT_GIFT_SHOW_OPEN = "act_gift_show_open", -- 弹窗礼包通用开启条件 FIRST_RECHARGE = "first_charge", -- 首充礼包 BEGINNER_GIFT = "new_player_gift", -- 新手礼包 MAIL = "mail_open", -- 邮件 DUNGEON_SHARDS = "dungeon_shards_open", -- 碎片副本 INTRODUCT_GIFT = "introduct_gift", -- 入门礼包 ARENA = "arena_open", -- 竞技场 ARENA_GIFT = "act_arena_gift", -- 竞技场礼包 COLLECT = "collection_open", -- 收集 DUNGEON_ARMOR = "dungeon_armor_open", -- 支线副本 DUNGEON_WEAPON = "dungeon_weapon_open", -- 装备副本 EQUIP_WEAPON = "equip_weapon_open", -- 武器 EQUIP_ARMOR = "equip_armor_open", -- 防具 SKIN = "skin_open", -- 皮肤 RUNES_OPEN = "runes_open", -- 符文 COMPANY_OPEN = "company_open", -- 公司页签开启条件 TALENT_OPEN = "talent_open", -- 天赋功能开启条件 DUNGEON_OPEN = "dungeon_open", -- 玩法入口页签开启条件 SUMMON_OPEN = "summon_open", -- 英雄抽卡功能开启条件(包括普通和高级抽) BOUNTY = "bounty", -- 基金 ACT_LEVEL_GIFT = "act_level_gift", -- 成长基金 CHAPTER_FUND = "fund_chapter", -- 关卡基金 -- 签到 SIGN_BOUNTY = "signin_bounty", SIGN_MONTH = "signin_30", -- 七天乐 ACT_SEVENDAY = "act_sevenday", ACT_SEVENDAY_2 = "act_sevenday_2", ACT_GOGOGO = "act_gogogo", -- 免广告卡 CARD_AD = "card_ad", DUNGEON_GOLD = "dungeon_gold", -- 金币副本 DUNGEON_RES = "dungeon_res", -- 材料副本 CARD_MONTHLY = "card_monthly", } 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() ModuleManager.TaskManager:init() ModuleManager.DailyChallengeManager:init() ModuleManager.PlayerManager:init() ModuleManager.SkinManager:init() end -- 功能是否开启 function ModuleManager:getIsOpen(key, hideToast) local cfg = ConfigManager:getConfig("func_open")[key] if cfg == nil then return true end -- 且 if cfg.sever_time then local serverDay = DataManager.PlayerData:getServerOpenDay() local isOpen = serverDay >= cfg.sever_time if not hideToast and not isOpen then if cfg.level then GFunc.showToast(I18N:getGlobalText(I18N.GlobalConst.FUNC_OPEN_LEVEL_SEVER, cfg.level, serverDay, cfg.sever_time)) elseif cfg.stage then local str = DataManager.ChapterData:getChapterNameXYMode(cfg.stage) GFunc.showToast(I18N:getGlobalText(I18N.GlobalConst.FUNC_OPEN_STAGE_SEVER, str, serverDay, cfg.sever_time)) else -- 策划说必定有level或stage end end if not isOpen then return false end end if cfg.time then local createDay = DataManager.PlayerData:getCreateDay() local isOpen = createDay >= cfg.time if not hideToast and not isOpen then if cfg.level then GFunc.showToast(I18N:getGlobalText(I18N.GlobalConst.FUNC_OPEN_LEVEL_SEVER, cfg.level, createDay, cfg.time)) elseif cfg.stage then local str = DataManager.ChapterData:getChapterNameXYMode(cfg.stage) GFunc.showToast(I18N:getGlobalText(I18N.GlobalConst.FUNC_OPEN_STAGE_SEVER, str, createDay, cfg.time)) else -- 策划说必定有level或stage end end if not isOpen then return false end 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 if not isOpen then return false end end if cfg.stage then local isOpen = DataManager.ChapterData:getChapterPassed(cfg.stage) if not hideToast and not isOpen then local str = DataManager.ChapterData:getChapterNameXYMode(cfg.stage) GFunc.showToast(I18N:getGlobalText(I18N.GlobalConst.FUNC_OPEN_STAGE, str)) end if not isOpen then return false end end -- 或 local stage2, time2 if cfg.stage_2 then local isOpen = DataManager.ChapterData:getChapterPassed(cfg.stage_2) if isOpen then return true else stage2 = cfg.stage_2 end end if cfg.time_2 then local createDay = DataManager.PlayerData:getCreateDay() local isOpen = createDay >= cfg.time_2 if isOpen then return true else time2 = cfg.time_2 end end if stage2 and time2 then if not hideToast then GFunc.showToast(I18N:getGlobalText(I18N.GlobalConst.FUNC_OPEN_STAGE_OR_SEVER, stage2, time2)) end return false elseif stage2 and not cfg.time_2 then if not hideToast then local str = DataManager.ChapterData:getChapterNameXYMode(stage2) GFunc.showToast(I18N:getGlobalText(I18N.GlobalConst.FUNC_OPEN_STAGE, str)) end return false elseif time2 and not cfg.stage_2 then if not hideToast then GFunc.showToast(I18N:getGlobalText(I18N.GlobalConst.FUNC_OPEN_SEVER, time2)) end return false 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) 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:getOpenDay(key) local cfg = ConfigManager:getConfig("func_open")[key] if not cfg or cfg.time == nil then return end return cfg.time end function ModuleManager:clear() for k, v in ipairs(_moduleMgrs) do v:_clear() end end return ModuleManager