forked from endernon/PGRData
1054 lines
41 KiB
Lua
1054 lines
41 KiB
Lua
|
--===========================
|
|||
|
--超级爬塔管理器
|
|||
|
--模块负责:吕天元,陈思亮,张爽
|
|||
|
--===========================
|
|||
|
|
|||
|
--====================
|
|||
|
--打印没有当前活动配置错误日志
|
|||
|
--====================
|
|||
|
local DebugNoCurrentActivityCfg = function()
|
|||
|
--XLog.Error("【超级爬塔】XSuperTowerManager:当前活动配置为空!")
|
|||
|
end
|
|||
|
--====================
|
|||
|
--管理器
|
|||
|
--====================
|
|||
|
XSuperTowerManagerCreator = function()
|
|||
|
local XSuperTowerManager = {}
|
|||
|
local StageManager --关卡管理器
|
|||
|
local RoleManager --角色管理器
|
|||
|
local BagManager --仓库管理器
|
|||
|
local TeamManager --队伍管理器
|
|||
|
local FunctionManager --特权管理器
|
|||
|
local ShopManager --商店管理器
|
|||
|
local IsShowSettleDark --结算遮罩控制
|
|||
|
local IsCallFinishBattle --是否已经调用FinishBattle
|
|||
|
local HoldFinishBattle --是否挂起了结算战斗
|
|||
|
local HoldSettleData --挂起时缓存的结算数据
|
|||
|
local InitialManagers = false
|
|||
|
local DEBUG = false
|
|||
|
------------------------------------------------------------------
|
|||
|
------------------------------------------------------------------
|
|||
|
--===============
|
|||
|
--超级爬塔关卡类型枚举
|
|||
|
--===============
|
|||
|
XSuperTowerManager.StageType = {
|
|||
|
None = 0, -- 缺省类型,表示空值(用于查询时)
|
|||
|
SingleTeamOneWave = 1, -- 单队伍单波
|
|||
|
SingleTeamMultiWave = 2, -- 单队伍多波
|
|||
|
MultiTeamMultiWave = 3, -- 多队伍多波
|
|||
|
LllimitedTower = 4, -- 无限爬塔
|
|||
|
}
|
|||
|
--===============
|
|||
|
--超级爬塔关卡队伍字典
|
|||
|
--===============
|
|||
|
XSuperTowerManager.TeamId = {
|
|||
|
[XSuperTowerManager.StageType.SingleTeamOneWave] = 1, -- 单队伍单波
|
|||
|
[XSuperTowerManager.StageType.SingleTeamMultiWave] = 1, -- 单队伍多波
|
|||
|
[XSuperTowerManager.StageType.LllimitedTower] = 2, -- 无限爬塔
|
|||
|
[XSuperTowerManager.StageType.MultiTeamMultiWave] = 3, -- 多队多波
|
|||
|
}
|
|||
|
--===============
|
|||
|
--超级爬塔队伍类型枚举
|
|||
|
--===============
|
|||
|
XSuperTowerManager.TeamType = {
|
|||
|
SingleTeam = 1, --单队伍
|
|||
|
Tier = 2, --爬塔
|
|||
|
}
|
|||
|
--===============
|
|||
|
--超级爬塔 爬塔结算分数项枚举
|
|||
|
--===============
|
|||
|
XSuperTowerManager.ScoreType = {
|
|||
|
Tier = 1, --通关层数
|
|||
|
NormalBattle = 2, --普通战斗层
|
|||
|
EliteBattle = 3, --精英战斗层
|
|||
|
BossBattle = 4, --Boss战斗层
|
|||
|
EnhancerGet = 5, --获得增益数
|
|||
|
PluginsGet = 6 --获得插件数
|
|||
|
}
|
|||
|
--===============
|
|||
|
--超级爬塔 目标关卡奖励获取状态
|
|||
|
--===============
|
|||
|
XSuperTowerManager.StageRewardState = {
|
|||
|
Complete = 1, --已获得
|
|||
|
CanGet = 2, --可获得
|
|||
|
Lock = 3, --未解锁
|
|||
|
}
|
|||
|
--===============
|
|||
|
--超级爬塔 基础配置Key值枚举
|
|||
|
--===============
|
|||
|
XSuperTowerManager.BaseCfgKey = {
|
|||
|
ScoreItemId = "ScoreItemId", --积分物品id
|
|||
|
InitBagCapacity = "InitBagCapacity", --初始背包容量
|
|||
|
MaxBagCapacity = "MaxBagCapacity", --最大背包容量
|
|||
|
MaxTeamPluginCount = "MaxTeamPluginCount",
|
|||
|
SingleCapacityCount = "SingleCapacityCount", --单次扩容数量
|
|||
|
BagCacheCapacity = "BagCacheCapacity", --背包缓存容量
|
|||
|
MainAssetsPanelItem1 = "CurrencyItem1", --主界面和角色货币栏道具1
|
|||
|
MainAssetsPanelItem2 = "CurrencyItem2", --主界面和角色货币栏道具2
|
|||
|
MainAssetsPanelItem3 = "CurrencyItem3", --主界面和角色货币栏道具3
|
|||
|
BagAssetsPanelItem1 = "CurrencyItemOther1", --商店和背包货币栏道具1
|
|||
|
BagAssetsPanelItem2 = "CurrencyItemOther2", --商店和背包货币栏道具2
|
|||
|
BagAssetsPanelItem3 = "CurrencyItemOther3", --商店和背包货币栏道具3
|
|||
|
}
|
|||
|
--===============
|
|||
|
--超级爬塔 特权Key枚举
|
|||
|
--===============
|
|||
|
XSuperTowerManager.FunctionName = {
|
|||
|
Shop = "CheckMallIsOpen", --商店
|
|||
|
Transfinite = "CheckSuperLimitIsOpen", --角色超限
|
|||
|
BonusChara = "CheckSpecialCharacterIsOpen", --特典角色
|
|||
|
MultiTeam = "CheckMultiTeamChallengeOpen", --多队伍挑战
|
|||
|
Exclusive = "CheckSlotIsOpen" --专属槽
|
|||
|
}
|
|||
|
--===============
|
|||
|
--超级爬塔 主题Index
|
|||
|
--===============
|
|||
|
XSuperTowerManager.ThemeIndex = {
|
|||
|
ThemeAll = 0, --主题区域总览
|
|||
|
}
|
|||
|
--===============
|
|||
|
--超级爬塔 关卡Index
|
|||
|
--===============
|
|||
|
XSuperTowerManager.StageIndex = {
|
|||
|
StageAll = 0, --关卡区域总览
|
|||
|
}
|
|||
|
--===============
|
|||
|
--超级爬塔 协议名
|
|||
|
--===============
|
|||
|
local METHOD_NAME = {
|
|||
|
StConfirmTargetResultRequest = "StConfirmTargetResultRequest",--确认目标关卡战斗结果
|
|||
|
}
|
|||
|
--===============
|
|||
|
--超级爬塔 道具类型
|
|||
|
--===============
|
|||
|
XSuperTowerManager.ItemType = {
|
|||
|
Enhance = 1,
|
|||
|
Plugin = 2,
|
|||
|
}
|
|||
|
--===============
|
|||
|
--目标关卡 目标关卡属性类型
|
|||
|
--===============
|
|||
|
XSuperTowerManager.StageElement = {
|
|||
|
None = 0, --无
|
|||
|
NextFloor = 2, --下一层
|
|||
|
Keep = 3, --保持现状,暂时离开
|
|||
|
}
|
|||
|
------------------------------------------------------------------
|
|||
|
------------------------------------------------------------------
|
|||
|
--===============
|
|||
|
--初始化
|
|||
|
--===============
|
|||
|
function XSuperTowerManager.Init()
|
|||
|
XSuperTowerManager.InitActivityCfg()
|
|||
|
if not XSuperTowerManager.CheckActivityIsInTime() and not DEBUG then
|
|||
|
return
|
|||
|
end
|
|||
|
XSuperTowerManager.InitManagers()
|
|||
|
end
|
|||
|
|
|||
|
function XSuperTowerManager.InitManagers()
|
|||
|
if InitialManagers then return end
|
|||
|
XSuperTowerManager.InitStageManager()
|
|||
|
XSuperTowerManager.InitRoleManager()
|
|||
|
XSuperTowerManager.InitBagManager()
|
|||
|
XSuperTowerManager.InitTeamManager()
|
|||
|
XSuperTowerManager.InitFunctionManager()
|
|||
|
XSuperTowerManager.InitShopManager()
|
|||
|
InitialManagers = true
|
|||
|
end
|
|||
|
--===============
|
|||
|
--初始化活动配置
|
|||
|
--===============
|
|||
|
local CurrentActivityCfg
|
|||
|
function XSuperTowerManager.InitActivityCfg()
|
|||
|
CurrentActivityCfg = XSuperTowerConfigs.GetCurrentActivity()
|
|||
|
end
|
|||
|
--===============
|
|||
|
--初始化关卡管理器
|
|||
|
--===============
|
|||
|
function XSuperTowerManager.InitStageManager()
|
|||
|
local script = require("XEntity/XSuperTower/Stages/XSuperTowerStageManager")
|
|||
|
StageManager = script.New(XSuperTowerManager)
|
|||
|
end
|
|||
|
--===============
|
|||
|
--初始化角色管理器
|
|||
|
--===============
|
|||
|
function XSuperTowerManager.InitRoleManager()
|
|||
|
local script = require("XEntity/XSuperTower/Role/XSuperTowerRoleManager")
|
|||
|
RoleManager = script.New(XSuperTowerManager)
|
|||
|
end
|
|||
|
|
|||
|
function XSuperTowerManager.InitFunctionManager()
|
|||
|
local script = require("XEntity/XSuperTower/Function/XSuperTowerFunctionManager")
|
|||
|
FunctionManager = script.New(XSuperTowerManager)
|
|||
|
end
|
|||
|
--===============
|
|||
|
--初始化队伍管理器
|
|||
|
--===============
|
|||
|
function XSuperTowerManager.InitTeamManager()
|
|||
|
local script = require("XEntity/XSuperTower/XSuperTowerTeamManager")
|
|||
|
TeamManager = script.New(XSuperTowerManager)
|
|||
|
end
|
|||
|
--===============
|
|||
|
--获取队伍管理器
|
|||
|
--===============
|
|||
|
function XSuperTowerManager.InitBagManager()
|
|||
|
local script = require("XEntity/XSuperTower/XSuperTowerBagManager")
|
|||
|
BagManager = script.New(XSuperTowerManager)
|
|||
|
end
|
|||
|
--===============
|
|||
|
--初始化商店管理器
|
|||
|
--===============
|
|||
|
function XSuperTowerManager.InitShopManager()
|
|||
|
local script = require("XEntity/XSuperTower/Shop/XSuperTowerShopManager")
|
|||
|
ShopManager = script.New(XSuperTowerManager)
|
|||
|
end
|
|||
|
--===============
|
|||
|
--FubenManager代理方法:初始化StageInfo
|
|||
|
--===============
|
|||
|
function XSuperTowerManager.InitStageInfo()
|
|||
|
if StageManager then
|
|||
|
StageManager:InitStageInfo()
|
|||
|
end
|
|||
|
end
|
|||
|
--===============
|
|||
|
--FubenManager代理方法:检查stageId是否有通关
|
|||
|
--===============
|
|||
|
function XSuperTowerManager.CheckPassedByStageId(stageId)
|
|||
|
local targetStage = StageManager:GetTargetStageByStageId(stageId)
|
|||
|
if targetStage then
|
|||
|
return targetStage:CheckIsClear()
|
|||
|
else
|
|||
|
return false
|
|||
|
end
|
|||
|
end
|
|||
|
--===============
|
|||
|
--FubenManager代理方法:出战前检查
|
|||
|
--===============
|
|||
|
function XSuperTowerManager.CheckPreFight(stage, challengeCount)
|
|||
|
local stageType = XSuperTowerManager.GetStageTypeByStageId(stage.StageId)
|
|||
|
if stageType == XSuperTowerManager.StageType.None then
|
|||
|
XUiManager.TipError("关卡不存在!")
|
|||
|
return false
|
|||
|
elseif stageType == XSuperTowerManager.StageType.LllimitedTower then
|
|||
|
local team = XSuperTowerManager.GetTeamByStageId(stage.StageId)
|
|||
|
--爬塔需要3个人
|
|||
|
local isFullMember = team:GetIsFullMember()
|
|||
|
if not isFullMember then XUiManager.TipText("STTierStageNotFullMemember") end
|
|||
|
return isFullMember
|
|||
|
else
|
|||
|
--XUiManager.TipMsg("TODO -- 目标关卡战斗前检查")
|
|||
|
return true
|
|||
|
end
|
|||
|
end
|
|||
|
--===============
|
|||
|
--FubenManager代理方法:准备出战数据
|
|||
|
--===============
|
|||
|
function XSuperTowerManager.PreFight(stage, team, isAssist, challengeCount, challengeId)
|
|||
|
local preFight = {}
|
|||
|
preFight.CardIds = {}
|
|||
|
preFight.RobotIds = {}
|
|||
|
preFight.StageId = stage.StageId
|
|||
|
preFight.IsHasAssist = isAssist and true or false
|
|||
|
preFight.ChallengeCount = challengeCount or 1
|
|||
|
local stageType = XSuperTowerManager.GetStageTypeByStageId(stage.StageId)
|
|||
|
if stageType == XSuperTowerManager.StageType.None then
|
|||
|
return nil
|
|||
|
else
|
|||
|
local team = XSuperTowerManager.GetTeamByStageId(stage.StageId)
|
|||
|
if team then
|
|||
|
for i = 1, 3 do
|
|||
|
local entityId = team:GetEntityIdByTeamPos(i)
|
|||
|
local role = RoleManager:GetRole(entityId)
|
|||
|
preFight.CardIds[i] = role and role:GetCharacterId() or 0
|
|||
|
if role and role:GetIsRobot() then
|
|||
|
preFight.RobotIds[i] = role:GetId()
|
|||
|
else
|
|||
|
preFight.RobotIds[i] = 0
|
|||
|
end
|
|||
|
end
|
|||
|
preFight.CaptainPos = team:GetCaptainPos()
|
|||
|
preFight.FirstFightPos = team:GetFirstFightPos()
|
|||
|
end
|
|||
|
end
|
|||
|
return preFight
|
|||
|
end
|
|||
|
--===============
|
|||
|
--FubenManager代理方法:结束战斗
|
|||
|
--===============
|
|||
|
function XSuperTowerManager.FinishFight(settleData)
|
|||
|
if not IsCallFinishBattle then
|
|||
|
HoldFinishBattle = true
|
|||
|
HoldSettleData = settleData
|
|||
|
return
|
|||
|
end
|
|||
|
local stageInfo = XDataCenter.FubenManager.GetStageInfo(settleData.StageId)
|
|||
|
if stageInfo.Type ~= XDataCenter.FubenManager.StageType.SuperTower then
|
|||
|
return
|
|||
|
end
|
|||
|
|
|||
|
local stageId = settleData.StageId
|
|||
|
local stageType = XSuperTowerManager.GetStageTypeByStageId(stageId)
|
|||
|
if stageType == XSuperTowerManager.StageType.LllimitedTower then
|
|||
|
XSuperTowerManager.TierStageFinish(settleData)
|
|||
|
else
|
|||
|
XSuperTowerManager.TargetStageFinish(settleData)
|
|||
|
end
|
|||
|
|
|||
|
IsShowSettleDark = false
|
|||
|
HoldFinishBattle = false
|
|||
|
IsCallFinishBattle = false
|
|||
|
HoldSettleData = nil
|
|||
|
end
|
|||
|
--===============
|
|||
|
--FubenManager代理方法:调用结算战斗时
|
|||
|
--===============
|
|||
|
function XSuperTowerManager.CallFinishFight()
|
|||
|
local XFubenManager = XDataCenter.FubenManager
|
|||
|
local res = XFubenManager.FubenSettleResult
|
|||
|
XFubenManager.FubenSettling = false
|
|||
|
XFubenManager.FubenSettleResult = nil
|
|||
|
|
|||
|
--通知战斗结束,关闭战斗设置页面
|
|||
|
CS.XGameEventManager.Instance:Notify(XEventId.EVENT_FIGHT_FINISH)
|
|||
|
|
|||
|
if not res then
|
|||
|
IsShowSettleDark = true
|
|||
|
IsCallFinishBattle = true
|
|||
|
return
|
|||
|
end
|
|||
|
|
|||
|
if res.Code ~= XCode.Success then
|
|||
|
CS.XGameEventManager.Instance:Notify(XEventId.EVENT_FUBEN_SETTLE_FAIL, res.Code)
|
|||
|
return
|
|||
|
end
|
|||
|
|
|||
|
CsXGameEventManager.Instance:Notify(XEventId.EVENT_FIGHT_RESULT, res.Settle)
|
|||
|
IsCallFinishBattle = true
|
|||
|
if HoldFinishBattle then
|
|||
|
XSuperTowerManager.FinishFight(HoldSettleData)
|
|||
|
end
|
|||
|
end
|
|||
|
--===============
|
|||
|
--进入战斗
|
|||
|
--===============
|
|||
|
function XSuperTowerManager.EnterFight(stageId)
|
|||
|
local stageConfig = XDataCenter.FubenManager.GetStageCfg(stageId)
|
|||
|
local stageType = XSuperTowerManager.GetStageTypeByStageId(stageId)
|
|||
|
if stageType == XSuperTowerManager.StageType.None then
|
|||
|
XUiHelper.GetText("STNoStageType")
|
|||
|
return
|
|||
|
elseif stageType == XSuperTowerManager.StageType.LllimitedTower then --爬塔直接调用EnterFight
|
|||
|
local isAssist = false
|
|||
|
local challengeCount = 1
|
|||
|
XDataCenter.FubenManager.EnterFight(stageConfig, nil, isAssist, challengeCount)
|
|||
|
else --目标关卡需先设定队伍信息,成功后再进入关卡
|
|||
|
local isAssist = false
|
|||
|
local challengeCount = 1
|
|||
|
XDataCenter.FubenManager.EnterFight(stageConfig, nil, isAssist, challengeCount)
|
|||
|
end
|
|||
|
end
|
|||
|
--===============
|
|||
|
--爬塔关卡结束时
|
|||
|
--===============
|
|||
|
function XSuperTowerManager.TierStageFinish(settleData)
|
|||
|
local theme = StageManager:GetThemeByStageId(settleData.StageId)
|
|||
|
XSuperTowerManager:GetStageManager():RefreshStMapTierData(settleData.StMapTierDataOperation)
|
|||
|
--[[if settleData.IsWin then
|
|||
|
if theme:GetResetFlag() then
|
|||
|
XLuaUiManager.Open("UiSuperTowerInfiniteSettleWin", settleData)
|
|||
|
end
|
|||
|
else
|
|||
|
if theme:GetResetFlag() then
|
|||
|
XLuaUiManager.Open("UiSuperTowerInfiniteSettleWin", settleData)
|
|||
|
end
|
|||
|
end]]
|
|||
|
--XLog.Debug("================爬塔关卡结束:SettleData:", settleData)
|
|||
|
if theme:GetResetFlag() then
|
|||
|
XLuaUiManager.Open("UiSuperTowerInfiniteSettleWin", settleData)
|
|||
|
end
|
|||
|
end
|
|||
|
--===============
|
|||
|
--目标关卡结束时
|
|||
|
--===============
|
|||
|
function XSuperTowerManager.TargetStageFinish(settleData)
|
|||
|
local stageId = settleData.StageId
|
|||
|
local stageType = XSuperTowerManager.GetStageTypeByStageId(stageId)
|
|||
|
local targetStage = XSuperTowerManager.GetTargetStageByStageId(stageId)
|
|||
|
XSuperTowerManager.GetStageManager():SetTempProgress(settleData.StTargetStageFightResult)
|
|||
|
local tempProgress = StageManager:GetTempProgressByTargetId(targetStage:GetId())
|
|||
|
local IsMultiTeam = stageType ==XSuperTowerManager.StageType.MultiTeamMultiWave
|
|||
|
local teamList = IsMultiTeam and XSuperTowerManager.GetTeamByStageId(stageId) or
|
|||
|
{XSuperTowerManager.GetTeamByStageId(stageId)}
|
|||
|
|
|||
|
if IsMultiTeam then
|
|||
|
local teamCount = targetStage:GetTeamCount()
|
|||
|
teamList = XSuperTowerManager.GetTeamByStageType(stageType,teamCount)
|
|||
|
else
|
|||
|
teamList = {XSuperTowerManager.GetTeamByStageId(stageId)}
|
|||
|
end
|
|||
|
|
|||
|
local battledTeamList = {}
|
|||
|
local pulginList = {}
|
|||
|
for index,team in pairs(teamList or {}) do
|
|||
|
if index <= tempProgress then
|
|||
|
local pluginSlotManger = team:GetExtraData()
|
|||
|
local plugins = pluginSlotManger:GetPlugins()
|
|||
|
for _,plugin in pairs(plugins or {}) do
|
|||
|
if type(plugin) == "table" then
|
|||
|
table.insert(pulginList, plugin)
|
|||
|
end
|
|||
|
end
|
|||
|
table.insert(battledTeamList, team)
|
|||
|
end
|
|||
|
end
|
|||
|
if settleData.IsWin and IsMultiTeam then
|
|||
|
if not StageManager:IsSetTempProgress() then
|
|||
|
XLog.Error("SuperTower SetTempProgress Is Late!")
|
|||
|
end
|
|||
|
StageManager:ClearTempProgressMark()
|
|||
|
|
|||
|
if tempProgress < targetStage:GetProgress() then
|
|||
|
local nextIndex = tempProgress + 1
|
|||
|
local nextStageId = targetStage:GetStageIdByIndex(nextIndex)
|
|||
|
local nextTeam = XSuperTowerManager.GetTeamByStageId(nextStageId)
|
|||
|
XSuperTowerManager.EnterFight(nextStageId)
|
|||
|
else
|
|||
|
XLuaUiManager.Open("UiSuperTowerSettleWin",targetStage, pulginList, tempProgress, battledTeamList)
|
|||
|
end
|
|||
|
else
|
|||
|
XLuaUiManager.Open("UiSuperTowerSettleWin",targetStage, pulginList, tempProgress, battledTeamList)
|
|||
|
end
|
|||
|
end
|
|||
|
------------------------------------------------------------------
|
|||
|
------------------------------------------------------------------
|
|||
|
--===============
|
|||
|
--获取当前活动配置ID
|
|||
|
--===============
|
|||
|
function XSuperTowerManager.GetActivityId()
|
|||
|
if not CurrentActivityCfg then
|
|||
|
DebugNoCurrentActivityCfg()
|
|||
|
return 1
|
|||
|
end
|
|||
|
return CurrentActivityCfg.Id
|
|||
|
end
|
|||
|
--===============
|
|||
|
--获取当前活动TimeId
|
|||
|
--===============
|
|||
|
function XSuperTowerManager.GetActivityTimeId()
|
|||
|
if not CurrentActivityCfg then
|
|||
|
DebugNoCurrentActivityCfg()
|
|||
|
return 0
|
|||
|
end
|
|||
|
return CurrentActivityCfg.TimeId
|
|||
|
end
|
|||
|
--===============
|
|||
|
--获取当前活动的主题组ID
|
|||
|
--===============
|
|||
|
function XSuperTowerManager.GetThemeIds()
|
|||
|
if not CurrentActivityCfg then
|
|||
|
DebugNoCurrentActivityCfg()
|
|||
|
return {}
|
|||
|
end
|
|||
|
return CurrentActivityCfg.MapId
|
|||
|
end
|
|||
|
--===============
|
|||
|
--获取当前活动的名字
|
|||
|
--===============
|
|||
|
function XSuperTowerManager.GetActivityName()
|
|||
|
if not CurrentActivityCfg then
|
|||
|
DebugNoCurrentActivityCfg()
|
|||
|
return {}
|
|||
|
end
|
|||
|
return CurrentActivityCfg.Name
|
|||
|
end
|
|||
|
|
|||
|
function XSuperTowerManager.GetActivityEntryImage()
|
|||
|
if not CurrentActivityCfg then
|
|||
|
DebugNoCurrentActivityCfg()
|
|||
|
return ""
|
|||
|
end
|
|||
|
return CurrentActivityCfg.EntryImage
|
|||
|
end
|
|||
|
--===============
|
|||
|
--获取当前活动序言故事ID
|
|||
|
--===============
|
|||
|
function XSuperTowerManager.GetPrefaceStoryId()
|
|||
|
if not CurrentActivityCfg then
|
|||
|
DebugNoCurrentActivityCfg()
|
|||
|
return {}
|
|||
|
end
|
|||
|
return CurrentActivityCfg.PrefaceStoryId
|
|||
|
end
|
|||
|
--===============
|
|||
|
--获取背包管理器
|
|||
|
--===============
|
|||
|
function XSuperTowerManager.GetBagManager()
|
|||
|
return BagManager
|
|||
|
end
|
|||
|
--===============
|
|||
|
--获取角色管理器
|
|||
|
--===============
|
|||
|
function XSuperTowerManager.GetRoleManager()
|
|||
|
return RoleManager
|
|||
|
end
|
|||
|
--===============
|
|||
|
--获取关卡管理器
|
|||
|
--===============
|
|||
|
function XSuperTowerManager.GetStageManager()
|
|||
|
return StageManager
|
|||
|
end
|
|||
|
--===============
|
|||
|
--获取队伍管理器
|
|||
|
--===============
|
|||
|
function XSuperTowerManager.GetTeamManager()
|
|||
|
return TeamManager
|
|||
|
end
|
|||
|
--===============
|
|||
|
--获取特权管理器
|
|||
|
--===============
|
|||
|
function XSuperTowerManager.GetFunctionManager()
|
|||
|
return FunctionManager
|
|||
|
end
|
|||
|
--===============
|
|||
|
--获取商店管理器
|
|||
|
--===============
|
|||
|
---@return XSuperTowerShopManager
|
|||
|
function XSuperTowerManager.GetShopManager()
|
|||
|
return ShopManager
|
|||
|
end
|
|||
|
--===============
|
|||
|
--检测结算遮罩是否打开
|
|||
|
--===============
|
|||
|
---@return IsShowSettleDark
|
|||
|
function XSuperTowerManager.CheckShowSettleDark()
|
|||
|
return IsShowSettleDark
|
|||
|
end
|
|||
|
--===============
|
|||
|
--获取当前活动开始时间戳(根据TimeId)
|
|||
|
--===============
|
|||
|
function XSuperTowerManager.GetActivityStartTime()
|
|||
|
return XFunctionManager.GetStartTimeByTimeId(XSuperTowerManager.GetActivityTimeId())
|
|||
|
end
|
|||
|
--===============
|
|||
|
--获取当前活动结束时间戳(根据TimeId)
|
|||
|
--===============
|
|||
|
function XSuperTowerManager.GetActivityEndTime()
|
|||
|
return XFunctionManager.GetEndTimeByTimeId(XSuperTowerManager.GetActivityTimeId())
|
|||
|
end
|
|||
|
--===============
|
|||
|
--根据关卡Id获取关卡类型(XSuperTowerManager.StageType)
|
|||
|
--若查不到结果,会返回XSuperTowerManager.StageType.None
|
|||
|
--@param stageId:关卡Id
|
|||
|
--===============
|
|||
|
function XSuperTowerManager.GetStageTypeByStageId(stageId)
|
|||
|
return StageManager:GetStageTypeByStageId(stageId)
|
|||
|
end
|
|||
|
--===============
|
|||
|
--根据关卡Id获取关卡序号
|
|||
|
--若查不到结果,会返回0
|
|||
|
--@param stageId:关卡Id
|
|||
|
--===============
|
|||
|
function XSuperTowerManager.GetStageIndexByStageId(stageId)
|
|||
|
return StageManager:GetStageIndexByStageId(stageId)
|
|||
|
end
|
|||
|
--===============
|
|||
|
--根据关卡Id获取队伍ID
|
|||
|
--若查不到结果,会返回nil
|
|||
|
--@param stageId:关卡Id
|
|||
|
--===============
|
|||
|
function XSuperTowerManager.GetTeamIdByStageId(stageId)
|
|||
|
local stageType = XSuperTowerManager.GetStageTypeByStageId(stageId)
|
|||
|
return XSuperTowerManager.GetTeamIdByStageType(stageType)
|
|||
|
end
|
|||
|
--===============
|
|||
|
--根据关卡类型获取队伍ID
|
|||
|
--若查不到结果,会返回nil
|
|||
|
--@param stageType:(XSuperTowerManager.StageType)
|
|||
|
--===============
|
|||
|
function XSuperTowerManager.GetTeamIdByStageType(stageType)
|
|||
|
return XSuperTowerManager.TeamId[stageType]
|
|||
|
end
|
|||
|
--===============
|
|||
|
--根据关卡ID获取队伍对象
|
|||
|
--若查不到结果,会返回nil
|
|||
|
--@param stageId:关卡Id
|
|||
|
--===============
|
|||
|
function XSuperTowerManager.GetTeamByStageId(stageId)
|
|||
|
local teamId = XSuperTowerManager.GetTeamIdByStageId(stageId)
|
|||
|
local stageIndex = XSuperTowerManager.GetStageIndexByStageId(stageId)
|
|||
|
|
|||
|
if teamId and stageIndex > 0 then
|
|||
|
return TeamManager:GetTeamById(teamId, stageIndex)
|
|||
|
end
|
|||
|
return nil
|
|||
|
end
|
|||
|
--===============
|
|||
|
--===============
|
|||
|
--根据关卡类型获取队伍对象(多队伍时会返回该类型所有队伍对象)
|
|||
|
--若查不到结果,会返回nil
|
|||
|
--@param stageType:(XSuperTowerManager.StageType)
|
|||
|
--@param teamCount:多队伍类型时需要获取的队伍数
|
|||
|
--===============
|
|||
|
function XSuperTowerManager.GetTeamByStageType(stageType, teamCount)
|
|||
|
local teamId = XSuperTowerManager.GetTeamIdByStageType(stageType)
|
|||
|
if teamId then
|
|||
|
if stageType == XSuperTowerManager.StageType.MultiTeamMultiWave then
|
|||
|
local teamList = {}
|
|||
|
local count = teamCount or 0
|
|||
|
for index = 1, count do
|
|||
|
table.insert(teamList, TeamManager:GetTeamById(teamId, index))
|
|||
|
end
|
|||
|
return next(teamList) and teamList
|
|||
|
else
|
|||
|
return TeamManager:GetTeamById(teamId)--单队伍时不需要设置关卡序号(有且仅有1),默认为1
|
|||
|
end
|
|||
|
end
|
|||
|
return nil
|
|||
|
end
|
|||
|
--===============
|
|||
|
--根据关卡ID获取目标关卡ID
|
|||
|
--===============
|
|||
|
function XSuperTowerManager.GetTargetStageIdByStageId(stageId)
|
|||
|
return StageManager:GetTargetStageIdByStageId(stageId)
|
|||
|
end
|
|||
|
--===============
|
|||
|
--根据关卡ID获取目标关卡的关卡数量
|
|||
|
--===============
|
|||
|
function XSuperTowerManager.GetTargetStageCountByStageId(stageId)
|
|||
|
local targetStage = StageManager:GetTargetStageByStageId(stageId)
|
|||
|
if targetStage == nil then return 0 end
|
|||
|
return #targetStage:GetStageId()
|
|||
|
end
|
|||
|
--===============
|
|||
|
--根据关卡ID获取目标关卡数据实体
|
|||
|
--===============
|
|||
|
function XSuperTowerManager.GetTargetStageByStageId(stageId)
|
|||
|
return StageManager:GetTargetStageByStageId(stageId)
|
|||
|
end
|
|||
|
--===============
|
|||
|
--根据关卡Id获取关卡在目标关卡中的序号
|
|||
|
--===============
|
|||
|
function XSuperTowerManager.GetStageIndexByStageId(stageId)
|
|||
|
return StageManager:GetStageIndexByStageId(stageId)
|
|||
|
end
|
|||
|
--===============
|
|||
|
--根据队伍实体获取该队伍中所有角色ID
|
|||
|
--===============
|
|||
|
function XSuperTowerManager.GetCharacterIdListByTeamEntity(stTeam)
|
|||
|
local characterIds = {}
|
|||
|
if stTeam then
|
|||
|
for index,id in pairs(stTeam:GetEntityIds()) do
|
|||
|
local role = RoleManager:GetRole(id)
|
|||
|
if role then
|
|||
|
characterIds[index] = role:GetCharacterId()
|
|||
|
else
|
|||
|
characterIds[index] = 0
|
|||
|
end
|
|||
|
end
|
|||
|
end
|
|||
|
return characterIds
|
|||
|
end
|
|||
|
--===============
|
|||
|
--清除多队伍关卡的所有队伍数据
|
|||
|
--===============
|
|||
|
function XSuperTowerManager.ClearAllMultiTeamsData()
|
|||
|
local teamMaxCount = StageManager:GetMaxStageCount()
|
|||
|
local teamId = XSuperTowerManager.TeamId[XSuperTowerManager.StageType.MultiTeamMultiWave]
|
|||
|
for index = 1,teamMaxCount do
|
|||
|
TeamManager:ClearTeam(teamId, index)
|
|||
|
end
|
|||
|
end
|
|||
|
--===============
|
|||
|
--一键上阵
|
|||
|
--===============
|
|||
|
function XSuperTowerManager.AutoTeam(stStage)
|
|||
|
local normalRoleList = RoleManager:GetCanFightRoles(XCharacterConfigs.CharacterType.Normal)
|
|||
|
local isomerRoleList = RoleManager:GetCanFightRoles(XCharacterConfigs.CharacterType.Isomer)
|
|||
|
|
|||
|
XSuperTowerManager.ClearAllMultiTeamsData()
|
|||
|
|
|||
|
local stageIdList = stStage:GetStageId()
|
|||
|
|
|||
|
table.sort(normalRoleList, function(a, b)
|
|||
|
return a:GetAbility() > b:GetAbility()
|
|||
|
end)
|
|||
|
table.sort(isomerRoleList, function(a, b)
|
|||
|
return a:GetAbility() > b:GetAbility()
|
|||
|
end)
|
|||
|
|
|||
|
-- 正在使用的角色id字典
|
|||
|
local usingCharacterIdDic = {}
|
|||
|
|
|||
|
for index,stageId in pairs(stageIdList or {}) do --优先选择倾向构造体
|
|||
|
local memberCount = stStage:GetMemberCountByIndex(index)
|
|||
|
local recommendType = XFubenConfigs.GetStageRecommendCharacterType(stageId) or XCharacterConfigs.CharacterType.Normal
|
|||
|
local team = XSuperTowerManager.GetTeamByStageId(stageId)
|
|||
|
team:Clear()
|
|||
|
local charIndex = 1
|
|||
|
local curCount = 1
|
|||
|
|
|||
|
local roleList
|
|||
|
if recommendType == XCharacterConfigs.CharacterType.Isomer then
|
|||
|
roleList = isomerRoleList
|
|||
|
elseif recommendType == XCharacterConfigs.CharacterType.Normal then
|
|||
|
roleList = normalRoleList
|
|||
|
end
|
|||
|
|
|||
|
while curCount <= memberCount do
|
|||
|
local role = roleList[charIndex]
|
|||
|
if role then
|
|||
|
if XFubenConfigs.IsStageRecommendCharacterType(stageId, role:GetId()) and
|
|||
|
-- not team:CheckHasSameCharacterId(role:GetId()
|
|||
|
not usingCharacterIdDic[role:GetCharacterId()] then
|
|||
|
|
|||
|
team:UpdateEntityTeamPos(role:GetId(), curCount, true)
|
|||
|
usingCharacterIdDic[role:GetCharacterId()] = true
|
|||
|
if curCount == 1 then
|
|||
|
team:UpdateFirstFightPos(curCount)
|
|||
|
team:UpdateCaptainPos(curCount)
|
|||
|
end
|
|||
|
|
|||
|
table.remove(roleList,charIndex)
|
|||
|
charIndex = charIndex - 1
|
|||
|
curCount = curCount + 1
|
|||
|
end
|
|||
|
else
|
|||
|
break
|
|||
|
end
|
|||
|
charIndex = charIndex + 1
|
|||
|
end
|
|||
|
end
|
|||
|
|
|||
|
for index,stageId in pairs(stageIdList or {}) do --补足非倾向构造体
|
|||
|
local memberCount = stStage:GetMemberCountByIndex(index)
|
|||
|
local recommendType = XFubenConfigs.GetStageRecommendCharacterType(stageId) or XCharacterConfigs.CharacterType.Normal
|
|||
|
local team = XSuperTowerManager.GetTeamByStageId(stageId)
|
|||
|
local charIndex = 1
|
|||
|
local curCount = 1
|
|||
|
|
|||
|
local roleList
|
|||
|
if recommendType == XCharacterConfigs.CharacterType.Isomer then
|
|||
|
roleList = isomerRoleList
|
|||
|
elseif recommendType == XCharacterConfigs.CharacterType.Normal then
|
|||
|
roleList = normalRoleList
|
|||
|
end
|
|||
|
|
|||
|
while curCount <= memberCount do
|
|||
|
if team:GetEntityIdByTeamPos(curCount) == 0 then
|
|||
|
local role = roleList[charIndex]
|
|||
|
if role then
|
|||
|
-- not team:CheckHasSameCharacterId(role:GetId())
|
|||
|
if not usingCharacterIdDic[role:GetCharacterId()] then
|
|||
|
team:UpdateEntityTeamPos(role:GetId(), curCount, true)
|
|||
|
usingCharacterIdDic[role:GetCharacterId()] = true
|
|||
|
if curCount == 1 then
|
|||
|
team:UpdateFirstFightPos(curCount)
|
|||
|
team:UpdateCaptainPos(curCount)
|
|||
|
end
|
|||
|
|
|||
|
table.remove(roleList,charIndex)
|
|||
|
charIndex = charIndex - 1
|
|||
|
curCount = curCount + 1
|
|||
|
end
|
|||
|
else
|
|||
|
break
|
|||
|
end
|
|||
|
charIndex = charIndex + 1
|
|||
|
else
|
|||
|
curCount = curCount + 1
|
|||
|
end
|
|||
|
end
|
|||
|
end
|
|||
|
end
|
|||
|
|
|||
|
--===============
|
|||
|
--一键填充插件
|
|||
|
--stStage : XSuperTowerTargetStage
|
|||
|
--===============
|
|||
|
function XSuperTowerManager.AutoPulgin(stStage)
|
|||
|
local teamManager = XDataCenter.SuperTowerManager.GetTeamManager()
|
|||
|
local teams = teamManager:GetTeamsByIdAndCount(XDataCenter.SuperTowerManager.TeamId[stStage:GetStageType()]
|
|||
|
, XSuperTowerConfigs.MaxMultiTeamCount)
|
|||
|
teamManager:AutoSelectPlugins2Teams(teams)
|
|||
|
end
|
|||
|
--===============
|
|||
|
--检查背包与特权弹窗
|
|||
|
--===============
|
|||
|
function XSuperTowerManager.CheckPopupWindow(callBack)
|
|||
|
local unLockFuncList = FunctionManager:GetUnlockList()
|
|||
|
if unLockFuncList and #unLockFuncList > 0 then
|
|||
|
XLuaUiManager.Open("UiSuperTowerUnlockTips", unLockFuncList, function()
|
|||
|
XSuperTowerManager.CheckPopupWindow(callBack)
|
|||
|
end)
|
|||
|
return
|
|||
|
end
|
|||
|
local hasUpdate, last, current = BagManager:CheckMaxCapacityUpdate()
|
|||
|
if hasUpdate then
|
|||
|
XLuaUiManager.Open("UiSupertowerUpTips", last, current, function()
|
|||
|
XSuperTowerManager.CheckPopupWindow(callBack)
|
|||
|
end)
|
|||
|
return
|
|||
|
end
|
|||
|
if callBack then
|
|||
|
callBack()
|
|||
|
end
|
|||
|
end
|
|||
|
--===============
|
|||
|
--根据关卡ID获取队伍对象
|
|||
|
--若查不到结果,会返回nil
|
|||
|
--@param stStage:目标关卡
|
|||
|
--===============
|
|||
|
function XSuperTowerManager.CheckTeamListAllHasCaptainAndFirstPos(stStage)
|
|||
|
local IsNotHasCaptain = false
|
|||
|
local IsNotHasFirstPos = false
|
|||
|
for index,stageId in pairs(stStage:GetStageId() or {}) do
|
|||
|
local teamId = XSuperTowerManager.GetTeamIdByStageId(stageId)
|
|||
|
if teamId then
|
|||
|
local team = TeamManager:GetTeamById(teamId, index)
|
|||
|
if not team:GetCaptainPosEntityId() or team:GetCaptainPosEntityId() == 0 then
|
|||
|
IsNotHasCaptain = true
|
|||
|
end
|
|||
|
if not team:GetFirstFightPosEntityId() or team:GetFirstFightPosEntityId() == 0 then
|
|||
|
IsNotHasFirstPos = true
|
|||
|
end
|
|||
|
end
|
|||
|
end
|
|||
|
return not IsNotHasCaptain, not IsNotHasFirstPos
|
|||
|
end
|
|||
|
--===============
|
|||
|
--检查现在是否在活动时间内(根据TimeId)
|
|||
|
--===============
|
|||
|
function XSuperTowerManager.CheckActivityIsInTime()
|
|||
|
local now = XTime.GetServerNowTimestamp()
|
|||
|
return (now >= XSuperTowerManager.GetActivityStartTime())
|
|||
|
and (now < XSuperTowerManager.GetActivityEndTime())
|
|||
|
end
|
|||
|
--===============
|
|||
|
--根据特权Key检查特权是否解锁
|
|||
|
--@param key:特权键值 XSuperTowerManager.FunctionName
|
|||
|
--===============
|
|||
|
function XSuperTowerManager.CheckFunctionUnlockByKey(key)
|
|||
|
return FunctionManager:CheckFunctionUnlockByKey(key)
|
|||
|
end
|
|||
|
------------------------------------------------------------------
|
|||
|
------------------------------------------------------------------
|
|||
|
--===============
|
|||
|
--获取主题选择状态的本地数据
|
|||
|
--
|
|||
|
--===============
|
|||
|
function XSuperTowerManager.GetCurSelectThemeIndex()
|
|||
|
local activityId = XSuperTowerManager.GetActivityId()
|
|||
|
return XSaveTool.GetData(string.format( "%sSuperTowerCurSelectThemeIndex%s", XPlayer.Id, activityId))
|
|||
|
end
|
|||
|
--===============
|
|||
|
--保存主题选择状态的本地数据
|
|||
|
--index:主题序号
|
|||
|
--===============
|
|||
|
function XSuperTowerManager.SaveCurSelectThemeIndex(index)
|
|||
|
local activityId = XSuperTowerManager.GetActivityId()
|
|||
|
local data = XSaveTool.GetData(string.format( "%sSuperTowerCurSelectThemeIndex%s", XPlayer.Id, activityId))
|
|||
|
if not data then
|
|||
|
XSaveTool.SaveData(string.format( "%sSuperTowerCurSelectThemeIndex%s", XPlayer.Id, activityId), index)
|
|||
|
end
|
|||
|
end
|
|||
|
--===============
|
|||
|
--删除主题选择状态的本地数据
|
|||
|
--===============
|
|||
|
function XSuperTowerManager.RemoveCurSelectThemeIndex()
|
|||
|
local activityId = XSuperTowerManager.GetActivityId()
|
|||
|
local data = XSaveTool.GetData(string.format( "%sSuperTowerCurSelectThemeIndex%s", XPlayer.Id, activityId))
|
|||
|
if data then
|
|||
|
XSaveTool.RemoveData(string.format( "%sSuperTowerCurSelectThemeIndex%s", XPlayer.Id, activityId))
|
|||
|
end
|
|||
|
end
|
|||
|
------------------------------------------------------------------
|
|||
|
------------------------------------------------------------------
|
|||
|
--=====================
|
|||
|
--确认目标关卡战斗结果
|
|||
|
--@param targetStageId :目标关卡ID
|
|||
|
--@response res.RewardGoodsList :奖励列表
|
|||
|
--=====================
|
|||
|
function XSuperTowerManager.ConfirmTargetResultRequest(targetStageId, cb)
|
|||
|
XNetwork.Call(METHOD_NAME.StConfirmTargetResultRequest, {TargetId = targetStageId}, function(res)
|
|||
|
if res.Code ~= XCode.Success then
|
|||
|
XUiManager.TipCode(res.Code)
|
|||
|
return
|
|||
|
end
|
|||
|
if cb then cb(res.RewardGoodsList) end
|
|||
|
end)
|
|||
|
end
|
|||
|
------------------------------------------------------------------
|
|||
|
------------------------------------------------------------------
|
|||
|
--=====================
|
|||
|
--处理登陆活动内容推送
|
|||
|
--@data : {
|
|||
|
-- 活动id public int Id,
|
|||
|
-- 地图信息列表 public List<StMapInfo> MapInfos,
|
|||
|
-- 超限角色信息 public List<StTransfiniteCharacterInfo> CharacterInfos,
|
|||
|
-- 背包信息 public StBagInfo BagInfo }
|
|||
|
--=====================
|
|||
|
function XSuperTowerManager.RefreshLoginData(data)
|
|||
|
if data and next(data) and not InitialManagers then
|
|||
|
XSuperTowerManager.InitManagers()
|
|||
|
XSuperTowerManager.InitStageInfo()
|
|||
|
end
|
|||
|
StageManager:RefreshNotifyMapInfo(data.MapInfos)
|
|||
|
RoleManager:InitWithServerData(data.CharacterInfos)
|
|||
|
BagManager:InitWithServerData(data.BagInfo)
|
|||
|
ShopManager:UpdateShopData(data.MallInfo)
|
|||
|
FunctionManager:SetUnLockEvent() --初始化特权需要在首次刷新关卡数据的时候
|
|||
|
end
|
|||
|
--=====================
|
|||
|
--替换fubenmanager里的OpenFightLoading()
|
|||
|
--=====================
|
|||
|
function XSuperTowerManager.OpenFightLoading(stageId)
|
|||
|
local stageType = XSuperTowerManager.GetStageTypeByStageId(stageId)
|
|||
|
if stageType == XSuperTowerManager.StageType.MultiTeamMultiWave then
|
|||
|
local targetStage = XSuperTowerManager.GetTargetStageByStageId(stageId)
|
|||
|
local tempProgress = StageManager:GetTempProgressByTargetId(targetStage:GetId())
|
|||
|
XLuaUiManager.Open("UiSuperTowerLoading", targetStage, tempProgress + 1)
|
|||
|
else
|
|||
|
XDataCenter.FubenManager.OpenFightLoading(stageId)
|
|||
|
end
|
|||
|
end
|
|||
|
--=====================
|
|||
|
--替换fubenmanager里的CloseFightLoading()
|
|||
|
--=====================
|
|||
|
function XSuperTowerManager.CloseFightLoading(stageId)
|
|||
|
local stageType = XSuperTowerManager.GetStageTypeByStageId(stageId)
|
|||
|
if stageType == XSuperTowerManager.StageType.MultiTeamMultiWave then
|
|||
|
if XLuaUiManager.IsUiLoad("UiSuperTowerLoading") then
|
|||
|
XLuaUiManager.Remove("UiSuperTowerLoading")
|
|||
|
end
|
|||
|
else
|
|||
|
XDataCenter.FubenManager.CloseFightLoading(stageId)
|
|||
|
end
|
|||
|
end
|
|||
|
--=================================入口,跳转相关=============================
|
|||
|
--===================
|
|||
|
--获取活动配置简表
|
|||
|
--===================
|
|||
|
function XSuperTowerManager.GetActivityChapters()
|
|||
|
--只有活动开启期间显示入口
|
|||
|
local isEnd = XSuperTowerManager.GetIsEnd()
|
|||
|
if isEnd then return {} end
|
|||
|
local chapters = {}
|
|||
|
local tempChapter = {}
|
|||
|
tempChapter.Type = XDataCenter.FubenManager.ChapterType.SuperTower
|
|||
|
tempChapter.Id = XSuperTowerManager.GetActivityId()
|
|||
|
table.insert(chapters, tempChapter)
|
|||
|
return chapters
|
|||
|
end
|
|||
|
--================
|
|||
|
--跳转到活动主界面
|
|||
|
--================
|
|||
|
function XSuperTowerManager.JumpTo()
|
|||
|
if XFunctionManager.DetectionFunction(XFunctionManager.FunctionName.SuperTower) then
|
|||
|
local canGoTo, notStart = XSuperTowerManager.CheckCanGoTo()
|
|||
|
if canGoTo then
|
|||
|
XLuaUiManager.Open("UiSuperTowerMain")
|
|||
|
elseif notStart then
|
|||
|
XUiManager.TipMsg(CS.XTextManager.GetText("CommonActivityNotStart"))
|
|||
|
else
|
|||
|
XUiManager.TipMsg(CS.XTextManager.GetText("CommonActivityEnd"))
|
|||
|
end
|
|||
|
end
|
|||
|
end
|
|||
|
--================
|
|||
|
--检查是否能进入玩法
|
|||
|
--@return param1:是否在活动时间内(true为在活动时间内)
|
|||
|
--@return param2:是否未开始活动(true为未开始活动)
|
|||
|
--================
|
|||
|
function XSuperTowerManager.CheckCanGoTo()
|
|||
|
local isActivityEnd, notStart = XSuperTowerManager.GetIsEnd()
|
|||
|
return not isActivityEnd, notStart
|
|||
|
end
|
|||
|
--================
|
|||
|
--跳转到爬塔关卡准备界面
|
|||
|
--若有正在爬的塔则跳转到正在爬的塔
|
|||
|
--没有的话跳转到最新章节的塔
|
|||
|
--================
|
|||
|
function XSuperTowerManager.SkipToSuperTowerTier()
|
|||
|
local playingId = StageManager:GetPlayingTierId()
|
|||
|
local theme
|
|||
|
if playingId > 0 then
|
|||
|
theme = StageManager:GetThemeById(playingId)
|
|||
|
else
|
|||
|
theme = StageManager:GetThemeByClearProgress()
|
|||
|
end
|
|||
|
XLuaUiManager.Open("UiSuperTowerStageDetail04", theme)
|
|||
|
end
|
|||
|
--================
|
|||
|
--获取玩法是否关闭(用于判断玩法入口,进入活动条件等)
|
|||
|
--@return param1:玩法是否关闭
|
|||
|
--@return param2:是否活动未开启
|
|||
|
--================
|
|||
|
function XSuperTowerManager.GetIsEnd()
|
|||
|
local timeNow = XTime.GetServerNowTimestamp()
|
|||
|
local isEnd = timeNow >= XSuperTowerManager.GetActivityEndTime()
|
|||
|
local isStart = timeNow >= XSuperTowerManager.GetActivityStartTime()
|
|||
|
local inActivity = (not isEnd) and (isStart)
|
|||
|
return not inActivity, timeNow < XSuperTowerManager.GetActivityStartTime()
|
|||
|
end
|
|||
|
--================
|
|||
|
--玩法关闭时弹出主界面
|
|||
|
--================
|
|||
|
function XSuperTowerManager.HandleActivityEndTime()
|
|||
|
XLuaUiManager.RunMain()
|
|||
|
XUiManager.TipMsg(CS.XTextManager.GetText("STActivityTimeEnd"))
|
|||
|
end
|
|||
|
--=====================================================================
|
|||
|
XSuperTowerManager.Init()
|
|||
|
XEventManager.AddEventListener(XEventId.EVENT_FUBEN_SETTLE_REWARD,XSuperTowerManager.FinishFight)
|
|||
|
return XSuperTowerManager
|
|||
|
end
|
|||
|
--=====================
|
|||
|
--登陆活动内容推送
|
|||
|
--@data : {
|
|||
|
-- 活动id public int Id,
|
|||
|
-- 地图信息列表 public List<StMapInfo> MapInfos,
|
|||
|
-- 超限角色信息 public List<StTransfiniteCharacterInfo> CharacterInfos,
|
|||
|
-- 背包信息 public StBagInfo BagInfo }
|
|||
|
--=====================
|
|||
|
XRpc.NotifySuperTowerLoginData = function(data)
|
|||
|
XDataCenter.SuperTowerManager.RefreshLoginData(data)
|
|||
|
end
|
|||
|
--[[
|
|||
|
XRpc.NotifyStMapTierData = function(data)
|
|||
|
XDataCenter.SuperTowerManager.GetStageManager():RefreshStMapTierData(data)
|
|||
|
end
|
|||
|
]]
|
|||
|
XRpc.NotifyStMapTargetData = function(data)
|
|||
|
XDataCenter.SuperTowerManager.GetStageManager():RefreshStMapTargetData(data)
|
|||
|
end
|
|||
|
--[[
|
|||
|
XRpc.NotifyTargetStageFightResult = function(data)
|
|||
|
XDataCenter.SuperTowerManager.GetStageManager():SetTempProgress(data)
|
|||
|
end
|
|||
|
]]
|
|||
|
XRpc.NotifySuperTowerMallRefreshData = function(data)
|
|||
|
local shopManager = XDataCenter.SuperTowerManager.GetShopManager()
|
|||
|
if shopManager then
|
|||
|
shopManager:OnrMallRefreshData(data)
|
|||
|
end
|
|||
|
end
|
|||
|
XRpc.NotifySuperTowerMallData = function(data)
|
|||
|
local shopManager = XDataCenter.SuperTowerManager.GetShopManager()
|
|||
|
if shopManager then
|
|||
|
shopManager:UpdateShopData(data.MallInfo)
|
|||
|
end
|
|||
|
end
|
|||
|
-- 背包最大容量
|
|||
|
XRpc.NotifyStBagCapacity = function(data)
|
|||
|
XDataCenter.SuperTowerManager.GetBagManager():UpdateMaxCapacity(data.Capacity)
|
|||
|
end
|
|||
|
-- 背包插件更新
|
|||
|
XRpc.NotifyStBagPluginChange = function(data)
|
|||
|
XDataCenter.SuperTowerManager.GetBagManager():OnBagPluginChange(data)
|
|||
|
end
|
|||
|
-- 通知背包插件合成数据
|
|||
|
-- data : List<StPluginSynthesisInfo>
|
|||
|
XRpc.NotifyStBagPluginSynthesisData = function(pluginSynthesisInfos)
|
|||
|
XDataCenter.SuperTowerManager.GetBagManager():OnBagPluginSynthesisData(pluginSynthesisInfos)
|
|||
|
end
|