local ConfigManager = { configs = {} } local CONFIG_PATH = "app/config/" function ConfigManager:_getConfig(configName) local config = require(CONFIG_PATH .. configName) self.configs[configName] = config return config end function ConfigManager:getConfig(configName) local config = self.configs[configName] if config == nil then config = self:_getConfig(configName) end return config.data end function ConfigManager:getItemConfig() if self.itemCfg == nil then self.itemCfg = self:getConfig("item") end return self.itemCfg end if NOT_PUBLISH then ConfigManager.__getConfig = ConfigManager.getConfig function ConfigManager:getConfig(configName) if string.lower(configName) ~= configName then Logger.logFatal("ConfigManager:getConfig 传入的表名不能有大写 " .. configName) end return self:__getConfig(configName) end end function ConfigManager:reloadConfig(configName) self:clearConfigCache(configName) self.configs[configName] = nil self:getConfig(configName) end function ConfigManager:getConfigNum(configName) local config = self.configs[configName] if config == nil then config = self:_getConfig(configName) end return config.count end function ConfigManager:getConfigWithOtherKey(configName, keyName) local config = self.configs[configName] if config == nil then config = self:_getConfig(configName) end if config.keys == nil then return nil end return config.keys[keyName] end function ConfigManager:reloadAllConfig() for configName, v in pairs(self.configs) do self:reloadConfig(configName) end self:preLoadConfig() end function ConfigManager:preLoadConfig() -- local monsterBase = self:_getConfig("monster_base") -- self:clearConfigCache("monster_base") -- local baseData = monsterBase.data -- local monsterFullData = {} -- local count = 0 -- local function handleMonsterGrow(name) -- local monsterGrowConfig = self:_getConfig(name) -- local growData = monsterGrowConfig.data -- for k, v in pairs(growData) do -- monsterFullData[k] = v -- local data = baseData[v.monster_baseid] -- if data then -- monsterFullData[k].collision_radius = data.collision_radius -- monsterFullData[k].model_id = data.model_id -- monsterFullData[k].model_fight = data.model_fight -- monsterFullData[k].fx_fight = data.fx_fight -- monsterFullData[k].size = data.size -- -- else -- -- Logger.logHighlight("not data monster_baseid = " .. v.monster_baseid) -- end -- count = count + 1 -- end -- self:clearConfigCache(name) -- end -- handleMonsterGrow("monster_stage") -- self.configs["monster"] = { -- data = monsterFullData, -- count = count -- } -- if EDITOR_MODE then -- local realCount = 0 -- for k, v in pairs(monsterFullData) do -- realCount = realCount + 1 -- end -- if count ~= realCount then -- Logger.logFatal("same id in monster config") -- end -- end end function ConfigManager:getChapterConfig(id) if not id then return end local idx = math.ceil(id/5000) local cfg = ConfigManager:getConfig("chapter" .. idx) return cfg[id], cfg end function ConfigManager:clearConfigCache(configName) package.loaded[CONFIG_PATH .. configName] = nil end return ConfigManager