119 lines
3.0 KiB
Lua
119 lines
3.0 KiB
Lua
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
|
|
|
|
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 |