c1_lua/lua/app/common/module_manager.lua
2025-10-08 16:02:30 +08:00

237 lines
7.3 KiB
Lua

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", -- 碎片副本
DUNGEON_GOLD = "dungeon_gold_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",
-- 免广告卡
CARD_AD = "card_ad",
}
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.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:getMaxChapterId() >= cfg.stage
if not hideToast and not isOpen then
local page = DataManager.ChapterData:getChapterPage(cfg.stage)
local stage = DataManager.ChapterData:getChapterStage(cfg.stage)
GFunc.showToast(I18N:getGlobalText(I18N.GlobalConst.FUNC_OPEN_STAGE, page .. "-" .. stage))
end
return isOpen
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