PGRData/Script/matrix/xconfig/XPivotCombatConfigs.lua

395 lines
No EOL
15 KiB
Lua

XPivotCombatConfigs = XPivotCombatConfigs or {}
--region 配置表路径
--活动入口配置路径
local TABLE_ACTIVITY_PATH = "Share/Fuben/PivotCombat/PivotCombatActivity.tab"
--区域总控路径
local TABLE_REGION_PATH = "Share/Fuben/PivotCombat/PivotCombatRegion.tab"
--关卡库路径
local TABLE_STAGELIB_PATH = "Share/Fuben/PivotCombat/PivotCombatStageLib.tab"
--排名->图标配置路径
local TABLE_RANKICON_PATH = "Client/Fuben/PivotCombat/PivotCombatRankIcon.tab"
--供能效果库
local TABLE_EFFECTLIB_PATH = "Share/Fuben/PivotCombat/PivotCombatEffectLib.tab"
--机器人配置表
local TABLE_ROBOT_PATH = "Share/Fuben/PivotCombat/PivotCombatRobot.tab"
--积分关卡结算描述
local TABLE_SETTLE_PATH = "Client/Fuben/PivotCombat/PivotCombatSettleDesc.tab"
--独域技能检测
local TABLE_SKILLCHECK_PATH = "Client/Fuben/PivotCombat/PivotCombatSkillCheck.tab"
--困难度设置
local TABLE_DIFFICULT_PATH = "Client/Fuben/PivotCombat/PivotCombatDifficult.tab"
--endregion
--region 局部变量
local _ActivityConfigs = {} -- 活动入口配置
local _RegionConfigs = {} --区域总控
local _StageLibConfigs = {} --关卡库
local _CurRegionConfigs = {} --当期活动总控
local _LibId2StageLibConfigs = {} --Key(关卡库Id):Value(关卡库配置)
local _StageId2Config = {} --关卡Id -> 关卡库配置
local _Ranking2IconConfigs = {} --排名->图标配置路径
local _EffectLibConfigs = {} --供能效果库
local _EffectIdLevel2Configs = {} --功能库Id + 等级 => 对应配置
local _RobotConfigs = {} --机器人配置
local _SettleDesc = {} --积分关卡结束二次结算描述
local _SkillCheck = {} --检测玩家是否学习独域技能
local _DifficultList = {} --检测玩家是否学习独域技能
--endregion
--region 全局变量
--二次结算key
XPivotCombatConfigs.FightResultKey = {
--基础积分
Basic = 1,
--处决积分
Execute = 2,
--连续处决积分
ContinuityExecute = 3,
--最高评分积分
HighestScore = 4,
--最高评级积分
HighestGrade = 5
}
--评分等级
XPivotCombatConfigs.FightGrade = {
[1] = "C",
[2] = "B",
[3] = "A",
[4] = "S",
[5] = "SS",
[6] = "SSS",
[7] = "SSS+",
}
--中心教学关id
XPivotCombatConfigs.TeachStageId = CS.XGame.ClientConfig:GetInt("PivotCombatTeachStageId")
--动态评分教学关卡
XPivotCombatConfigs.DynamicScoreTeachStageId = CS.XGame.ClientConfig:GetInt("PivotCombatDynamicScoreTeachStageId")
--通关时间积分初始值
XPivotCombatConfigs.FightTimeScoreInitialValue = 2000
--难度选择
XPivotCombatConfigs.DifficultType = {
--普通难度
Normal = 1,
--困难难度
Hard = 2,
}
--endregion
--region 局部函数
--===========================================================================
---@desc 获取活动配置
---@param {activityId} 活动id
---@return {table} 对应活动的配置
--===========================================================================
local GetActivityConfigById = function(activityId)
if not (activityId and XTool.IsNumberValid(activityId)) then
return {}
end
local config = _ActivityConfigs[activityId]
if not config then
XLog.Error("XPivotCombat GetActivityConfigById Error:配置不存在, activityId = "..activityId..", Path = "..TABLE_ACTIVITY_PATH)
return {}
end
return config
end
--===========================================================================
---@desc 初始化活动配置
--===========================================================================
local InitTableConfig = function()
-- 活动入口初始化
_ActivityConfigs = XTableManager.ReadByIntKey(TABLE_ACTIVITY_PATH, XTable.XTablePivotCombatActivity, "Id")
-- 区域总控初始化
_RegionConfigs = XTableManager.ReadByIntKey(TABLE_REGION_PATH, XTable.XTablePivotCombatRegion, "Id")
-- 关卡库初始化
_StageLibConfigs = XTableManager.ReadByIntKey(TABLE_STAGELIB_PATH, XTable.XTablePivotCombatStageLib, "Id")
-- 排名索引图标配置初始化
_Ranking2IconConfigs = XTableManager.ReadByIntKey(TABLE_RANKICON_PATH, XTable.XTablePivotCombatRankIcon, "Ranking")
-- 供能效果库
_EffectLibConfigs = XTableManager.ReadByIntKey(TABLE_EFFECTLIB_PATH, XTable.XTablePivotCombatEffectLib, "Id")
-- 机器人配
_RobotConfigs = XTableManager.ReadByIntKey(TABLE_ROBOT_PATH, XTable.XTablePivotCombatRobot, "Id")
-- 积分关,二次结算描述
_SettleDesc = XTableManager.ReadByIntKey(TABLE_SETTLE_PATH, XTable.XTablePivotCombatSettleDesc, "Id")
-- 检测角色是否学习了独域技能
_SkillCheck = XTableManager.ReadByIntKey(TABLE_SKILLCHECK_PATH, XTable.XTablePivotCombatSkillCheck, "CharacterId")
-- 困难度配置
_DifficultList = XTableManager.ReadByIntKey(TABLE_DIFFICULT_PATH, XTable.XTablePivotCombatDifficult, "Id")
end
--===========================================================================
---@desc 获取活动的TimeId
---@param {activityId} 活动id
---@return {int} 对应的timeId
--===========================================================================
local GetActivityTimeId = function(activityId)
local config = GetActivityConfigById(activityId)
return config.TimeId or 0
end
--===========================================================================
---@desc 初始化自定义数据结构
--===========================================================================
local InitCustomConfig = function()
for id, config in pairs(_StageLibConfigs or {}) do
--关卡库id = {当前关卡库下的配置列表,....}
if not _LibId2StageLibConfigs[config.StageLibId] then
_LibId2StageLibConfigs[config.StageLibId] = {}
end
table.insert(_LibId2StageLibConfigs[config.StageLibId], config)
_StageId2Config[config.StageId] = config
end
for _, config in pairs(_EffectLibConfigs or {}) do
if not _EffectIdLevel2Configs[config.EffectLibId] then
_EffectIdLevel2Configs[config.EffectLibId] = {}
end
_EffectIdLevel2Configs[config.EffectLibId][config.SupplyEnergyLevel] = config
end
end
--endregion
--===========================================================================
---@desc 根据活动Id更新数据
--===========================================================================
function XPivotCombatConfigs.InitConfigsByActivity(activityId)
for _, config in pairs(_RegionConfigs or {}) do
if config.ActivityId == activityId then
local difficult = config.Difficulty
if not _CurRegionConfigs[difficult] then
_CurRegionConfigs[difficult] = {}
end
_CurRegionConfigs[difficult][config.RegionId] = config
end
end
end
--===========================================================================
---@desc:获取所有的StageId
---@return:[stageId, stageId,.....]
--===========================================================================
function XPivotCombatConfigs.GetAllStageIds()
local stageIds = { XPivotCombatConfigs.TeachStageId, XPivotCombatConfigs.DynamicScoreTeachStageId }
for _, config in ipairs(_StageLibConfigs) do
if XTool.IsNumberValid(config.StageId) then
table.insert(stageIds, config.StageId)
end
end
return stageIds
end
--===========================================================================
---@desc 获取活动封面图
---@param {activityId} 活动id
---@return {string} 对应活动的封面图路径
--===========================================================================
function XPivotCombatConfigs.GetActivityBanner(activityId)
local config = GetActivityConfigById(activityId)
return config.ActivityBanner or ""
end
--===========================================================================
---@desc 获取活动名
---@param {activityId} 活动id
---@return {string} 对应活动的名称
--===========================================================================
function XPivotCombatConfigs.GetActivityName(activityId)
local config = GetActivityConfigById(activityId)
return config.Name or ""
end
--===========================================================================
---@desc 获取活动开始时间
---@param {activityId} 活动id
---@return {int}活动开始时间戳
--===========================================================================
function XPivotCombatConfigs.GetActivityStartTime(activityId)
local timeId = GetActivityTimeId(activityId)
return XFunctionManager.GetStartTimeByTimeId(timeId)
end
--===========================================================================
---@desc 获取活动结束时间
---@param {activityId} 活动id
---@return {int}活动结束时间戳
--===========================================================================
function XPivotCombatConfigs.GetActivityEndTime(activityId)
local timeId = GetActivityTimeId(activityId)
return XFunctionManager.GetEndTimeByTimeId(timeId)
end
--===========================================================================
---@desc 获取默认活动id
---@return {int} 活动id
--===========================================================================
function XPivotCombatConfigs.GetDefaultActivityId()
local timeOfNow = XTime.GetServerNowTimestamp()
local defaultId = 0
--默认保底
for _, config in ipairs(_ActivityConfigs) do
if config.Id and XTool.IsNumberValid(config.Id) then
defaultId = config.Id
end
end
--在当前活动时间段内的
for _, config in ipairs(_ActivityConfigs) do
if config.Id and XTool.IsNumberValid(config.Id) then
local timeOfBgn = XPivotCombatConfigs.GetActivityStartTime(config.Id)
local timeOfEnd = XPivotCombatConfigs.GetActivityEndTime(config.Id)
if timeOfBgn <= timeOfNow and timeOfEnd >= timeOfNow then
return config.Id
end
end
end
return defaultId
end
--===========================================================================
---@desc 获取当期活动的区域数据
---@return {table} key = regionId value = regionConfig
--===========================================================================
function XPivotCombatConfigs.GetCurRegionConfigs()
return _CurRegionConfigs
end
--===========================================================================
---@desc 获取当期活动的关卡
---@return {table} key = stageLibId value = stageLibConfig
--===========================================================================
function XPivotCombatConfigs.GetStageLibConfigs()
return _LibId2StageLibConfigs
end
--===========================================================================
---@desc 根据关卡库Id获取对应的关卡列表
---@param {stageLibId} 关卡库id
---@return {table} 对应的配置
--===========================================================================
function XPivotCombatConfigs.GetStageLibConfig(stageLibId)
return _LibId2StageLibConfigs[stageLibId] or {}
end
--===========================================================================
---@desc 获取排名对应的图标
---@return {string} icon path
--===========================================================================
function XPivotCombatConfigs.GetRankingIcon(ranking)
local config = _Ranking2IconConfigs[ranking] or {}
return config.Icon
end
--===========================================================================
---@desc 获取供能配置
---@param {effectId} 特效库ID
---@param {level} 等级
---@return {table}供能配置
--===========================================================================
function XPivotCombatConfigs.GetEffectConfig(effectId, level)
local config = _EffectIdLevel2Configs[effectId]
if config then
return config[level]
end
return {}
end
--===========================================================================
---@desc 获取机器人配置
--===========================================================================
function XPivotCombatConfigs.GetRobotSources()
return _RobotConfigs
end
--===========================================================================
---@desc 获取积分结算,二次结算描述
--===========================================================================
function XPivotCombatConfigs.GetSettleDesc(resultKey)
return _SettleDesc[resultKey].Desc or ""
end
--===========================================================================
---@desc 角色检查
--===========================================================================
function XPivotCombatConfigs.GetSpecialSkillCheck(characterId)
local cfg = _SkillCheck[characterId]
if not cfg then
return
end
return cfg.Condition
end
--===========================================================================
---@desc 获取活动开启总时间
--===========================================================================
function XPivotCombatConfigs.GetTotalTime()
local sTime = math.huge
local eTime = -1
for _,config in pairs(_ActivityConfigs) do
if config.TimeId and config.TimeId ~= 0 and XFunctionManager.IsEffectiveTimeId(config.TimeId) then
local startTime,endTime = XFunctionManager.GetTimeByTimeId(config.TimeId)
if startTime < sTime then sTime = startTime end
if endTime > eTime then eTime = endTime end
end
end
return sTime,eTime
end
--==============================
---@desc 代币Id
---@activityId 活动id
---@return number
--==============================
function XPivotCombatConfigs.GetCoinId(activityId)
local cfg = GetActivityConfigById(activityId)
return cfg and cfg.CoinId or 0
end
--==============================
---@desc 商店类型
---@activityId 活动id
---@return number
--==============================
function XPivotCombatConfigs.GetShopType(activityId)
local cfg = GetActivityConfigById(activityId)
return cfg.ShopType
end
--==============================
---@desc 获取难度名称
---@difficult 难度id
---@return string
--==============================
function XPivotCombatConfigs.GetDifficultName(difficult)
local cfg = _DifficultList[difficult]
return cfg and cfg.Name or ""
end
--==============================
---@desc 获取难度背景
---@difficult 难度id
---@return string
--==============================
function XPivotCombatConfigs.GetDifficultBg(difficult)
local cfg = _DifficultList[difficult]
return cfg and cfg.Background
end
--===========================================================================
---@desc XConfigCenter调用的初始化函数
--===========================================================================
function XPivotCombatConfigs.Init()
InitTableConfig()
InitCustomConfig()
end