5e0d58cfad
EN: 1.2.0.60 CN: 1.2.0.61 JP: 1.2.0.63 KR: 1.2.0.67
42 lines
1.0 KiB
Lua
42 lines
1.0 KiB
Lua
local PB = require("pb")
|
|
local ipairs = ipairs
|
|
local rawget = rawget
|
|
local setmetatable = setmetatable
|
|
local ConfigData = require("GameCore.Data.ConfigData")
|
|
local ReadTable = {}
|
|
function ReadTable:__index(k)
|
|
local raw = rawget(self, "raw")
|
|
local meta = rawget(self, "meta")
|
|
local lang = meta.lang
|
|
local loaded = meta.loaded
|
|
local pbName = meta.pbName
|
|
local langs = meta.langs
|
|
local line = raw[k]
|
|
if langs ~= nil and lang == nil and not loaded then
|
|
lang = ConfigData.LoadLanguageTable(LanguageTable.GetType(), pbName)
|
|
meta.lang = lang
|
|
meta.loaded = true
|
|
end
|
|
if nil ~= line then
|
|
local lineInstance = assert(PB.decode("nova.client." .. pbName, line))
|
|
if langs ~= nil then
|
|
for _, v in ipairs(langs) do
|
|
local field = lineInstance[v]
|
|
if field ~= nil and lang ~= nil then
|
|
lineInstance[v] = lang[field] or ""
|
|
end
|
|
end
|
|
end
|
|
return lineInstance
|
|
end
|
|
end
|
|
function LoadDataTable(meta, raw, lang)
|
|
local newTable = {
|
|
raw = raw,
|
|
meta = meta,
|
|
lang = lang
|
|
}
|
|
setmetatable(newTable, ReadTable)
|
|
return newTable
|
|
end
|