Files
StellaSora_DataLua/lua/gamecore/data/luadatatable.lua
T
SL1900 5e0d58cfad Initial version - 1.2.0.60
EN: 1.2.0.60
CN: 1.2.0.61
JP: 1.2.0.63
KR: 1.2.0.67
2025-12-03 01:00:00 +09:00

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