c1_lua/lua/app/common/module_manager.lua
2023-05-05 11:57:41 +08:00

158 lines
4.4 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",
DevToolManager = "app/module/gm/dev_tool_manager",
MaincityManager = "app/module/maincity/maincity_manager",
-- 引导
TutorialManager = "app/module/tutorial/tutorial_manager",
ToastManager = "app/ui/common/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",
-- 挂机
IdleManager = "app/module/idle/idle_manager",
-- 活动
-- SevenDayManager = "app/module/activity/seven_day/seven_day_manager",
-- 设置
GameSettingManager = "app/module/game_setting/game_setting_manager",
-- 活动
ActivityManager = "app/module/activity/activity_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()
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