c1_lua/lua/app/common/config_manager.lua
2023-05-30 03:38:33 +00:00

362 lines
6.1 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)
if CS.BF.BFMain.IsShenhe and configName == "mall_treasure" then
return self:getMallTreasureConfig().data
end
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:getMainKeyWithOtherKey(configName, keyName, keyValue)
local config = self.configs[configName]
if config == nil then
config = self:_getConfig(configName)
end
if config.keys == nil then
return nil
end
local kv = config.keys[keyName]
if kv[keyValue] then
return kv[keyValue]._id
end
return nil
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_base]
if data then
monsterFullData[k].model_id = data.model_id
monsterFullData[k].hurt_num = data.hurt_num
monsterFullData[k].body = data.body
monsterFullData[k].model_ui = data.model_ui
-- else
-- Logger.logHighlight("not data monster_baseid = " .. v.monster_baseid)
end
count = count + 1
end
self:clearConfigCache(name)
end
handleMonsterGrow("monster_chapter")
handleMonsterGrow("monster_daily_challenge")
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
function ConfigManager:getMallTreasureConfig()
local mallTreasure = {
[2]={
["recharge_id"]=1,
["reward"]={
{
["type"]=1,
["id"]=2,
["num"]=30
}
},
["limit"]=1
},
[3]={
["recharge_id"]=2,
["reward"]={
{
["type"]=1,
["id"]=2,
["num"]=60
}
},
["limit"]=1
},
[4]={
["recharge_id"]=3,
["reward"]={
{
["type"]=1,
["id"]=2,
["num"]=90
}
},
["limit"]=2
},
[5]={
["recharge_id"]=4,
["reward"]={
{
["type"]=1,
["id"]=2,
["num"]=120
}
},
["limit"]=2
},
[6]={
["recharge_id"]=5,
["reward"]={
{
["type"]=1,
["id"]=2,
["num"]=150
}
},
["limit"]=2
},
[7]={
["recharge_id"]=6,
["reward"]={
{
["type"]=1,
["id"]=2,
["num"]=180
}
},
["limit"]=3
},
[8]={
["recharge_id"]=7,
["reward"]={
{
["type"]=1,
["id"]=2,
["num"]=210
}
},
["limit"]=3
},
[9]={
["recharge_id"]=8,
["reward"]={
{
["type"]=1,
["id"]=2,
["num"]=240
}
},
["limit"]=3
},
[10]={
["recharge_id"]=9,
["reward"]={
{
["type"]=1,
["id"]=2,
["num"]=270
}
},
["limit"]=3
},
[11]={
["recharge_id"]=10,
["reward"]={
{
["type"]=1,
["id"]=2,
["num"]=300
}
},
["limit"]=3
},
[12]={
["recharge_id"]=11,
["reward"]={
{
["type"]=1,
["id"]=2,
["num"]=360
}
},
["limit"]=3
},
[13]={
["recharge_id"]=12,
["reward"]={
{
["type"]=1,
["id"]=2,
["num"]=450
}
},
["limit"]=3
},
[14]={
["recharge_id"]=13,
["reward"]={
{
["type"]=1,
["id"]=2,
["num"]=600
}
},
["limit"]=3
},
[15]={
["recharge_id"]=14,
["reward"]={
{
["type"]=1,
["id"]=2,
["num"]=750
}
},
["limit"]=3
},
[16]={
["recharge_id"]=15,
["reward"]={
{
["type"]=1,
["id"]=2,
["num"]=900
}
},
["limit"]=3
},
[17]={
["recharge_id"]=16,
["reward"]={
{
["type"]=1,
["id"]=2,
["num"]=1500
}
},
["limit"]=3
},
[18]={
["recharge_id"]=17,
["reward"]={
{
["type"]=1,
["id"]=2,
["num"]=2100
}
},
["limit"]=3
},
[19]={
["recharge_id"]=18,
["reward"]={
{
["type"]=1,
["id"]=2,
["num"]=3000
}
},
["limit"]=3
},
[20]={
["recharge_id"]=19,
["reward"]={
{
["type"]=1,
["id"]=2,
["num"]=6000
}
},
["limit"]=3
}
}
local config = {
data=mallTreasure,count=12
}
return config
end
return ConfigManager