955 lines
31 KiB
Lua
955 lines
31 KiB
Lua
|
local tonumber = tonumber
|
|||
|
local tableInsert = table.insert
|
|||
|
local tableSort = table.sort
|
|||
|
local mathCeil = math.ceil
|
|||
|
local ipairs = ipairs
|
|||
|
local pairs = pairs
|
|||
|
local stringSplit = string.Split
|
|||
|
local CSXTextManagerGetText = CS.XTextManager.GetText
|
|||
|
local IsNumberValid = XTool.IsNumberValid
|
|||
|
|
|||
|
local TABLE_ACTIVITY_PATH = "Share/Fuben/Stronghold/StrongholdActivity.tab"
|
|||
|
local TABLE_COMMON_CONFIG_PATH = "Share/Fuben/Stronghold/StrongholdCfg.tab"
|
|||
|
local TABLE_ENDURANCE_PATH = "Share/Fuben/Stronghold/StrongholdEndurance.tab"
|
|||
|
local TABLE_CHPATER_PATH = "Share/Fuben/Stronghold/StrongholdChapter.tab"
|
|||
|
local TABLE_GROUP_PATH = "Share/Fuben/Stronghold/StrongholdGroup.tab"
|
|||
|
local TABLE_REWARD_PATH = "Share/Fuben/Stronghold/StrongholdReward.tab"
|
|||
|
local TABLE_PLUGIN_PATH = "Share/Fuben/Stronghold/StrongholdPlugin.tab"
|
|||
|
local TABLE_ELECTRICTEAM_PATH = "Share/Fuben/Stronghold/StrongholdTeamElectric.tab"
|
|||
|
local TABLE_ELECTRIC_PATH = "Share/Fuben/Stronghold/StrongholdElectric.tab"
|
|||
|
local TABLE_BUFF_PATH = "Share/Fuben/Stronghold/StrongholdBuff.tab"
|
|||
|
local TABLE_SUPPORT_PATH = "Share/Fuben/Stronghold/StrongholdSupport.tab"
|
|||
|
local TABLE_ROBOT_GROUP_PATH = "Share/Fuben/Stronghold/StrongholdRobotGroup.tab"
|
|||
|
local TABLE_BOWRROW_PATH = "Share/Fuben/Stronghold/StrongholdBorrowCost.tab"
|
|||
|
local TABLE_STRONGHOLD_GROUP_ELEMENT_PATH = "Client/Fuben/Stronghold/StrongholdGroupElement.tab"
|
|||
|
local TABLE_LEVEL_PATH = "Share/Fuben/Stronghold/StrongholdLevel.tab"
|
|||
|
local TABLE_RUNE_PATH = "Share/Fuben/Stronghold/StrongholdRune.tab"
|
|||
|
local TABLE_SUB_RUNE_PATH = "Share/Fuben/Stronghold/StrongholdSubRune.tab"
|
|||
|
|
|||
|
local ActivityTemplate = {}
|
|||
|
local CommonConfig = {}
|
|||
|
local EnduranceConfig = {}
|
|||
|
local ChapterConfig = {}
|
|||
|
local GroupConfig = {}
|
|||
|
local RewardConfig = {}
|
|||
|
local LevelIdToRewardIdsDic = {}
|
|||
|
local PluginConfig = {}
|
|||
|
local TeamAbilityExtraElectricList = {}
|
|||
|
local ElectricConfig = {}
|
|||
|
local BuffConfig = {}
|
|||
|
local SupportConfig = {}
|
|||
|
local RobotGroupConfig = {}
|
|||
|
local BorrowCostConfig = {}
|
|||
|
local StrongholdGroupElementConfig = {}
|
|||
|
local StrongholdLevelConfig = {}
|
|||
|
local StrongholdRuneConfig = {}
|
|||
|
local StrongholdSubRuneConfig = {}
|
|||
|
|
|||
|
local DefaultActivityId = 1
|
|||
|
local ActivityIdList = {} --活动Id列表(倒序排布)
|
|||
|
|
|||
|
XStrongholdConfigs = XStrongholdConfigs or {}
|
|||
|
|
|||
|
local InitActivityConfig = function()
|
|||
|
ActivityTemplate = XTableManager.ReadByIntKey(TABLE_ACTIVITY_PATH, XTable.XTableStrongholdActivity, "Id")
|
|||
|
|
|||
|
for activityId, config in pairs(ActivityTemplate) do
|
|||
|
tableInsert(ActivityIdList, activityId)
|
|||
|
end
|
|||
|
|
|||
|
tableSort(ActivityIdList, function(aId, bId)
|
|||
|
return aId > bId --倒序排布
|
|||
|
end)
|
|||
|
|
|||
|
DefaultActivityId = ActivityIdList[1]
|
|||
|
end
|
|||
|
|
|||
|
local InitElectricTeamConfig = function()
|
|||
|
local templates = XTableManager.ReadByStringKey(TABLE_ELECTRICTEAM_PATH, XTable.XTableStrongholdTeamElectric, "Id")
|
|||
|
|
|||
|
for _, template in pairs(templates) do
|
|||
|
local config = {
|
|||
|
Ability = template.Id,
|
|||
|
Electric = template.ElectricEnerge,
|
|||
|
}
|
|||
|
tableInsert(TeamAbilityExtraElectricList, config)
|
|||
|
end
|
|||
|
|
|||
|
tableSort(TeamAbilityExtraElectricList, function(a, b)
|
|||
|
return a.Ability < b.Ability
|
|||
|
end)
|
|||
|
end
|
|||
|
|
|||
|
local InitRewardConfig = function()
|
|||
|
RewardConfig = XTableManager.ReadByIntKey(TABLE_REWARD_PATH, XTable.XTableStrongholdReward, "Id")
|
|||
|
|
|||
|
local levelId
|
|||
|
for id, config in pairs(RewardConfig) do
|
|||
|
levelId = config.LevelId
|
|||
|
|
|||
|
local rewardIds = LevelIdToRewardIdsDic[levelId]
|
|||
|
if not rewardIds then
|
|||
|
rewardIds = {}
|
|||
|
LevelIdToRewardIdsDic[levelId] = rewardIds
|
|||
|
end
|
|||
|
|
|||
|
tableInsert(rewardIds, id)
|
|||
|
end
|
|||
|
end
|
|||
|
|
|||
|
function XStrongholdConfigs.Init()
|
|||
|
CommonConfig = XTableManager.ReadByStringKey(TABLE_COMMON_CONFIG_PATH, XTable.XTableStrongholdCfg, "Key")
|
|||
|
EnduranceConfig = XTableManager.ReadByIntKey(TABLE_ENDURANCE_PATH, XTable.XTableStrongholdEndurance, "Id")
|
|||
|
ChapterConfig = XTableManager.ReadByIntKey(TABLE_CHPATER_PATH, XTable.XTableStrongholdChapter, "Id")
|
|||
|
GroupConfig = XTableManager.ReadByIntKey(TABLE_GROUP_PATH, XTable.XTableStrongholdGroup, "Id")
|
|||
|
PluginConfig = XTableManager.ReadByIntKey(TABLE_PLUGIN_PATH, XTable.XTableStrongholdPlugin, "Id")
|
|||
|
ElectricConfig = XTableManager.ReadByIntKey(TABLE_ELECTRIC_PATH, XTable.XTableStrongholdElectric, "Id")
|
|||
|
BuffConfig = XTableManager.ReadByIntKey(TABLE_BUFF_PATH, XTable.XTableStrongholdBuff, "Id")
|
|||
|
SupportConfig = XTableManager.ReadByIntKey(TABLE_SUPPORT_PATH, XTable.XTableStrongholdSupport, "Id")
|
|||
|
RobotGroupConfig = XTableManager.ReadByIntKey(TABLE_ROBOT_GROUP_PATH, XTable.XTableStrongholdRobotGroup, "Id")
|
|||
|
BorrowCostConfig = XTableManager.ReadByIntKey(TABLE_BOWRROW_PATH, XTable.XTableStrongholdBorrowCost, "Id")
|
|||
|
StrongholdGroupElementConfig = XTableManager.ReadByIntKey(TABLE_STRONGHOLD_GROUP_ELEMENT_PATH, XTable.XTableStrongholdGroupElement, "StageIdGroupIndex")
|
|||
|
StrongholdLevelConfig = XTableManager.ReadByIntKey(TABLE_LEVEL_PATH, XTable.XTableStrongholdLevel, "Id")
|
|||
|
StrongholdRuneConfig = XTableManager.ReadByIntKey(TABLE_RUNE_PATH, XTable.XTableStrongholdRune, "Id")
|
|||
|
StrongholdSubRuneConfig = XTableManager.ReadByIntKey(TABLE_SUB_RUNE_PATH, XTable.XTableStrongholdSubRune, "Id")
|
|||
|
|
|||
|
InitActivityConfig()
|
|||
|
InitElectricTeamConfig()
|
|||
|
InitRewardConfig()
|
|||
|
end
|
|||
|
|
|||
|
-----------------活动时间相关 begin--------------------
|
|||
|
--活动期数自循环,example:{1, 10} 当活动期数大于等于10的时候读取id为10的一行,否则读取id为1的一行
|
|||
|
local function GetActivityConfig(activityId)
|
|||
|
activityId = IsNumberValid(activityId) and activityId or DefaultActivityId
|
|||
|
|
|||
|
local circleId = 0
|
|||
|
for _, configId in ipairs(ActivityIdList) do
|
|||
|
if configId <= activityId then
|
|||
|
circleId = configId
|
|||
|
break
|
|||
|
end
|
|||
|
end
|
|||
|
|
|||
|
local config = ActivityTemplate[circleId]
|
|||
|
if not config then
|
|||
|
XLog.Error("XStrongholdConfigs GetActivityConfig error:配置不存在, activityId: " .. activityId .. ", 配置路径: " .. TABLE_ACTIVITY_PATH)
|
|||
|
return
|
|||
|
end
|
|||
|
|
|||
|
return config
|
|||
|
end
|
|||
|
|
|||
|
function XStrongholdConfigs.GetActivityFightAutoBeginSeconds(activityId)
|
|||
|
local config = GetActivityConfig(activityId)
|
|||
|
return config.AutoBeginSeconds
|
|||
|
end
|
|||
|
|
|||
|
function XStrongholdConfigs.GetActivityFightContinueSeconds(activityId)
|
|||
|
local config = GetActivityConfig(activityId)
|
|||
|
return config.FightContinueSeconds
|
|||
|
end
|
|||
|
|
|||
|
function XStrongholdConfigs.GetActivityFightTotalDay(activityId)
|
|||
|
local seconds = XStrongholdConfigs.GetActivityFightContinueSeconds(activityId)
|
|||
|
return mathCeil(seconds / 86400)
|
|||
|
end
|
|||
|
|
|||
|
function XStrongholdConfigs.GetActivityOneCycleSeconds(activityId)
|
|||
|
local config = GetActivityConfig(activityId)
|
|||
|
return config.OneCycleSeconds
|
|||
|
end
|
|||
|
|
|||
|
function XStrongholdConfigs.GetActivityDefaultOpenTime()
|
|||
|
local config = GetActivityConfig(DefaultActivityId)
|
|||
|
local timeId = config.OpenTimeId
|
|||
|
if not IsNumberValid(timeId) then return 0 end
|
|||
|
return XFunctionManager.GetStartTimeByTimeId(timeId)
|
|||
|
end
|
|||
|
|
|||
|
function XStrongholdConfigs.GetActivityDefaultEndTime()
|
|||
|
local openTime = XStrongholdConfigs.GetActivityDefaultOpenTime()
|
|||
|
return openTime + XStrongholdConfigs.GetActivityOneCycleSeconds(DefaultActivityId)
|
|||
|
end
|
|||
|
-----------------活动时间相关 end--------------------
|
|||
|
-----------------耐力相关 begin--------------------
|
|||
|
local function GetEnduranceConfig(day)
|
|||
|
local config = EnduranceConfig[day]
|
|||
|
if not config then
|
|||
|
XLog.Error("XStrongholdConfigs GetEnduranceConfig error:配置不存在, day: " .. day .. ", 配置路径: " .. TABLE_ENDURANCE_PATH)
|
|||
|
return
|
|||
|
end
|
|||
|
return config
|
|||
|
end
|
|||
|
|
|||
|
function XStrongholdConfigs.GetMaxEndurance(curDay, levelId)
|
|||
|
if not IsNumberValid(curDay) then
|
|||
|
return 0
|
|||
|
end
|
|||
|
|
|||
|
local maxEndurance = 0
|
|||
|
local enduracnce, config
|
|||
|
for day = 1, curDay do
|
|||
|
config = GetEnduranceConfig(day)
|
|||
|
enduracnce = config.Endurance[levelId] or 0
|
|||
|
maxEndurance = maxEndurance + enduracnce
|
|||
|
end
|
|||
|
return maxEndurance
|
|||
|
end
|
|||
|
-----------------耐力相关 end--------------------
|
|||
|
-----------------副本相关 begin--------------------
|
|||
|
XStrongholdConfigs.ChapterType = {
|
|||
|
Normal = 0, --驱逐作战
|
|||
|
Hard = 1, --维护作战
|
|||
|
}
|
|||
|
|
|||
|
local function GetChapterConfig(chapterId)
|
|||
|
local config = ChapterConfig[chapterId]
|
|||
|
if not config then
|
|||
|
XLog.Error("XStrongholdConfigs GetChapterConfig error:配置不存在, chapterId: " .. chapterId .. ", 配置路径: " .. TABLE_CHPATER_PATH)
|
|||
|
return
|
|||
|
end
|
|||
|
return config
|
|||
|
end
|
|||
|
|
|||
|
local function GetGroupConfig(groupId)
|
|||
|
local config = GroupConfig[groupId]
|
|||
|
if not config then
|
|||
|
XLog.Error("XStrongholdConfigs GetGroupConfig error:配置不存在, groupId: " .. groupId .. ", 配置路径: " .. TABLE_GROUP_PATH)
|
|||
|
return
|
|||
|
end
|
|||
|
return config
|
|||
|
end
|
|||
|
|
|||
|
function XStrongholdConfigs.GetGroupConfigPath()
|
|||
|
return TABLE_GROUP_PATH
|
|||
|
end
|
|||
|
|
|||
|
function XStrongholdConfigs.GetNextChapterId(chapterId)
|
|||
|
local nextChapterId = 0
|
|||
|
|
|||
|
local chapterType = XStrongholdConfigs.GetChapterType(chapterId)
|
|||
|
local chapterIds = XStrongholdConfigs.GetAllChapterIds(chapterType)
|
|||
|
|
|||
|
local findIndex = 0
|
|||
|
for index, inChapterId in ipairs(chapterIds) do
|
|||
|
if inChapterId == chapterId then
|
|||
|
findIndex = index + 1
|
|||
|
break
|
|||
|
end
|
|||
|
end
|
|||
|
|
|||
|
if XTool.IsNumberValid(findIndex) then
|
|||
|
nextChapterId = chapterIds[findIndex] or 0
|
|||
|
end
|
|||
|
|
|||
|
return nextChapterId
|
|||
|
end
|
|||
|
|
|||
|
function XStrongholdConfigs.GetGroupIds(chapterId)
|
|||
|
local groupIds = {}
|
|||
|
|
|||
|
local config = GetChapterConfig(chapterId)
|
|||
|
for _, groupId in ipairs(config.GroupId) do
|
|||
|
if IsNumberValid(groupId) then
|
|||
|
tableInsert(groupIds, groupId)
|
|||
|
end
|
|||
|
end
|
|||
|
|
|||
|
return groupIds
|
|||
|
end
|
|||
|
|
|||
|
function XStrongholdConfigs.GetAllGroupIds(chapterType)
|
|||
|
local groupIds = {}
|
|||
|
|
|||
|
local chapterIds = XStrongholdConfigs.GetAllChapterIds(chapterType)
|
|||
|
for _, chapterId in pairs(chapterIds) do
|
|||
|
local config = GetChapterConfig(chapterId)
|
|||
|
for _, groupId in ipairs(config.GroupId) do
|
|||
|
if IsNumberValid(groupId) then
|
|||
|
tableInsert(groupIds, groupId)
|
|||
|
end
|
|||
|
end
|
|||
|
end
|
|||
|
|
|||
|
return groupIds
|
|||
|
end
|
|||
|
|
|||
|
function XStrongholdConfigs.GetChapterType(chapterId)
|
|||
|
local config = GetChapterConfig(chapterId)
|
|||
|
return config.Type or XStrongholdConfigs.ChapterType.Normal
|
|||
|
end
|
|||
|
|
|||
|
function XStrongholdConfigs.GetChapterName(chapterId)
|
|||
|
local config = GetChapterConfig(chapterId)
|
|||
|
return config.Name or ""
|
|||
|
end
|
|||
|
|
|||
|
function XStrongholdConfigs.GetChapterUnlockCondition(chapterId)
|
|||
|
local config = GetChapterConfig(chapterId)
|
|||
|
return config.UnlockCondition or 0
|
|||
|
end
|
|||
|
|
|||
|
--章节限制使用电力上限
|
|||
|
function XStrongholdConfigs.GetChapterMaxElectricUse(chapterId)
|
|||
|
local config = GetChapterConfig(chapterId)
|
|||
|
return config.MaxElectricUse
|
|||
|
end
|
|||
|
|
|||
|
--章节是否禁用支援角色
|
|||
|
function XStrongholdConfigs.IsChapterLendCharacterBanned(chapterId)
|
|||
|
local config = GetChapterConfig(chapterId)
|
|||
|
return XTool.IsNumberValid(config.LendCharacterDisableUse) or false
|
|||
|
end
|
|||
|
|
|||
|
function XStrongholdConfigs.GetChapterBg(chapterId)
|
|||
|
local config = GetChapterConfig(chapterId)
|
|||
|
return config.Bg or ""
|
|||
|
end
|
|||
|
|
|||
|
function XStrongholdConfigs.GetChapterBanner(chapterId)
|
|||
|
local config = GetChapterConfig(chapterId)
|
|||
|
return config.Banner or ""
|
|||
|
end
|
|||
|
|
|||
|
function XStrongholdConfigs.GetChapterPrefabPath(chapterId)
|
|||
|
local config = GetChapterConfig(chapterId)
|
|||
|
return config.Prefab or ""
|
|||
|
end
|
|||
|
|
|||
|
function XStrongholdConfigs.GetChapterFirstGroupId(chapterId)
|
|||
|
local config = GetChapterConfig(chapterId)
|
|||
|
return config.GroupId and config.GroupId[1] or 0
|
|||
|
end
|
|||
|
|
|||
|
--是否为章节关底据点
|
|||
|
function XStrongholdConfigs.IsChapterLastGroupId(groupId)
|
|||
|
local chapterType = XStrongholdConfigs.GetChapterTypeByGroupId(groupId)
|
|||
|
local chapterIds = XStrongholdConfigs.GetAllChapterIds(chapterType)
|
|||
|
for _, chapterId in pairs(chapterIds) do
|
|||
|
local groupIds = XStrongholdConfigs.GetGroupIds(chapterId)
|
|||
|
if groupId == groupIds[#groupIds] then
|
|||
|
return true
|
|||
|
end
|
|||
|
end
|
|||
|
return false
|
|||
|
end
|
|||
|
|
|||
|
function XStrongholdConfigs.GetChapterLastGroupId(chapterId)
|
|||
|
local groupIds = XStrongholdConfigs.GetGroupIds(chapterId)
|
|||
|
return groupIds[#groupIds]
|
|||
|
end
|
|||
|
|
|||
|
--获取章节Id
|
|||
|
function XStrongholdConfigs.GetChapterIdByGroupId(groupId)
|
|||
|
if not IsNumberValid(groupId) then return end
|
|||
|
local chapterIds = XStrongholdConfigs.GetAllChapterIds()
|
|||
|
for _, chapterId in pairs(chapterIds) do
|
|||
|
local groupIds = XStrongholdConfigs.GetGroupIds(chapterId)
|
|||
|
for _, inGroupId in pairs(groupIds) do
|
|||
|
if inGroupId == groupId then
|
|||
|
return chapterId
|
|||
|
end
|
|||
|
end
|
|||
|
end
|
|||
|
XLog.Error("XStrongholdConfigs.GetChapterIdByGroupId error: 找不到据点Id对应章节配置, groupId: " .. groupId .. ", 配置路径:" .. TABLE_CHPATER_PATH)
|
|||
|
end
|
|||
|
|
|||
|
--获取据点章节类型
|
|||
|
function XStrongholdConfigs.GetChapterTypeByGroupId(groupId)
|
|||
|
local chapterId = XStrongholdConfigs.GetChapterIdByGroupId(groupId)
|
|||
|
return XStrongholdConfigs.GetChapterType(chapterId)
|
|||
|
end
|
|||
|
|
|||
|
function XStrongholdConfigs.GetGroupPreGroupId(groupId)
|
|||
|
local config = GetGroupConfig(groupId)
|
|||
|
return config.PreId or 0
|
|||
|
end
|
|||
|
|
|||
|
function XStrongholdConfigs.GetGroupOrder(groupId)
|
|||
|
local config = GetGroupConfig(groupId)
|
|||
|
return config.Order or ""
|
|||
|
end
|
|||
|
|
|||
|
function XStrongholdConfigs.GetGroupName(groupId)
|
|||
|
local config = GetGroupConfig(groupId)
|
|||
|
return config.Name or ""
|
|||
|
end
|
|||
|
|
|||
|
function XStrongholdConfigs.GetGroupPrefabPath(groupId)
|
|||
|
local config = GetGroupConfig(groupId)
|
|||
|
return config.Prefab or ""
|
|||
|
end
|
|||
|
|
|||
|
function XStrongholdConfigs.GetGroupIconBg(groupId)
|
|||
|
local config = GetGroupConfig(groupId)
|
|||
|
return config.IconBg
|
|||
|
end
|
|||
|
|
|||
|
function XStrongholdConfigs.GetGroupIconBoss(groupId)
|
|||
|
local config = GetGroupConfig(groupId)
|
|||
|
return config.IconBoss
|
|||
|
end
|
|||
|
|
|||
|
--获取据点基础BUFF(每关都有)
|
|||
|
function XStrongholdConfigs.GetGroupBaseBuffIds(groupId, activityId)
|
|||
|
local buffIds = {}
|
|||
|
|
|||
|
local activityBuffNum
|
|||
|
local activityBuffIndex
|
|||
|
local activityBuffIds = {}
|
|||
|
|
|||
|
local config = GetGroupConfig(groupId)
|
|||
|
for _, buffIdStr in pairs(config.BaseBuffId) do
|
|||
|
|
|||
|
activityBuffIds = stringSplit(buffIdStr, "|")
|
|||
|
activityBuffNum = activityBuffNum or #activityBuffIds
|
|||
|
activityBuffIndex = activityBuffIndex or (activityId % activityBuffNum)
|
|||
|
activityBuffIndex = activityBuffIndex == 0 and activityBuffNum or activityBuffIndex
|
|||
|
|
|||
|
local buffId = tonumber(activityBuffIds[activityBuffIndex])
|
|||
|
if buffId > 0 then
|
|||
|
tableInsert(buffIds, buffId)
|
|||
|
end
|
|||
|
|
|||
|
end
|
|||
|
|
|||
|
return buffIds
|
|||
|
end
|
|||
|
|
|||
|
--获取据点关底BUFF(关底才有,满足条件之后减少一个)
|
|||
|
function XStrongholdConfigs.GetGroupBossBuffIds(groupId, activityId)
|
|||
|
local buffIds = {}
|
|||
|
|
|||
|
local activityBuffNum
|
|||
|
local activityBuffIndex
|
|||
|
local activityBuffIds = {}
|
|||
|
|
|||
|
local config = GetGroupConfig(groupId)
|
|||
|
for _, buffIdStr in pairs(config.StageBuffId) do
|
|||
|
|
|||
|
activityBuffIds = stringSplit(buffIdStr, "|")
|
|||
|
activityBuffNum = activityBuffNum or #activityBuffIds
|
|||
|
activityBuffIndex = activityBuffIndex or (activityId % activityBuffNum)
|
|||
|
activityBuffIndex = activityBuffIndex == 0 and activityBuffNum or activityBuffIndex
|
|||
|
|
|||
|
local buffId = tonumber(activityBuffIds[activityBuffIndex])
|
|||
|
if buffId > 0 then
|
|||
|
tableInsert(buffIds, buffId)
|
|||
|
end
|
|||
|
|
|||
|
end
|
|||
|
|
|||
|
return buffIds
|
|||
|
end
|
|||
|
|
|||
|
function XStrongholdConfigs.CheckHasGroupBossBuffId(groupId, activityId)
|
|||
|
local buffIds = XStrongholdConfigs.GetGroupBossBuffIds(groupId, activityId)
|
|||
|
for _, buffId in pairs(buffIds) do
|
|||
|
if buffId > 0 then
|
|||
|
return true
|
|||
|
end
|
|||
|
end
|
|||
|
return false
|
|||
|
end
|
|||
|
|
|||
|
--获取完成该据点时连带完成的据点Id
|
|||
|
function XStrongholdConfigs.GetGroupFinishRelatedId(groupId)
|
|||
|
local groupIds = {}
|
|||
|
|
|||
|
local config = GetGroupConfig(groupId)
|
|||
|
for _, groupId in pairs(config.FinishRelatedId) do
|
|||
|
if groupId > 0 then
|
|||
|
tableInsert(groupIds, groupId)
|
|||
|
end
|
|||
|
end
|
|||
|
|
|||
|
return groupIds
|
|||
|
end
|
|||
|
|
|||
|
function XStrongholdConfigs.GetGroupCostEndurance(groupId)
|
|||
|
local config = GetGroupConfig(groupId)
|
|||
|
return config.Endurance
|
|||
|
end
|
|||
|
|
|||
|
function XStrongholdConfigs.GetGroupRewardId(groupId, activityId)
|
|||
|
local config = GetGroupConfig(groupId)
|
|||
|
return config.RewardId[activityId]
|
|||
|
end
|
|||
|
|
|||
|
function XStrongholdConfigs.GetGroupDetailBg(groupId)
|
|||
|
local config = GetGroupConfig(groupId)
|
|||
|
return config.DetailBg
|
|||
|
end
|
|||
|
|
|||
|
function XStrongholdConfigs.GetGroupDetailDesc(groupId)
|
|||
|
local config = GetGroupConfig(groupId)
|
|||
|
return config.DetailDesc
|
|||
|
end
|
|||
|
|
|||
|
function XStrongholdConfigs.GetGroupAddElectricEnergy(groupId)
|
|||
|
local config = GetGroupConfig(groupId)
|
|||
|
return config.AddElectricEnergy or 0
|
|||
|
end
|
|||
|
|
|||
|
function XStrongholdConfigs.GetGroupRequireTeamMemberNum(groupId, teamId)
|
|||
|
local requireTeamMemberNum = XStrongholdConfigs.GetMaxTeamMemberNum()
|
|||
|
if groupId then
|
|||
|
local config = GetGroupConfig(groupId)
|
|||
|
requireTeamMemberNum = config.TeamMember[teamId] or 0
|
|||
|
end
|
|||
|
return requireTeamMemberNum
|
|||
|
end
|
|||
|
|
|||
|
--获取据点试玩角色(机器人)列表
|
|||
|
function XStrongholdConfigs.GetGroupCanUseRobotIds(groupId, characterType, levelId)
|
|||
|
local config = GetGroupConfig(groupId)
|
|||
|
local roubotGroupId = config.RobotGroup[levelId]
|
|||
|
return XStrongholdConfigs.GetRobotGroupRobotIds(roubotGroupId, characterType)--修改为整个玩法通用试玩角色
|
|||
|
end
|
|||
|
|
|||
|
function XStrongholdConfigs.GetGroupStageIdGroupIndex(groupId, stageId)
|
|||
|
local config = GetGroupConfig(groupId)
|
|||
|
local stageIdGroupList = config.StageIdGroup
|
|||
|
local stageIds
|
|||
|
for index, stageIdGroup in ipairs(stageIdGroupList) do
|
|||
|
stageIds = string.Split(stageIdGroup)
|
|||
|
for _, stageIdStr in pairs(stageIds) do
|
|||
|
if stageId == tonumber(stageIdStr) then
|
|||
|
return index
|
|||
|
end
|
|||
|
end
|
|||
|
end
|
|||
|
end
|
|||
|
-----------------副本相关 end--------------------
|
|||
|
-----------------词缀相关 begin--------------------
|
|||
|
local function GetBuffConfig(buffId)
|
|||
|
local config = BuffConfig[buffId]
|
|||
|
if not config then
|
|||
|
XLog.Error("XStrongholdConfigs GetBuffConfig error:配置不存在, buffId: " .. buffId .. ", 配置路径: " .. TABLE_BUFF_PATH)
|
|||
|
return
|
|||
|
end
|
|||
|
return config
|
|||
|
end
|
|||
|
|
|||
|
function XStrongholdConfigs.GetBuffIcon(buffId)
|
|||
|
local config = GetBuffConfig(buffId)
|
|||
|
return config.Icon
|
|||
|
end
|
|||
|
|
|||
|
function XStrongholdConfigs.GetBuffName(buffId)
|
|||
|
local config = GetBuffConfig(buffId)
|
|||
|
return config.Name
|
|||
|
end
|
|||
|
|
|||
|
function XStrongholdConfigs.GetBuffDesc(buffId)
|
|||
|
local config = GetBuffConfig(buffId)
|
|||
|
return XUiHelper.ConvertLineBreakSymbol(config.Desc)
|
|||
|
end
|
|||
|
|
|||
|
function XStrongholdConfigs.GetBuffConditionId(buffId)
|
|||
|
local config = GetBuffConfig(buffId)
|
|||
|
return config.Condition[1]
|
|||
|
end
|
|||
|
|
|||
|
function XStrongholdConfigs.CheckBuffHasCondition(buffId)
|
|||
|
local conditionId = XStrongholdConfigs.GetBuffConditionId(buffId)
|
|||
|
return conditionId and conditionId > 0
|
|||
|
end
|
|||
|
-----------------词缀相关 end--------------------
|
|||
|
-----------------支援方案 begin--------------------
|
|||
|
local function GetSupportConfig(supportId)
|
|||
|
local config = SupportConfig[supportId]
|
|||
|
if not config then
|
|||
|
XLog.Error("XStrongholdConfigs GetSupportConfig error:配置不存在, supportId: " .. supportId .. ", 配置路径: " .. TABLE_SUPPORT_PATH)
|
|||
|
return
|
|||
|
end
|
|||
|
return config
|
|||
|
end
|
|||
|
|
|||
|
function XStrongholdConfigs.GetSupportConditionIds(supportId)
|
|||
|
local conditionIds = {}
|
|||
|
local config = GetSupportConfig(supportId)
|
|||
|
if not config then return conditionIds end
|
|||
|
for _, conditionId in pairs(config.Condition or {}) do
|
|||
|
if conditionId > 0 then
|
|||
|
tableInsert(conditionIds, conditionId)
|
|||
|
end
|
|||
|
end
|
|||
|
return conditionIds
|
|||
|
end
|
|||
|
|
|||
|
function XStrongholdConfigs.GetSupportRequireAbility(supportId)
|
|||
|
local config = GetSupportConfig(supportId)
|
|||
|
return config.RequireAbility
|
|||
|
end
|
|||
|
|
|||
|
function XStrongholdConfigs.GetSupportBuffIds(supportId)
|
|||
|
local buffIds = {}
|
|||
|
local config = GetSupportConfig(supportId)
|
|||
|
for _, buffId in pairs(config.BuffId) do
|
|||
|
if buffId > 0 then
|
|||
|
tableInsert(buffIds, buffId)
|
|||
|
end
|
|||
|
end
|
|||
|
return buffIds
|
|||
|
end
|
|||
|
-----------------支援方案 end--------------------
|
|||
|
-----------------奖励(任务)相关 begin--------------------
|
|||
|
local function GetRewardConfig(rewardId)
|
|||
|
local config = RewardConfig[rewardId]
|
|||
|
if not config then
|
|||
|
XLog.Error("XStrongholdConfigs GetRewardConfig error:配置不存在, rewardId: " .. rewardId .. ", 配置路径: " .. TABLE_REWARD_PATH)
|
|||
|
return
|
|||
|
end
|
|||
|
return config
|
|||
|
end
|
|||
|
|
|||
|
local function CheckRewardOffline(rewardId)
|
|||
|
local config = GetRewardConfig(rewardId)
|
|||
|
return IsNumberValid(config.Offline)
|
|||
|
end
|
|||
|
|
|||
|
function XStrongholdConfigs.GetAllRewardIds(levelId)
|
|||
|
local ids = {}
|
|||
|
local rewardIds = LevelIdToRewardIdsDic[levelId] or {}
|
|||
|
for _, id in pairs(rewardIds) do
|
|||
|
if not CheckRewardOffline(id) then
|
|||
|
tableInsert(ids, id)
|
|||
|
end
|
|||
|
end
|
|||
|
return ids
|
|||
|
end
|
|||
|
|
|||
|
function XStrongholdConfigs.GetRewardDesc(rewardId)
|
|||
|
local config = GetRewardConfig(rewardId)
|
|||
|
return config.Desc or ""
|
|||
|
end
|
|||
|
|
|||
|
function XStrongholdConfigs.GetRewardSkipId(rewardId)
|
|||
|
local config = GetRewardConfig(rewardId)
|
|||
|
return config.SkipId
|
|||
|
end
|
|||
|
|
|||
|
function XStrongholdConfigs.GetRewardConditionId(rewardId)
|
|||
|
local config = GetRewardConfig(rewardId)
|
|||
|
return config.Condition
|
|||
|
end
|
|||
|
|
|||
|
function XStrongholdConfigs.GetRewardGoodsId(rewardId)
|
|||
|
local config = GetRewardConfig(rewardId)
|
|||
|
return config.RewardId
|
|||
|
end
|
|||
|
-----------------奖励(任务)相关 end--------------------
|
|||
|
-----------------队伍相关 begin--------------------
|
|||
|
local MAX_TEAM_NUM = 6 --最大队伍数量
|
|||
|
function XStrongholdConfigs.GetMaxTeamNum()
|
|||
|
return MAX_TEAM_NUM
|
|||
|
end
|
|||
|
|
|||
|
local MAX_TEAM_MEMBER_NUM = 3--最大队伍成员数量
|
|||
|
function XStrongholdConfigs.GetMaxTeamMemberNum()
|
|||
|
return MAX_TEAM_MEMBER_NUM
|
|||
|
end
|
|||
|
|
|||
|
local function GetRobotGroupConfig(roubotGroupId)
|
|||
|
local config = RobotGroupConfig[roubotGroupId]
|
|||
|
if not config then
|
|||
|
XLog.Error("XStrongholdConfigs GetRobotGroupConfig error:配置不存在, roubotGroupId: " .. roubotGroupId .. ", 配置路径: " .. TABLE_ROBOT_GROUP_PATH)
|
|||
|
return
|
|||
|
end
|
|||
|
return config
|
|||
|
end
|
|||
|
|
|||
|
function XStrongholdConfigs.GetRobotGroupRobotIds(roubotGroupId, characterType)
|
|||
|
local robotIds = {}
|
|||
|
local config = GetRobotGroupConfig(roubotGroupId)
|
|||
|
|
|||
|
local num, index
|
|||
|
local robotIds = {}
|
|||
|
for _, robotId in pairs(config.RobotId) do
|
|||
|
if IsNumberValid(characterType) then
|
|||
|
local robotType = XRobotManager.GetRobotCharacterType(robotId)
|
|||
|
if robotType == characterType then
|
|||
|
tableInsert(robotIds, robotId)
|
|||
|
end
|
|||
|
else
|
|||
|
tableInsert(robotIds, robotId)
|
|||
|
end
|
|||
|
end
|
|||
|
return robotIds
|
|||
|
end
|
|||
|
|
|||
|
|
|||
|
local function GetBorrowCostConfig(times)
|
|||
|
local config = BorrowCostConfig[times]
|
|||
|
if not config then
|
|||
|
XLog.Error("XStrongholdConfigs GetBorrowCostConfig error:配置不存在, times: " .. times .. ", 配置路径: " .. TABLE_BOWRROW_PATH)
|
|||
|
return
|
|||
|
end
|
|||
|
return config
|
|||
|
end
|
|||
|
|
|||
|
function XStrongholdConfigs.GetBorrowCostItemInfo(times)
|
|||
|
times = times + 1
|
|||
|
|
|||
|
local maxTimes = XStrongholdConfigs.GetBorrowMaxTimes()
|
|||
|
times = times > maxTimes and maxTimes or times
|
|||
|
|
|||
|
local config = GetBorrowCostConfig(times)
|
|||
|
return config.ItemId, config.ItemCount
|
|||
|
end
|
|||
|
|
|||
|
function XStrongholdConfigs.GetBorrowMaxTimes()
|
|||
|
return #BorrowCostConfig
|
|||
|
end
|
|||
|
-----------------队伍相关 end--------------------
|
|||
|
-----------------插件相关 begin--------------------
|
|||
|
local function GetPluginConfig(pluginId)
|
|||
|
local config = PluginConfig[pluginId]
|
|||
|
if not config then
|
|||
|
XLog.Error("XStrongholdConfigs GetPluginConfig error:配置不存在, pluginId: " .. pluginId .. ", 配置路径: " .. TABLE_PLUGIN_PATH)
|
|||
|
return
|
|||
|
end
|
|||
|
return config
|
|||
|
end
|
|||
|
|
|||
|
function XStrongholdConfigs.GetPluginIds()
|
|||
|
local pluginIds = {}
|
|||
|
for pluginId in ipairs(PluginConfig) do
|
|||
|
tableInsert(pluginIds, pluginId)
|
|||
|
end
|
|||
|
return pluginIds
|
|||
|
end
|
|||
|
|
|||
|
function XStrongholdConfigs.GetPluginUseElectric(pluginId)
|
|||
|
local config = GetPluginConfig(pluginId)
|
|||
|
return config.UseElectric
|
|||
|
end
|
|||
|
|
|||
|
function XStrongholdConfigs.GetPluginAddAbility(pluginId)
|
|||
|
local config = GetPluginConfig(pluginId)
|
|||
|
return config.FightAbility
|
|||
|
end
|
|||
|
|
|||
|
function XStrongholdConfigs.GetPluginIcon(pluginId)
|
|||
|
local config = GetPluginConfig(pluginId)
|
|||
|
return config.Icon
|
|||
|
end
|
|||
|
|
|||
|
function XStrongholdConfigs.GetPluginName(pluginId)
|
|||
|
local config = GetPluginConfig(pluginId)
|
|||
|
return config.Name
|
|||
|
end
|
|||
|
|
|||
|
function XStrongholdConfigs.GetPluginDesc(pluginId)
|
|||
|
local config = GetPluginConfig(pluginId)
|
|||
|
return config.Desc
|
|||
|
end
|
|||
|
|
|||
|
function XStrongholdConfigs.GetPluginCountLimit(pluginId)
|
|||
|
local config = GetPluginConfig(pluginId)
|
|||
|
return IsNumberValid(config.CountLimit) and config.CountLimit or XMath.IntMax()
|
|||
|
end
|
|||
|
-----------------插件相关 end--------------------
|
|||
|
-----------------电能相关 begin--------------------
|
|||
|
local function GetElectricConfig(day)
|
|||
|
local config = ElectricConfig[day]
|
|||
|
if not config then
|
|||
|
return
|
|||
|
end
|
|||
|
return config
|
|||
|
end
|
|||
|
|
|||
|
function XStrongholdConfigs.GetElectricAdd(day, levelId)
|
|||
|
local config = GetElectricConfig(day)
|
|||
|
return config and config.ElectricEnerge and config.ElectricEnerge[levelId] or 0
|
|||
|
end
|
|||
|
|
|||
|
function XStrongholdConfigs.GetTeamAbilityExtraElectricList()
|
|||
|
return XTool.Clone(TeamAbilityExtraElectricList)
|
|||
|
end
|
|||
|
|
|||
|
function XStrongholdConfigs.GetTeamAbilityToExtraElectric(totalAbility)
|
|||
|
local extraElectric = 0
|
|||
|
for _, config in ipairs(TeamAbilityExtraElectricList) do
|
|||
|
if totalAbility > config.Ability then
|
|||
|
extraElectric = config.Electric
|
|||
|
end
|
|||
|
end
|
|||
|
return extraElectric
|
|||
|
end
|
|||
|
|
|||
|
local ElectricIcon = CS.XGame.ClientConfig:GetString("StrongholdElectricIcon")
|
|||
|
function XStrongholdConfigs.GetElectricIcon()
|
|||
|
return ElectricIcon
|
|||
|
end
|
|||
|
|
|||
|
function XStrongholdConfigs.GetElectricIdList()
|
|||
|
local electricIdList = {}
|
|||
|
for id in pairs(ElectricConfig) do
|
|||
|
tableInsert(electricIdList, id)
|
|||
|
end
|
|||
|
return electricIdList
|
|||
|
end
|
|||
|
-----------------电能相关 end--------------------
|
|||
|
-----------------配置杂项 begin--------------------
|
|||
|
function XStrongholdConfigs.GetCommonConfig(key)
|
|||
|
local config = CommonConfig[key]
|
|||
|
if not config then
|
|||
|
XLog.Error("XStrongholdConfigs.GetCommonConfig error:配置不存在, key: " .. key .. ", 配置路径: " .. TABLE_COMMON_CONFIG_PATH)
|
|||
|
return
|
|||
|
end
|
|||
|
return config.Value or 0
|
|||
|
end
|
|||
|
|
|||
|
--活动名称
|
|||
|
function XStrongholdConfigs.GetActivityName()
|
|||
|
return CSXTextManagerGetText("StrongholdActivityName")
|
|||
|
end
|
|||
|
-----------------配置杂项 end--------------------
|
|||
|
-----------------关卡组对应的属性相关 begin--------------------
|
|||
|
local function GetStrongholdGroupElement(stageIdGroupIndex)
|
|||
|
local template = StrongholdGroupElementConfig[stageIdGroupIndex]
|
|||
|
if not template then
|
|||
|
XLog.ErrorTableDataNotFound("XStrongholdConfigs.GetStrongholdGroupElement", "StrongholdGroupElement", TABLE_STRONGHOLD_GROUP_ELEMENT_PATH, "StageIdGroupIndex", tostring(stageIdGroupIndex))
|
|||
|
return
|
|||
|
end
|
|||
|
return template
|
|||
|
end
|
|||
|
|
|||
|
function XStrongholdConfigs.GetStrongholdGroupElementGridTitleBg(stageIdGroupIndex)
|
|||
|
local config = GetStrongholdGroupElement(stageIdGroupIndex)
|
|||
|
return config.GridTitleBg
|
|||
|
end
|
|||
|
-----------------关卡组对应的属性相关 end----------------------
|
|||
|
-----------------等级分区 begin--------------------
|
|||
|
XStrongholdConfigs.LevelType = {
|
|||
|
Choosable = 0, --未选择
|
|||
|
Normal = 1, --低级区
|
|||
|
Medium = 2, --中级区
|
|||
|
High = 3, --高级区
|
|||
|
}
|
|||
|
|
|||
|
local function GetLevelConfig(levelId)
|
|||
|
local config = StrongholdLevelConfig[levelId]
|
|||
|
if not config then
|
|||
|
XLog.Error("XStrongholdConfigs GetLevelConfig error:配置不存在, levelId: " .. levelId .. ", 配置路径: " .. TABLE_LEVEL_PATH)
|
|||
|
return
|
|||
|
end
|
|||
|
return config
|
|||
|
end
|
|||
|
|
|||
|
function XStrongholdConfigs.GetLevelName(levelId)
|
|||
|
local config = GetLevelConfig(levelId)
|
|||
|
return config.Name
|
|||
|
end
|
|||
|
|
|||
|
function XStrongholdConfigs.GetLevelLimit(levelId)
|
|||
|
local config = GetLevelConfig(levelId)
|
|||
|
return config.MinLevel, config.MaxLevel
|
|||
|
end
|
|||
|
|
|||
|
function XStrongholdConfigs.GetLevelIcon(levelId)
|
|||
|
local config = GetLevelConfig(levelId)
|
|||
|
return config.Icon
|
|||
|
end
|
|||
|
|
|||
|
function XStrongholdConfigs.GetLevelInitElectricEnergy(levelId)
|
|||
|
local config = GetLevelConfig(levelId)
|
|||
|
return config.InitElectricEnergy
|
|||
|
end
|
|||
|
|
|||
|
function XStrongholdConfigs.GetLevelInitEndurance(levelId)
|
|||
|
local config = GetLevelConfig(levelId)
|
|||
|
return config.InitEndurance
|
|||
|
end
|
|||
|
|
|||
|
function XStrongholdConfigs.GetAllChapterIds(chapterType)
|
|||
|
local ids = {}
|
|||
|
|
|||
|
local levelId = XDataCenter.StrongholdManager.GetLevelId()
|
|||
|
if not IsNumberValid(levelId) then return ids end
|
|||
|
|
|||
|
local config = GetLevelConfig(levelId)
|
|||
|
for _, id in ipairs(config.Chapter) do
|
|||
|
if IsNumberValid(id)
|
|||
|
and (not chapterType or XStrongholdConfigs.GetChapterType(id) == chapterType)
|
|||
|
then
|
|||
|
tableInsert(ids, id)
|
|||
|
end
|
|||
|
end
|
|||
|
|
|||
|
return ids
|
|||
|
end
|
|||
|
-----------------等级分区 end--------------------
|
|||
|
-----------------符文 begin--------------------
|
|||
|
local function GetRuneConfig(runeId)
|
|||
|
local config = StrongholdRuneConfig[runeId]
|
|||
|
if not config then
|
|||
|
XLog.Error("XStrongholdConfigs GetRuneConfig error:配置不存在, runeId: " .. runeId .. ", 配置路径: " .. TABLE_RUNE_PATH)
|
|||
|
return
|
|||
|
end
|
|||
|
return config
|
|||
|
end
|
|||
|
|
|||
|
local function GetSubRuneConfig(subRuneId)
|
|||
|
local config = StrongholdSubRuneConfig[subRuneId]
|
|||
|
if not config then
|
|||
|
XLog.Error("XStrongholdConfigs GetSubRuneConfig error:配置不存在, subRuneId: " .. subRuneId .. ", 配置路径: " .. TABLE_SUB_RUNE_PATH)
|
|||
|
return
|
|||
|
end
|
|||
|
return config
|
|||
|
end
|
|||
|
|
|||
|
function XStrongholdConfigs.GetRuneName(runeId)
|
|||
|
local config = GetRuneConfig(runeId)
|
|||
|
return config.Name or ""
|
|||
|
end
|
|||
|
|
|||
|
function XStrongholdConfigs.GetRuneIcon(runeId)
|
|||
|
local config = GetRuneConfig(runeId)
|
|||
|
return config.Icon or ""
|
|||
|
end
|
|||
|
|
|||
|
function XStrongholdConfigs.GetRuneDesc(runeId)
|
|||
|
local config = GetRuneConfig(runeId)
|
|||
|
return XUiHelper.ConvertLineBreakSymbol(config.Desc)
|
|||
|
end
|
|||
|
|
|||
|
function XStrongholdConfigs.GetRuneBrief(runeId)
|
|||
|
local config = GetRuneConfig(runeId)
|
|||
|
return config.Brief or ""
|
|||
|
end
|
|||
|
|
|||
|
function XStrongholdConfigs.GetRuneColor(runeId)
|
|||
|
local config = GetRuneConfig(runeId)
|
|||
|
return XUiHelper.Hexcolor2Color(config.Color)
|
|||
|
end
|
|||
|
|
|||
|
function XStrongholdConfigs.GetSubRuneIds(runeId)
|
|||
|
local subRuneIds = {}
|
|||
|
local config = GetRuneConfig(runeId)
|
|||
|
for _, subRuneId in ipairs(config.SubRuneId) do
|
|||
|
if XTool.IsNumberValid(subRuneId) then
|
|||
|
tableInsert(subRuneIds, subRuneId)
|
|||
|
end
|
|||
|
end
|
|||
|
return subRuneIds
|
|||
|
end
|
|||
|
|
|||
|
function XStrongholdConfigs.GetSubRuneName(subRuneId)
|
|||
|
local config = GetSubRuneConfig(subRuneId)
|
|||
|
return config.Name or ""
|
|||
|
end
|
|||
|
|
|||
|
function XStrongholdConfigs.GetSubRuneIcon(subRuneId)
|
|||
|
local config = GetSubRuneConfig(subRuneId)
|
|||
|
return config.Icon or ""
|
|||
|
end
|
|||
|
|
|||
|
function XStrongholdConfigs.GetSubRuneDesc(subRuneId)
|
|||
|
local config = GetSubRuneConfig(subRuneId)
|
|||
|
return XUiHelper.ConvertLineBreakSymbol(config.Desc)
|
|||
|
end
|
|||
|
-----------------符文 end--------------------
|