PGRData/Script/matrix/xconfig/XReviewActivityConfigs.lua
2024-09-01 22:49:41 +02:00

126 lines
No EOL
5 KiB
Lua
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

--==================
--成就系统相关配置表
--模块负责:吕天元
--==================
XReviewActivityConfigs = XReviewActivityConfigs or {}
--================================================================
-- 配置表地址 --
--================================================================
local SHARE_TABLE_PATH = "Share/ReviewActivity/"
local CLIENT_TABLE_PATH = "Client/ReviewActivity/"
local TABLE_REVIEW_ACTIVITY_INFO = CLIENT_TABLE_PATH .. "ReviewActivityInfo.tab"
local TABLE_REVIEW_ACTIVITY = SHARE_TABLE_PATH .. "ReviewActivity.tab"
local TABLE_REVIEW_ACTIVITY_PAGE_INFO = CLIENT_TABLE_PATH .. "ReviewActivityPageInfo.tab"
--=================================================
--=================================================
local Configs = {}
--=============
--配置表枚举
--Id : 枚举Id
--Path : 关联的表地址 (日志中使用)
--Key : 要检查的字段名 (日志中使用)
--=============
XReviewActivityConfigs.TableKey = {
ReviewActivityInfo = {Id = 1, Path = TABLE_REVIEW_ACTIVITY_INFO}, --回顾活动文本信息
ReviewActivityPageInfo = {Id = 2, Path = TABLE_REVIEW_ACTIVITY},
ActivityId2InfoDic = {Id = 3, Path = TABLE_REVIEW_ACTIVITY_INFO, Key = "ActivityId"}, --回顾活动Id对应文本信息列表字典
ActivityId2PageDic = {Id = 4, Path = TABLE_REVIEW_ACTIVITY_PAGE_INFO, Key = "ActivityId"} --回顾活动Id对应页面内容配置字典
}
XReviewActivityConfigs.ModelType = {
None = 0,
TopAbility = 1
}
XReviewActivityConfigs.ModelTypeName = {
[0] = "None",
[1] = "TopAbility",
}
--=============
--初始化ActivityId -> 文本信息列表字典
--=============
local InitActivityId2InfoDic = function()
local tableId = XReviewActivityConfigs.TableKey.ActivityId2InfoDic.Id
Configs[tableId] = {}
for _, cfg in pairs (XReviewActivityConfigs.GetAllConfigs(XReviewActivityConfigs.TableKey.ReviewActivityInfo) or {}) do
local activityId = cfg.ActivityId
local page = cfg.Page
if not Configs[tableId][activityId] then Configs[tableId][activityId] = {} end
local pageDic = Configs[tableId][activityId]
if not pageDic[page] then pageDic[page] = {} end
table.insert(pageDic[page], cfg)
end
end
local InitActivityId2PageDic = function()
local tableId = XReviewActivityConfigs.TableKey.ActivityId2PageDic.Id
Configs[tableId] = {}
for _, cfg in pairs (XReviewActivityConfigs.GetAllConfigs(XReviewActivityConfigs.TableKey.ReviewActivityPageInfo) or {}) do
local activityId = cfg.ActivityId
local page = cfg.Page
if not Configs[tableId][activityId] then Configs[tableId][activityId] = {} end
Configs[tableId][activityId][page] = cfg
end
end
--=============
--初始化所有配置表和字典
--=============
function XReviewActivityConfigs.Init()
Configs[XReviewActivityConfigs.TableKey.ReviewActivityInfo.Id] = XTableManager.ReadByIntKey(TABLE_REVIEW_ACTIVITY_INFO, XTable.XTableReviewActivityInfo, "Id")
--Configs[XReviewActivityConfigs.TableKey.ReviewActivity.Id] = XTableManager.ReadByIntKey(TABLE_REVIEW_ACTIVITY, XTable.XTableReviewActivity, "Id")
Configs[XReviewActivityConfigs.TableKey.ReviewActivityPageInfo.Id] = XTableManager.ReadByIntKey(TABLE_REVIEW_ACTIVITY_PAGE_INFO, XTable.XTableReviewActivityPageInfo, "Id")
InitActivityId2InfoDic()
InitActivityId2PageDic()
end
--=============
--给定配置表Key获取该配置表全部配置
--@tableKey : XReviewActivityConfigs.TableKey枚举项
--=============
function XReviewActivityConfigs.GetAllConfigs(tableKey)
if not tableKey or not tableKey.Id then
XLog.Error("The tableKey given is not exist. tableKey : " .. tostring(tableKey))
return {}
end
return Configs[tableKey.Id]
end
--=============
--给定配置表Key和Id获取该配置表指定Id的配置
--@params:
--tableKey : XReviewActivityConfigs.TableKey枚举项
--idKey : 该配置表的主键Id或Key
--noTips : 若没有查找到对应项,是否要打印错误日志
--=============
function XReviewActivityConfigs.GetCfgByIdKey(tableKey, idKey, noTips)
if not tableKey or not idKey then
if not noTips then
XLog.Error("XReviewActivityConfigs.GetCfgByIdKey error: tableKey or idKey is null!")
end
return {}
end
local allCfgs = XReviewActivityConfigs.GetAllConfigs(tableKey)
if not allCfgs then
return {}
end
local cfg = allCfgs[idKey]
if not cfg then
if not noTips then
XLog.ErrorTableDataNotFound(
"XReviewActivityConfigs.GetCfgByIdKey",
tableKey.Key or "唯一Id",
tableKey.Path,
tableKey.Key or "唯一Id",
tostring(idKey))
end
return {}
end
return cfg
end
function XReviewActivityConfigs.GetTotlePageNum(activityId)
local pages = XReviewActivityConfigs.GetCfgByIdKey(
XReviewActivityConfigs.TableKey.ActivityId2PageDic,
activityId
)
return pages and #pages or 0
end