PGRData/Script/matrix/xconfig/XStrongholdConfigs.lua

955 lines
31 KiB
Lua
Raw Normal View History

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--------------------