167 lines
6.3 KiB
Lua
167 lines
6.3 KiB
Lua
|
--===========================
|
|||
|
--打地鼠配置读写
|
|||
|
--模块负责:吕天元
|
|||
|
--===========================
|
|||
|
XHitMouseConfigs = XHitMouseConfigs or {}
|
|||
|
--================================================================
|
|||
|
-- 配置表地址 --
|
|||
|
--================================================================
|
|||
|
local SHARE_TABLE_PATH = "Share/MiniActivity/HitMouse/"
|
|||
|
local CLIENT_TABLE_PATH = "Client/MiniActivity/HitMouse/"
|
|||
|
|
|||
|
local TABLE_ACTIVITY = SHARE_TABLE_PATH .. "HitMouseActivity.tab"
|
|||
|
local TABLE_STAGE = SHARE_TABLE_PATH .. "HitMouseStage.tab"
|
|||
|
|
|||
|
local TABLE_MOLE = CLIENT_TABLE_PATH .. "HitMouseMole.tab"
|
|||
|
local TABLE_GAME = CLIENT_TABLE_PATH .. "HitMouseGame.tab"
|
|||
|
local TABLE_REFRESH = CLIENT_TABLE_PATH .. "HitMouseRefresh.tab"
|
|||
|
--================================================================
|
|||
|
-- 配置表 --
|
|||
|
--================================================================
|
|||
|
local Configs = {}
|
|||
|
|
|||
|
--================================================================
|
|||
|
-- 搜索用字典 --
|
|||
|
--================================================================
|
|||
|
|
|||
|
--================================================================
|
|||
|
-- 玩法枚举与常数定义 --
|
|||
|
--================================================================
|
|||
|
--=============
|
|||
|
--配置表枚举
|
|||
|
--Id : 枚举Id
|
|||
|
--Path : 关联的表地址 (日志中使用)
|
|||
|
--Key : 要检查的字段名 (日志中使用)
|
|||
|
--=============
|
|||
|
XHitMouseConfigs.TableKey = {
|
|||
|
Activity = {Id = 1, Path = TABLE_ACTIVITY}, --基础活动配置
|
|||
|
Stage = {Id = 2, Path = TABLE_STAGE}, --模式配置
|
|||
|
Mole = {Id = 3, Path = TABLE_MOLE}, --地鼠配置
|
|||
|
Game = {Id = 4, Path = TABLE_GAME}, --小游戏配置
|
|||
|
Refresh = {Id = 5, Path = TABLE_REFRESH}, --刷新表配置
|
|||
|
Activity2Stage = {Id = 6, Path = TABLE_STAGE, Key = "ActivityId"}, --活动ID对应关卡
|
|||
|
Stage2Refresh = {Id = 7, Path = TABLE_STAGE, Key = "Id"}, --关卡ID对应到的刷新表集合
|
|||
|
}
|
|||
|
|
|||
|
XHitMouseConfigs.MoleStatus = {
|
|||
|
Default = 0, --空
|
|||
|
SetMole = 1, --设置完地鼠
|
|||
|
Appear = 2, --地鼠出现
|
|||
|
Wait = 3, --地鼠待机
|
|||
|
Hit = 4, --地鼠被击中
|
|||
|
Disappear = 5, --地鼠消失
|
|||
|
Rest = 6, --休息时间
|
|||
|
}
|
|||
|
|
|||
|
XHitMouseConfigs.MoleStatusName = {
|
|||
|
[0] = "Default",
|
|||
|
[1] = "SetMole",
|
|||
|
[2] = "Appear",
|
|||
|
[3] = "Wait",
|
|||
|
[4] = "Hit",
|
|||
|
[5] = "Disappear",
|
|||
|
[6] = "Rest"
|
|||
|
}
|
|||
|
|
|||
|
local function InitActivity2Stage()
|
|||
|
Configs[XHitMouseConfigs.TableKey.Activity2Stage.Id] = {}
|
|||
|
local dic = Configs[XHitMouseConfigs.TableKey.Activity2Stage.Id]
|
|||
|
local allStagesCfgs = XHitMouseConfigs.GetAllConfigs(XHitMouseConfigs.TableKey.Stage)
|
|||
|
for stageId, cfg in pairs(allStagesCfgs or {}) do
|
|||
|
if not dic[cfg.ActivityId] then
|
|||
|
dic[cfg.ActivityId] = {}
|
|||
|
end
|
|||
|
table.insert(dic[cfg.ActivityId], cfg)
|
|||
|
end
|
|||
|
end
|
|||
|
|
|||
|
local function InitStage2Refresh()
|
|||
|
Configs[XHitMouseConfigs.TableKey.Stage2Refresh.Id] = {}
|
|||
|
local dic = Configs[XHitMouseConfigs.TableKey.Stage2Refresh.Id]
|
|||
|
local allStagesCfgs = XHitMouseConfigs.GetAllConfigs(XHitMouseConfigs.TableKey.Stage)
|
|||
|
for stageId, cfg in pairs(allStagesCfgs or {}) do
|
|||
|
local refreshIds = string.Split(cfg.MouseRefresh, '|')
|
|||
|
dic[stageId] = {}
|
|||
|
for _, refreshId in pairs(refreshIds or {}) do
|
|||
|
local id = tonumber(refreshId)
|
|||
|
local cfg = XHitMouseConfigs.GetCfgByIdKey(
|
|||
|
XHitMouseConfigs.TableKey.Refresh,
|
|||
|
id
|
|||
|
)
|
|||
|
if cfg then
|
|||
|
dic[stageId][cfg.HitCount] = cfg
|
|||
|
end
|
|||
|
end
|
|||
|
end
|
|||
|
end
|
|||
|
--=============
|
|||
|
--初始化所有配置表和字典
|
|||
|
--=============
|
|||
|
function XHitMouseConfigs.Init()
|
|||
|
Configs[XHitMouseConfigs.TableKey.Activity.Id] = XTableManager.ReadByIntKey(TABLE_ACTIVITY, XTable.XTableHitMouseActivity, "Id")
|
|||
|
Configs[XHitMouseConfigs.TableKey.Stage.Id] = XTableManager.ReadByIntKey(TABLE_STAGE, XTable.XTableHitMouseStage, "Id")
|
|||
|
Configs[XHitMouseConfigs.TableKey.Mole.Id] = XTableManager.ReadByIntKey(TABLE_MOLE, XTable.XTableHitMouseMole, "Id")
|
|||
|
Configs[XHitMouseConfigs.TableKey.Game.Id] = XTableManager.ReadByIntKey(TABLE_GAME, XTable.XTableHitMouseGame, "Id")
|
|||
|
Configs[XHitMouseConfigs.TableKey.Refresh.Id] = XTableManager.ReadByIntKey(TABLE_REFRESH, XTable.XTableHitMouseRefresh, "Id")
|
|||
|
InitActivity2Stage()
|
|||
|
InitStage2Refresh()
|
|||
|
end
|
|||
|
|
|||
|
--=============
|
|||
|
--给定配置表Key,获取该配置表全部配置
|
|||
|
--@tableKey : XHitMouseConfigs.TableKey枚举项
|
|||
|
--=============
|
|||
|
function XHitMouseConfigs.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 : XHitMouseConfigs.TableKey枚举项
|
|||
|
--idKey : 该配置表的主键Id或Key
|
|||
|
--noTips : 若没有查找到对应项,是否要打印错误日志
|
|||
|
--=============
|
|||
|
function XHitMouseConfigs.GetCfgByIdKey(tableKey, idKey, noTips)
|
|||
|
if not tableKey or not idKey then
|
|||
|
XLog.Error("XHitMouseConfigs.GetCfgByIdKey error: tableKey or idKey is null!")
|
|||
|
return {}
|
|||
|
end
|
|||
|
local allCfgs = XHitMouseConfigs.GetAllConfigs(tableKey)
|
|||
|
if not allCfgs then
|
|||
|
return {}
|
|||
|
end
|
|||
|
local cfg = allCfgs[idKey]
|
|||
|
if not cfg then
|
|||
|
if not noTips then
|
|||
|
XLog.ErrorTableDataNotFound(
|
|||
|
"XHitMouseConfigs.GetCfgByIdKey",
|
|||
|
tableKey.Key or "唯一Id",
|
|||
|
tableKey.Path,
|
|||
|
tableKey.Key or "唯一Id",
|
|||
|
tostring(idKey))
|
|||
|
end
|
|||
|
return {}
|
|||
|
end
|
|||
|
return cfg
|
|||
|
end
|
|||
|
|
|||
|
function XHitMouseConfigs.GetCfgItem(tableKey, idKey, item, noTips)
|
|||
|
local cfg = XHitMouseConfigs.GetCfgByIdKey(tableKey, idKey, noTips)
|
|||
|
if next(cfg) then
|
|||
|
if cfg[item] then
|
|||
|
return cfg[item]
|
|||
|
elseif not noTips then
|
|||
|
XLog.ErrorTableDataNotFound(
|
|||
|
"XHitMouseConfigs.GetCfgItem",
|
|||
|
item or "唯一Id",
|
|||
|
tableKey.Path,
|
|||
|
tableKey.Key or "唯一Id",
|
|||
|
tostring(idKey))
|
|||
|
end
|
|||
|
end
|
|||
|
return nil
|
|||
|
end
|