89 lines
2.0 KiB
Lua
89 lines
2.0 KiB
Lua
|
------------------------------------------------
|
||
|
--作者: gzg
|
||
|
--日期: 2019-03-25
|
||
|
--文件: DataConfig.lua
|
||
|
--模块: DataConfig
|
||
|
--描述: 数据加载处理
|
||
|
------------------------------------------------
|
||
|
--//模块定义
|
||
|
local DataConfig = {}
|
||
|
local ConfigNames = nil
|
||
|
|
||
|
--记录加载各个配置时间
|
||
|
local L_IsReCord_Ms = false;
|
||
|
|
||
|
--记录加载各个配置的内存
|
||
|
local L_IsRecord_GCAlloc = false;
|
||
|
|
||
|
local MetaTable = {}
|
||
|
setmetatable(DataConfig, MetaTable)
|
||
|
|
||
|
MetaTable.__index = function(mytable, name)
|
||
|
return DataConfig.Load(name)
|
||
|
end
|
||
|
|
||
|
--数据加载
|
||
|
function DataConfig.Load(name)
|
||
|
if L_IsRecord_GCAlloc and Record then
|
||
|
Record.GCBegin(name)
|
||
|
end
|
||
|
if L_IsReCord_Ms and Record then
|
||
|
Record.TimeBegin(name)
|
||
|
end
|
||
|
DataConfig[name] = require(string.format("Config.Data.%s", name))
|
||
|
if L_IsReCord_Ms and Record then
|
||
|
Record.TimeEnd()
|
||
|
end
|
||
|
if L_IsRecord_GCAlloc and Record then
|
||
|
Record.GCEnd()
|
||
|
end
|
||
|
return DataConfig[name]
|
||
|
end
|
||
|
|
||
|
--卸载数据
|
||
|
function DataConfig.UnLoad(name)
|
||
|
if DataConfig[name] then
|
||
|
DataConfig.RemoveRequiredByName(string.format("Config.Data.%s", name))
|
||
|
DataConfig[name] = nil
|
||
|
end
|
||
|
end
|
||
|
|
||
|
--获取所有配置表名称
|
||
|
function DataConfig.GetConfigNames()
|
||
|
if not ConfigNames then
|
||
|
ConfigNames = require("Config.Data.ConfigNames")
|
||
|
end
|
||
|
return ConfigNames
|
||
|
end
|
||
|
|
||
|
--加载所有配置数据
|
||
|
function DataConfig.LoadAll()
|
||
|
local _names = DataConfig.GetConfigNames()
|
||
|
for i = 1, #_names do
|
||
|
DataConfig.Load(_names[i])
|
||
|
end
|
||
|
end
|
||
|
|
||
|
--卸载所有配置数据
|
||
|
function DataConfig.UnLoadAll()
|
||
|
local _names = DataConfig.GetConfigNames()
|
||
|
for i = 1, #_names do
|
||
|
DataConfig.UnLoad(_names[i])
|
||
|
end
|
||
|
end
|
||
|
|
||
|
function DataConfig.RemoveRequiredByName(preName)
|
||
|
for key, _ in pairs(package.preload) do
|
||
|
if string.find(tostring(key), preName) == 1 then
|
||
|
package.preload[key] = nil
|
||
|
end
|
||
|
end
|
||
|
for key, _ in pairs(package.loaded) do
|
||
|
if string.find(tostring(key), preName) == 1 then
|
||
|
package.loaded[key] = nil
|
||
|
end
|
||
|
end
|
||
|
end
|
||
|
|
||
|
return DataConfig
|