751 lines
23 KiB
Lua
751 lines
23 KiB
Lua
XDoubleTowersConfigs = XDoubleTowersConfigs or {}
|
||
|
||
XDoubleTowersConfigs.StageState = {
|
||
-- 通关
|
||
Clear = 1,
|
||
-- 未通关
|
||
NotClear = 2,
|
||
-- 未解锁
|
||
Lock = 3
|
||
}
|
||
XDoubleTowersConfigs.ReasonOfLockGroup = {
|
||
-- 已解锁
|
||
None = 0,
|
||
-- 前置关卡未通关
|
||
PreconditionStageNotClear = 1,
|
||
-- 未到开放时间
|
||
TimeLimit = 2
|
||
}
|
||
|
||
--模块类型
|
||
XDoubleTowersConfigs.ModuleType = {
|
||
Role = 1, --角色
|
||
Guard = 2 --守卫
|
||
}
|
||
|
||
-- 每组最多关卡数量
|
||
XDoubleTowersConfigs.MaxStageAmountPerGroup = 3
|
||
|
||
-- teamId 一支队伍就一个人,没必要保存服务端
|
||
XDoubleTowersConfigs.TeamId = 19
|
||
XDoubleTowersConfigs.TeamTypeId = 130
|
||
|
||
-- 活动总控表
|
||
local ACTIVITY_TAB = "Share/Fuben/DoubleTower/DoubleTowerActivity.tab"
|
||
-- 关卡组表
|
||
local GROUP_TAB = "Share/Fuben/DoubleTower/DoubleTowerStageGroup.tab"
|
||
-- 关卡表
|
||
local STAGE_TAB = "Share/Fuben/DoubleTower/DoubleTowerStage.tab"
|
||
-- 情报表
|
||
local INFORMATION_TAB = "Client/Fuben/DoubleTower/DoubleTowerInformation.tab"
|
||
-- 角色(帮手)配置表
|
||
local ROLE_TAB = "Share/Fuben/DoubleTower/DoubleTowerRole.tab"
|
||
-- 守卫配置表
|
||
local GUARD_TAB = "Share/Fuben/DoubleTower/DoubleTowerGuard.tab"
|
||
-- 插件表
|
||
local PLUGIN_TAB = "Share/Fuben/DoubleTower/DoubleTowerPlugin.tab"
|
||
-- 插件详情表
|
||
local PLUGIN_LEVEL_TAB = "Share/Fuben/DoubleTower/DoubleTowerPluginLevel.tab"
|
||
|
||
--region 无脑get配置
|
||
local ActivityConfigs = nil
|
||
local GroupConfigs = nil
|
||
local StageConfigs = nil
|
||
local InformationConfigs = nil
|
||
local RoleConfigs = nil
|
||
local GuardConfigs = nil
|
||
local PluginConfigs = nil
|
||
local PluginLevelConfigs = nil
|
||
|
||
function XDoubleTowersConfigs.Init()
|
||
end
|
||
|
||
local function GetActivityConfigs()
|
||
if not ActivityConfigs then
|
||
ActivityConfigs = XTableManager.ReadByIntKey(ACTIVITY_TAB, XTable.XTableDoubleTowerActivity, "Id")
|
||
end
|
||
return ActivityConfigs
|
||
end
|
||
|
||
local function GetGroupConfigs()
|
||
if not GroupConfigs then
|
||
GroupConfigs = XTableManager.ReadByIntKey(GROUP_TAB, XTable.XTableDoubleTowerStageGroup, "Id")
|
||
end
|
||
return GroupConfigs
|
||
end
|
||
|
||
local function GetStageConfigs()
|
||
if not StageConfigs then
|
||
StageConfigs = XTableManager.ReadByIntKey(STAGE_TAB, XTable.XTableDoubleTowerStage, "Id")
|
||
end
|
||
return StageConfigs
|
||
end
|
||
|
||
local function GetInformationConfigs()
|
||
if not InformationConfigs then
|
||
InformationConfigs = XTableManager.ReadByIntKey(INFORMATION_TAB, XTable.XTableDoubleTowerInformation, "Id")
|
||
end
|
||
return InformationConfigs
|
||
end
|
||
|
||
local function GetRoleConfigs()
|
||
if not RoleConfigs then
|
||
RoleConfigs = XTableManager.ReadByIntKey(ROLE_TAB, XTable.XTableDoubleTowerRole, "Id")
|
||
end
|
||
return RoleConfigs
|
||
end
|
||
|
||
local function GetGuardConfigs()
|
||
if not GuardConfigs then
|
||
GuardConfigs = XTableManager.ReadByIntKey(GUARD_TAB, XTable.XTableDoubleTowerGuard, "Id")
|
||
end
|
||
return GuardConfigs
|
||
end
|
||
|
||
local function GetPluginConfigs()
|
||
if not PluginConfigs then
|
||
PluginConfigs = XTableManager.ReadByIntKey(PLUGIN_TAB, XTable.XTableDoubleTowerPlugin, "Id")
|
||
end
|
||
return PluginConfigs
|
||
end
|
||
|
||
local function GetPluginLevelConfigs()
|
||
if not PluginLevelConfigs then
|
||
PluginLevelConfigs = XTableManager.ReadByIntKey(PLUGIN_LEVEL_TAB, XTable.XTableDoubleTowerPluginLevel, "Id")
|
||
end
|
||
return PluginLevelConfigs
|
||
end
|
||
|
||
function XDoubleTowersConfigs.GetActivityCfg(activityId)
|
||
local config = GetActivityConfigs()[activityId]
|
||
if not config then
|
||
XLog.Error(
|
||
"XDoubleTowersConfigs GetActivityCfg error:配置不存在,Id:" .. (activityId or "nil") .. " ,Path:" .. ACTIVITY_TAB
|
||
)
|
||
end
|
||
return config
|
||
end
|
||
|
||
function XDoubleTowersConfigs.GetDefaultActivityId()
|
||
local cfg = GetActivityConfigs()
|
||
for key, value in pairs(cfg) do
|
||
return key
|
||
end
|
||
return false
|
||
end
|
||
|
||
function XDoubleTowersConfigs.GetGroupConfigs()
|
||
return GetGroupConfigs()
|
||
end
|
||
|
||
function XDoubleTowersConfigs.GetStageGroupCfg(groupId)
|
||
return GetGroupConfigs()[groupId] or {}
|
||
end
|
||
|
||
function XDoubleTowersConfigs.GetAllStageConfigs()
|
||
return GetStageConfigs()
|
||
end
|
||
|
||
function XDoubleTowersConfigs.GetStageCfg(id)
|
||
return GetStageConfigs()[id] or {}
|
||
end
|
||
|
||
function XDoubleTowersConfigs.GetInfoCfg(id)
|
||
return GetInformationConfigs()[id]
|
||
end
|
||
|
||
local function GetRoleCfg(id)
|
||
local config = GetRoleConfigs()[id]
|
||
if not config then
|
||
XLog.ErrorTableDataNotFound("XDoubleTowersConfigs.GetRoleCfg", "RoleConfigs", ROLE_TAB, "Id", id)
|
||
return
|
||
end
|
||
return config
|
||
end
|
||
|
||
local function GetGuardCfg(id)
|
||
local config = GetGuardConfigs()[id]
|
||
if not config then
|
||
XLog.ErrorTableDataNotFound("XDoubleTowersConfigs.GetGuardCfg", "GuardConfigs", GUARD_TAB, "Id", id)
|
||
return
|
||
end
|
||
return config
|
||
end
|
||
|
||
local function GetPluginCfg(id)
|
||
local config = GetPluginConfigs()[id]
|
||
if not config then
|
||
XLog.ErrorTableDataNotFound("XDoubleTowersConfigs.GetPluginCfg", "PluginCfgs", PLUGIN_TAB, "Id", id)
|
||
return
|
||
end
|
||
return config
|
||
end
|
||
|
||
local function GetPluginLevelCfg(id)
|
||
return GetPluginLevelConfigs()[id]
|
||
end
|
||
--endregion
|
||
-------------------------------------------------------------------------------------------
|
||
|
||
function XDoubleTowersConfigs.GetTimeLimitId(activityId)
|
||
return XDoubleTowersConfigs.GetActivityCfg(activityId).OpenTimeId
|
||
end
|
||
|
||
function XDoubleTowersConfigs.GetActivityBackground(activityId)
|
||
return XDoubleTowersConfigs.GetActivityCfg(activityId).BannerBg
|
||
end
|
||
|
||
---@return string@活动名/标题
|
||
function XDoubleTowersConfigs.GetTitleName(activityId)
|
||
return XDoubleTowersConfigs.GetActivityCfg(activityId).Name
|
||
end
|
||
|
||
---@return number@收菜货币的id
|
||
function XDoubleTowersConfigs.GetCoinItemId(activityId)
|
||
return XDoubleTowersConfigs.GetActivityCfg(activityId).RewardItemId
|
||
end
|
||
|
||
---@return number@收菜间隔
|
||
function XDoubleTowersConfigs.GetGatherInterval(activityId)
|
||
return XDoubleTowersConfigs.GetActivityCfg(activityId).RewardTimer
|
||
end
|
||
|
||
---@return number@一次收菜多少代币
|
||
function XDoubleTowersConfigs.GetGatherCoins(activityId)
|
||
return XDoubleTowersConfigs.GetActivityCfg(activityId).RewardItemCount
|
||
end
|
||
|
||
---@return number@图文教学界面,对应helpCourse.tab
|
||
function XDoubleTowersConfigs.GetHelpKey(activityId)
|
||
return XDoubleTowersConfigs.GetActivityCfg(activityId).HelpKey
|
||
end
|
||
|
||
local _StageGroupAmount = nil
|
||
---@return number@关卡组数量,从一之门到n之门,不算特殊关卡
|
||
function XDoubleTowersConfigs.GetStageGroupAmount()
|
||
if not _StageGroupAmount then
|
||
_StageGroupAmount = 0
|
||
local groupConfigs = GetGroupConfigs()
|
||
for groupId, cfg in pairs(groupConfigs) do
|
||
if not cfg.IsSpecial then
|
||
_StageGroupAmount = _StageGroupAmount + 1
|
||
end
|
||
end
|
||
end
|
||
return _StageGroupAmount
|
||
end
|
||
|
||
local function SortId(id1, id2)
|
||
return id1 < id2
|
||
end
|
||
local _GroupIndex2Id = nil
|
||
local function InitGroupIndex2Id()
|
||
if not _GroupIndex2Id then
|
||
_GroupIndex2Id = {}
|
||
local groupConfigs = GetGroupConfigs()
|
||
for groupId, cfg in pairs(groupConfigs) do
|
||
if not _GroupIndex2Id[cfg.ActivityId] then
|
||
_GroupIndex2Id[cfg.ActivityId] = {}
|
||
end
|
||
local t = _GroupIndex2Id[cfg.ActivityId]
|
||
t[#t + 1] = groupId
|
||
end
|
||
for activity, group2Id in pairs(_GroupIndex2Id) do
|
||
table.sort(group2Id, SortId)
|
||
end
|
||
end
|
||
end
|
||
|
||
---@return number@ groupId
|
||
function XDoubleTowersConfigs.GetGroupId(activityId, groupIndex)
|
||
InitGroupIndex2Id()
|
||
return _GroupIndex2Id[activityId] and _GroupIndex2Id[activityId][groupIndex]
|
||
end
|
||
|
||
function XDoubleTowersConfigs.GetActivityIdByStageId(stageId)
|
||
local groupId = XDoubleTowersConfigs.GetGroupIdByStageId(stageId)
|
||
local groupCfg = XDoubleTowersConfigs.GetStageGroupCfg(groupId)
|
||
return groupCfg and groupCfg.ActivityId
|
||
end
|
||
|
||
local _GroupId2Stage = nil
|
||
---@return table@ {stageId1,stageId2,stageId3}
|
||
local function GetGroup(activityId, groupId)
|
||
if not _GroupId2Stage then
|
||
local stageConfigs = GetStageConfigs()
|
||
_GroupId2Stage = {}
|
||
for id, cfg in pairs(stageConfigs) do
|
||
local groupActivityId = XDoubleTowersConfigs.GetActivityIdByStageId(cfg.Id)
|
||
if groupActivityId then
|
||
if not _GroupId2Stage[groupActivityId] then
|
||
_GroupId2Stage[groupActivityId] = {}
|
||
end
|
||
local groupId2Stage = _GroupId2Stage[groupActivityId]
|
||
groupId2Stage[cfg.GroupId] = groupId2Stage[cfg.GroupId] or {}
|
||
local groupIdArray = groupId2Stage[cfg.GroupId]
|
||
groupIdArray[#groupIdArray + 1] = cfg.Id
|
||
end
|
||
end
|
||
for activity, groupId2Stage in pairs(_GroupId2Stage) do
|
||
for groupId, group in pairs(groupId2Stage) do
|
||
table.sort(group, SortId)
|
||
end
|
||
end
|
||
end
|
||
return _GroupId2Stage[activityId][groupId] or {}
|
||
end
|
||
|
||
function XDoubleTowersConfigs.GetGroup(activityId, groupId)
|
||
return GetGroup(activityId, groupId)
|
||
end
|
||
|
||
local function GetGroupCfg(groupId)
|
||
return GetGroupConfigs()[groupId] or {}
|
||
end
|
||
|
||
function XDoubleTowersConfigs.GetStageId(activityId, groupId, stageIndex)
|
||
return GetGroup(activityId, groupId)[stageIndex]
|
||
end
|
||
|
||
function XDoubleTowersConfigs.GetStageName(stageId)
|
||
return XDoubleTowersConfigs.GetStageCfg(stageId).Name
|
||
end
|
||
|
||
function XDoubleTowersConfigs.GetStageTip(stageId)
|
||
return XDoubleTowersConfigs.GetStageCfg(stageId).BuffDesc
|
||
end
|
||
|
||
function XDoubleTowersConfigs.GetPreconditionStage(stageId)
|
||
return XDoubleTowersConfigs.GetStageCfg(stageId).PreStageId
|
||
end
|
||
|
||
-- 关卡组 按时间开放
|
||
function XDoubleTowersConfigs.GetGroupTimeLimitId(groupId)
|
||
return GetGroupCfg(groupId).OpenTimeId
|
||
end
|
||
|
||
function XDoubleTowersConfigs.GetGroupName(groupId)
|
||
return GetGroupCfg(groupId).Name
|
||
end
|
||
|
||
local _StageAmount = {}
|
||
function XDoubleTowersConfigs.GetTotalNormalStageAmount(activityId)
|
||
if _StageAmount[activityId] then
|
||
return _StageAmount[activityId]
|
||
end
|
||
local stageAmount = 0
|
||
local allGroup = GetGroupConfigs()
|
||
for groupId, groupCfg in pairs(allGroup) do
|
||
if groupCfg.ActivityId == activityId and not groupCfg.IsSpecial then
|
||
local group = GetGroup(activityId, groupId)
|
||
stageAmount = stageAmount + #group
|
||
end
|
||
end
|
||
_StageAmount[activityId] = stageAmount
|
||
return stageAmount
|
||
end
|
||
|
||
local _SpecialGroupId = {}
|
||
function XDoubleTowersConfigs.GetSpecialGroupId(activityId)
|
||
if _SpecialGroupId[activityId] ~= nil then
|
||
return _SpecialGroupId[activityId]
|
||
end
|
||
local groupConfigs = GetGroupConfigs()
|
||
for groupId, cfg in pairs(groupConfigs) do
|
||
if cfg.IsSpecial and activityId == cfg.ActivityId then
|
||
_SpecialGroupId[activityId] = groupId
|
||
return groupId
|
||
end
|
||
end
|
||
_SpecialGroupId[activityId] = false
|
||
return false
|
||
end
|
||
|
||
local _Stage2InfoGroup = nil
|
||
function XDoubleTowersConfigs.GetInfoIdGroup(stageId)
|
||
if not _Stage2InfoGroup then
|
||
_Stage2InfoGroup = {}
|
||
for infoId, info in pairs(GetInformationConfigs()) do
|
||
_Stage2InfoGroup[info.StageId] = _Stage2InfoGroup[info.StageId] or {}
|
||
local group = _Stage2InfoGroup[info.StageId]
|
||
group[#group + 1] = info.Id
|
||
end
|
||
end
|
||
return _Stage2InfoGroup[stageId] or {}
|
||
end
|
||
|
||
function XDoubleTowersConfigs.GetGroupIdByStageId(stageId)
|
||
return XDoubleTowersConfigs.GetStageCfg(stageId).GroupId
|
||
end
|
||
|
||
function XDoubleTowersConfigs.GetGroupPreconditionStage(groupId)
|
||
return XDoubleTowersConfigs.GetStageGroupCfg(groupId).PreStageId
|
||
end
|
||
|
||
function XDoubleTowersConfigs.GetEnemyInfoImg(infoId)
|
||
return XDoubleTowersConfigs.GetInfoCfg(infoId).BossImage
|
||
end
|
||
|
||
function XDoubleTowersConfigs.GetEnemyInfoRoundDesc(infoId)
|
||
return XDoubleTowersConfigs.GetInfoCfg(infoId).RoundDesc
|
||
end
|
||
|
||
function XDoubleTowersConfigs.GetEnemyInfoTypeDesc(infoId)
|
||
return XDoubleTowersConfigs.GetInfoCfg(infoId).TypeDesc
|
||
end
|
||
|
||
function XDoubleTowersConfigs.GetGroupIndexByStageId(stageId)
|
||
local groupId = XDoubleTowersConfigs.GetGroupIdByStageId(stageId)
|
||
InitGroupIndex2Id()
|
||
local activityId = XDoubleTowersConfigs.GetActivityIdByStageId(stageId)
|
||
local groupIndex2Id = _GroupIndex2Id[activityId]
|
||
if not groupIndex2Id then
|
||
return false
|
||
end
|
||
for groupIndex = 1, #groupIndex2Id do
|
||
if groupIndex2Id[groupIndex] == groupId then
|
||
return groupIndex
|
||
end
|
||
end
|
||
return false
|
||
end
|
||
|
||
function XDoubleTowersConfigs.GetMaxCoins(activityId)
|
||
return XDoubleTowersConfigs.GetActivityCfg(activityId).RewardMaxCount
|
||
end
|
||
function XDoubleTowersConfigs.GetRolePluginMaxCount()
|
||
local activityId = XDataCenter.DoubleTowersManager.GetActivityId()
|
||
local config = XDoubleTowersConfigs.GetActivityCfg(activityId)
|
||
return config and config.RolePluginMaxCount
|
||
end
|
||
|
||
function XDoubleTowersConfigs.GetGuardPluginMaxCount()
|
||
local activityId = XDataCenter.DoubleTowersManager.GetActivityId()
|
||
local config = XDoubleTowersConfigs.GetActivityCfg(activityId)
|
||
return config and config.GuardPluginMaxCount
|
||
end
|
||
|
||
function XDoubleTowersConfigs.GetActivityRewardItemId()
|
||
local activityId = XDataCenter.DoubleTowersManager.GetActivityId()
|
||
local config = XDoubleTowersConfigs.GetActivityCfg(activityId)
|
||
return config and config.RewardItemId
|
||
end
|
||
|
||
---------------DoubleTowerRole being-----------------
|
||
local IsInitDoubleTowerRole = false
|
||
local ActivityIdToRoleId = 0
|
||
local InitDoubleTowerRoleDic = function(activityId)
|
||
if IsInitDoubleTowerRole then
|
||
return
|
||
end
|
||
|
||
-- local configs = GetRoleConfigs()
|
||
-- for id, v in pairs(configs) do
|
||
-- if not ActivityIdToRoleId[v.ActivityId] then
|
||
-- ActivityIdToRoleId[v.ActivityId] = id
|
||
-- end
|
||
-- end
|
||
ActivityIdToRoleId = activityId
|
||
IsInitDoubleTowerRole = true
|
||
end
|
||
|
||
function XDoubleTowersConfigs.GetDoubleTowerRoleId()
|
||
local activityId = XDataCenter.DoubleTowersManager.GetActivityId()
|
||
InitDoubleTowerRoleDic(activityId)
|
||
return ActivityIdToRoleId
|
||
end
|
||
|
||
function XDoubleTowersConfigs.GetRoleBasePluginIdList()
|
||
local selectPluginType = XDoubleTowersConfigs.GetRoleSelectPluginType()
|
||
if XTool.IsNumberValid(selectPluginType) then
|
||
return XDoubleTowersConfigs.GetRolePluginLevelIdList()
|
||
end
|
||
return XDoubleTowersConfigs.GetDoubleTowerPluginIdList(selectPluginType)
|
||
end
|
||
|
||
function XDoubleTowersConfigs.GetRoleSelectPluginType()
|
||
local id = XDoubleTowersConfigs.GetDoubleTowerRoleId()
|
||
return GetRoleCfg(id).SlotPluginType
|
||
end
|
||
|
||
function XDoubleTowersConfigs.GetRolePluginLevelIdList()
|
||
local id = XDoubleTowersConfigs.GetDoubleTowerRoleId()
|
||
return GetRoleCfg(id).PluginLevelId
|
||
end
|
||
|
||
function XDoubleTowersConfigs.GetDefaultRoleBaseId()
|
||
local idList = XDoubleTowersConfigs.GetRolePluginLevelIdList()
|
||
for idx, id in ipairs(idList or {}) do
|
||
local preStage = XDoubleTowersConfigs.GetRolePreStageId(idx)
|
||
--默认为不需要前置关卡的pluginevelId
|
||
if not XTool.IsNumberValid(preStage) then
|
||
return id
|
||
end
|
||
end
|
||
return idList[1]
|
||
end
|
||
|
||
function XDoubleTowersConfigs.GetRoleDefaultPluginId()
|
||
local id = XDoubleTowersConfigs.GetDoubleTowerRoleId()
|
||
return GetRoleCfg(id).DefaultPlugin
|
||
end
|
||
|
||
function XDoubleTowersConfigs.GetRolePluginLevelId(index)
|
||
local idList = XDoubleTowersConfigs.GetRolePluginLevelIdList()
|
||
return idList[index]
|
||
end
|
||
|
||
function XDoubleTowersConfigs.GetRolePreStageId(index)
|
||
local id = XDoubleTowersConfigs.GetDoubleTowerRoleId()
|
||
local preStageIdList = GetRoleCfg(id).PreStage
|
||
return preStageIdList[index]
|
||
end
|
||
|
||
function XDoubleTowersConfigs.GetRoleIcon(index)
|
||
local id = XDoubleTowersConfigs.GetDoubleTowerRoleId()
|
||
local iconList = GetRoleCfg(id).Icon
|
||
return iconList[index]
|
||
end
|
||
|
||
function XDoubleTowersConfigs.GetRoleIconByPluginLevelId(pluginLevelId)
|
||
local idList = XDoubleTowersConfigs.GetRolePluginLevelIdList()
|
||
for index, id in ipairs(idList) do
|
||
if pluginLevelId == id then
|
||
return XDoubleTowersConfigs.GetRoleIcon(index)
|
||
end
|
||
end
|
||
end
|
||
|
||
function XDoubleTowersConfigs.GetSlotPreStageId(index, type)
|
||
local preStageIdList = {}
|
||
if type == XDoubleTowersConfigs.ModuleType.Role then
|
||
local id = XDoubleTowersConfigs.GetDoubleTowerRoleId()
|
||
preStageIdList = GetRoleCfg(id).SlotPreStageId
|
||
elseif type == XDoubleTowersConfigs.ModuleType.Guard then
|
||
local id = XDoubleTowersConfigs.GetDoubleTowerGuardId()
|
||
preStageIdList = GetGuardCfg(id).SlotPreStageId
|
||
end
|
||
return preStageIdList[index]
|
||
end
|
||
|
||
---------------DoubleTowerRole end-------------------
|
||
|
||
---------------DoubleTowerGuard being-------------------
|
||
local IsInitDoubleTowerGuard = false
|
||
local ActivityIdToGuardId = 0
|
||
local InitDoubleTowerGuardDic = function(activityId)
|
||
if IsInitDoubleTowerGuard then
|
||
return
|
||
end
|
||
|
||
-- local configs = GetGuardConfigs()
|
||
-- for id, v in pairs(configs) do
|
||
-- if not ActivityIdToGuardIdList[v.ActivityId] then
|
||
-- ActivityIdToGuardIdList[v.ActivityId] = id
|
||
-- end
|
||
-- end
|
||
ActivityIdToGuardId = activityId
|
||
IsInitDoubleTowerGuard = true
|
||
end
|
||
|
||
function XDoubleTowersConfigs.GetDoubleTowerGuardId()
|
||
local activityId = XDataCenter.DoubleTowersManager.GetActivityId()
|
||
InitDoubleTowerGuardDic(activityId)
|
||
return ActivityIdToGuardId
|
||
end
|
||
|
||
function XDoubleTowersConfigs.GetGuardBasePluginIdList()
|
||
local selectPluginType = XDoubleTowersConfigs.GetGuardSelectPluginType()
|
||
if XTool.IsNumberValid(selectPluginType) then
|
||
return XDoubleTowersConfigs.GetGuardPluginLevelIdList()
|
||
end
|
||
return XDoubleTowersConfigs.GetDoubleTowerPluginIdList(selectPluginType)
|
||
end
|
||
|
||
function XDoubleTowersConfigs.GetDefaultGuardIndex()
|
||
local idList = XDoubleTowersConfigs.GetGuardPluginLevelIdList()
|
||
for idx, _ in ipairs(idList or {}) do
|
||
local preStage = XDoubleTowersConfigs.GetGuardPreStageId(idx)
|
||
--默认为不需要前置关卡的pluginevelId
|
||
if not XTool.IsNumberValid(preStage) then
|
||
return idx
|
||
end
|
||
end
|
||
return 1
|
||
end
|
||
|
||
function XDoubleTowersConfigs.GetGuardPluginLevelId(index)
|
||
local idList = XDoubleTowersConfigs.GetGuardPluginLevelIdList()
|
||
return idList[index]
|
||
end
|
||
|
||
function XDoubleTowersConfigs.GetGuardSelectPluginType()
|
||
local id = XDoubleTowersConfigs.GetDoubleTowerGuardId()
|
||
return GetGuardCfg(id).SlotPluginType
|
||
end
|
||
|
||
function XDoubleTowersConfigs.GetGuardNpcIdList(index)
|
||
local id = XDoubleTowersConfigs.GetDoubleTowerGuardId()
|
||
local npcIdList = GetGuardCfg(id).NPCId
|
||
return npcIdList[index]
|
||
end
|
||
|
||
function XDoubleTowersConfigs.GetGuardPluginLevelIdList()
|
||
local id = XDoubleTowersConfigs.GetDoubleTowerGuardId()
|
||
return GetGuardCfg(id).PluginLevelId
|
||
end
|
||
|
||
function XDoubleTowersConfigs.GetGuardPreStageId(index)
|
||
local id = XDoubleTowersConfigs.GetDoubleTowerGuardId()
|
||
local preStageIdList = GetGuardCfg(id).PreStageId
|
||
return preStageIdList[index]
|
||
end
|
||
|
||
function XDoubleTowersConfigs.GetGuardIcon(index)
|
||
local id = XDoubleTowersConfigs.GetDoubleTowerGuardId()
|
||
local iconList = GetGuardCfg(id).Icon
|
||
return iconList[index]
|
||
end
|
||
|
||
function XDoubleTowersConfigs.GetGuardSmallIcon(index)
|
||
local id = XDoubleTowersConfigs.GetDoubleTowerGuardId()
|
||
local iconList = GetGuardCfg(id).SmallIcon
|
||
return iconList[index]
|
||
end
|
||
|
||
function XDoubleTowersConfigs.GetGuardIconByPluginLevelId(pluginLevelId, useSmallIcon)
|
||
local idList = XDoubleTowersConfigs.GetGuardPluginLevelIdList()
|
||
for index, id in ipairs(idList) do
|
||
if pluginLevelId == id then
|
||
return useSmallIcon and XDoubleTowersConfigs.GetGuardSmallIcon(index) or
|
||
XDoubleTowersConfigs.GetGuardIcon(index)
|
||
end
|
||
end
|
||
end
|
||
---------------DoubleTowerGuard end---------------------
|
||
|
||
---------------DoubleTowerPlugin begin-------------------
|
||
local IsInitDoubleTowerPlugin = false
|
||
local ActivityIdToPluginIdList = {} --key:活动Id, value:插件组Id列表
|
||
local PluginIdToLevelIdDic = {} --key1:插件Id, key2:等级, value:插件等级Id
|
||
local PluginIdToMaxLevelDic = {} --key:插件Id, value:插件最高等级
|
||
local PluginIdToLevelIdList = {}
|
||
local InitDoubleTowerPluginDic = function()
|
||
if IsInitDoubleTowerPlugin then
|
||
return
|
||
end
|
||
|
||
local configs = GetPluginConfigs()
|
||
for id, v in pairs(configs) do
|
||
if not ActivityIdToPluginIdList[v.ActivityId] then
|
||
ActivityIdToPluginIdList[v.ActivityId] = {}
|
||
end
|
||
table.insert(ActivityIdToPluginIdList[v.ActivityId], id)
|
||
end
|
||
|
||
configs = GetPluginLevelConfigs()
|
||
for id, v in pairs(configs) do
|
||
if not PluginIdToLevelIdDic[v.PluginId] then
|
||
PluginIdToLevelIdDic[v.PluginId] = {}
|
||
end
|
||
PluginIdToLevelIdDic[v.PluginId][v.Level] = id
|
||
|
||
if not PluginIdToLevelIdList[v.PluginId] then
|
||
PluginIdToLevelIdList[v.PluginId] = {}
|
||
end
|
||
table.insert(PluginIdToLevelIdList[v.PluginId], v.Id)
|
||
|
||
local curMaxLevel = PluginIdToMaxLevelDic[v.PluginId]
|
||
if not curMaxLevel or curMaxLevel < v.Level then
|
||
PluginIdToMaxLevelDic[v.PluginId] = v.Level
|
||
end
|
||
end
|
||
|
||
for _, levelIdList in pairs(PluginIdToLevelIdList) do
|
||
table.sort(
|
||
levelIdList,
|
||
function(levelIdA, levelIdB)
|
||
local levelA = XDoubleTowersConfigs.GetPluginLevel(levelIdA)
|
||
local levelB = XDoubleTowersConfigs.GetPluginLevel(levelIdB)
|
||
if levelA ~= levelB then
|
||
return levelA < levelB
|
||
end
|
||
return levelIdA < levelIdB
|
||
end
|
||
)
|
||
end
|
||
|
||
IsInitDoubleTowerPlugin = true
|
||
end
|
||
|
||
function XDoubleTowersConfigs.GetDoubleTowerPluginIdList(type)
|
||
InitDoubleTowerPluginDic()
|
||
local activityId = XDataCenter.DoubleTowersManager.GetActivityId()
|
||
local pluginIdList = ActivityIdToPluginIdList[activityId] or {}
|
||
if not type then
|
||
return pluginIdList
|
||
end
|
||
|
||
local sameTypePluginIdList = {}
|
||
for _, pluginId in ipairs(pluginIdList) do
|
||
if XDoubleTowersConfigs.GetPluginType(pluginId) == type then
|
||
table.insert(sameTypePluginIdList, pluginId)
|
||
end
|
||
end
|
||
return sameTypePluginIdList
|
||
end
|
||
|
||
function XDoubleTowersConfigs.GetPluginType(id)
|
||
return GetPluginCfg(id).Type
|
||
end
|
||
|
||
function XDoubleTowersConfigs.GetPluginIcon(id)
|
||
return GetPluginCfg(id).Icon
|
||
end
|
||
|
||
function XDoubleTowersConfigs.GetPluginDesc(id)
|
||
return GetPluginCfg(id).Desc
|
||
end
|
||
---------------DoubleTowerPlugin end---------------------
|
||
|
||
---------------DoubleTowerPluginLevel begin-------------------
|
||
function XDoubleTowersConfigs.GetPluginLevelId(pluginId, level)
|
||
InitDoubleTowerPluginDic()
|
||
level = XTool.IsNumberValid(level) and level or 1
|
||
return PluginIdToLevelIdDic[pluginId] and PluginIdToLevelIdDic[pluginId][level]
|
||
end
|
||
|
||
function XDoubleTowersConfigs.GetPluginLevelIdList(pluginId)
|
||
InitDoubleTowerPluginDic()
|
||
return PluginIdToLevelIdList[pluginId] or {}
|
||
end
|
||
|
||
function XDoubleTowersConfigs.GetPluginMaxLevel(pluginId)
|
||
InitDoubleTowerPluginDic()
|
||
return PluginIdToMaxLevelDic[pluginId] or 0
|
||
end
|
||
|
||
function XDoubleTowersConfigs.GetPluginLevelName(id)
|
||
return GetPluginLevelCfg(id).Name
|
||
end
|
||
|
||
function XDoubleTowersConfigs.GetLevelPluginId(id)
|
||
return GetPluginLevelCfg(id).PluginId
|
||
end
|
||
|
||
function XDoubleTowersConfigs.GetPluginLevel(id)
|
||
return GetPluginLevelCfg(id).Level
|
||
end
|
||
|
||
function XDoubleTowersConfigs.GetPluginLevelFightEventId(id)
|
||
return GetPluginLevelCfg(id).FightEventId
|
||
end
|
||
|
||
function XDoubleTowersConfigs.GetPluginLevelUpgradeSpend(id)
|
||
return GetPluginLevelCfg(id).UpgradeSpend
|
||
end
|
||
|
||
function XDoubleTowersConfigs.GetPluginLevelDesc(id)
|
||
return GetPluginLevelCfg(id).Desc
|
||
end
|
||
---------------DoubleTowerPluginLevel end---------------------
|