PGRData/Script/matrix/xconfig/XAchievementConfigs.lua

114 lines
No EOL
5 KiB
Lua
Raw 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.

--==================
--成就系统相关配置表
--模块负责:吕天元
--==================
XAchievementConfigs = XAchievementConfigs or {}
--================================================================
-- 配置表地址 --
--================================================================
local SHARE_TABLE_PATH = "Share/Achievement/"
local CLIENT_TABLE_PATH = "Client/Achievement/"
local TABLE_ACHIEVEMENT_BASETYPE = CLIENT_TABLE_PATH .. "AchievementBaseTypeInfo.tab"
local TABLE_ACHIEVEMENT_TYPE = CLIENT_TABLE_PATH .. "AchievementTypeInfo.tab"
--local TABLE_REVIEW_ACTIVITY_INFO = CLIENT_TABLE_PATH .. "ReviewActivityInfo.tab"
local TABLE_ACHIEVEMENT = SHARE_TABLE_PATH .. "Achievement.tab"
--local TABLE_REVIEW_ACTIVITY = SHARE_TABLE_PATH .. "ReviewActivity.tab"
--=================================================
--=================================================
local Configs = {}
--=============
--配置表枚举
--Id : 枚举Id
--Path : 关联的表地址 (日志中使用)
--Key : 要检查的字段名 (日志中使用)
--=============
XAchievementConfigs.TableKey = {
AchievementBaseType = {Id = 1, Path = TABLE_ACHIEVEMENT_BASETYPE}, --成就基础类型配置
AchievementType = {Id = 2, Path = TABLE_ACHIEVEMENT_TYPE}, --成就类型配置
--ReviewActivityInfo = {Id = 3, Path = TABLE_REVIEW_ACTIVITY_INFO}, --回顾活动文本信息
Achievement = {Id = 3, Path = TABLE_ACHIEVEMENT}, --成就表配置
--ReviewActivity = {Id = 5, Path = TABLE_REVIEW_ACTIVITY}, --回顾活动配置
Type2AchievementDic = {Id = 4, Path = TABLE_ACHIEVEMENT, Key = "AchievementTypeId"}, --
BaseId2AchievementTypeDic = {Id = 5, Path = TABLE_ACHIEVEMENT_TYPE, Key = "BaseTypeId"}
}
--=============
--初始化BaseTypeId -> 成就类型字典
--=============
local InitBaseId2AchievementTypeDic = function()
local tableId = XAchievementConfigs.TableKey.BaseId2AchievementTypeDic.Id
Configs[tableId] = {}
for _, cfg in pairs (XAchievementConfigs.GetAllConfigs(XAchievementConfigs.TableKey.AchievementType) or {}) do
local id = cfg.BaseTypeId
if not Configs[tableId][id] then Configs[tableId][id] = {} end
table.insert(Configs[tableId][id], cfg)
end
end
--=============
--初始化TypeId -> 成就类型字典
--=============
local InitType2AchievementDic = function()
local tableId = XAchievementConfigs.TableKey.Type2AchievementDic.Id
Configs[tableId] = {}
for _, cfg in pairs (XAchievementConfigs.GetAllConfigs(XAchievementConfigs.TableKey.Achievement) or {}) do
local id = cfg.AchievementTypeId
if not Configs[tableId][id] then Configs[tableId][id] = {} end
table.insert(Configs[tableId][id], cfg)
end
end
--=============
--初始化所有配置表和字典
--=============
function XAchievementConfigs.Init()
Configs[XAchievementConfigs.TableKey.AchievementBaseType.Id] = XTableManager.ReadByIntKey(TABLE_ACHIEVEMENT_BASETYPE, XTable.XTableAchievementBaseTypeInfo, "Id")
Configs[XAchievementConfigs.TableKey.AchievementType.Id] = XTableManager.ReadByIntKey(TABLE_ACHIEVEMENT_TYPE, XTable.XTableAchievementTypeInfo, "Id")
--Configs[XAchievementConfigs.TableKey.ReviewActivityInfo.Id] = XTableManager.ReadByStringKey(TABLE_REVIEW_ACTIVITY_INFO, XTable.XTableReviewActivityInfo, "Key")
Configs[XAchievementConfigs.TableKey.Achievement.Id] = XTableManager.ReadByIntKey(TABLE_ACHIEVEMENT, XTable.XTableAchievement, "Id")
--Configs[XAchievementConfigs.TableKey.ReviewActivity.Id] = XTableManager.ReadByIntKey(TABLE_REVIEW_ACTIVITY, XTable.XTableReviewActivity, "Id")
InitBaseId2AchievementTypeDic()
InitType2AchievementDic()
end
--=============
--给定配置表Key获取该配置表全部配置
--@tableKey : XAchievementConfigs.TableKey枚举项
--=============
function XAchievementConfigs.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 : XAchievementConfigs.TableKey枚举项
--idKey : 该配置表的主键Id或Key
--noTips : 若没有查找到对应项,是否要打印错误日志
--=============
function XAchievementConfigs.GetCfgByIdKey(tableKey, idKey, noTips)
if not tableKey or not idKey then
if not noTips then
XLog.Error("XAchievementConfigs.GetCfgByIdKey error: tableKey or idKey is null!")
end
return {}
end
local allCfgs = XAchievementConfigs.GetAllConfigs(tableKey)
if not allCfgs then
return {}
end
local cfg = allCfgs[idKey]
if not cfg then
if not noTips then
XLog.ErrorTableDataNotFound(
"XAchievementConfigs.GetCfgByIdKey",
tableKey.Key or "唯一Id",
tableKey.Path,
tableKey.Key or "唯一Id",
tostring(idKey))
end
return {}
end
return cfg
end