Initial version - 1.2.0.60
EN: 1.2.0.60 CN: 1.2.0.61 JP: 1.2.0.63 KR: 1.2.0.67
This commit is contained in:
@@ -0,0 +1,143 @@
|
||||
local InfinityTowerLevel = class("InfinityTowerLevel")
|
||||
local mapEventConfig = {
|
||||
LoadLevelRefresh = "OnEvent_LoadLevelRefresh",
|
||||
InfinityTowerEnd = "OnEvent_InfinityTowerEnd",
|
||||
AdventureModuleEnter = "OnEvent_AdventureModuleEnter",
|
||||
BattlePause = "OnEvnet_Pause",
|
||||
[EventId.AbandonBattle] = "OnEvent_AbandonBattle",
|
||||
Infinity_Tower_RunTime = "OnEvent_InfinityTowerRunTime",
|
||||
ADVENTURE_LEVEL_UNLOAD_COMPLETE = "OnEvent_UnloadComplete"
|
||||
}
|
||||
function InfinityTowerLevel:Init(parent, floorId, nBuildId, againOrNextLv, isContinue)
|
||||
self.parent = parent
|
||||
self.floorId = floorId
|
||||
self.lvRunTime = 0
|
||||
local GetBuildCallback = function(mapBuildData)
|
||||
self.mapBuildData = mapBuildData
|
||||
self.tbCharId = {}
|
||||
for _, mapChar in ipairs(self.mapBuildData.tbChar) do
|
||||
table.insert(self.tbCharId, mapChar.nTid)
|
||||
end
|
||||
self.tbDiscId = {}
|
||||
for _, nDiscId in ipairs(self.mapBuildData.tbDisc) do
|
||||
if 0 < nDiscId then
|
||||
table.insert(self.tbDiscId, nDiscId)
|
||||
end
|
||||
end
|
||||
self.mapActorInfo = {}
|
||||
for idx, nTid in ipairs(self.tbCharId) do
|
||||
local stActorInfo = self:CalCharFixedEffect(nTid, idx == 1, self.tbDiscId)
|
||||
self.mapActorInfo[nTid] = stActorInfo
|
||||
end
|
||||
self.parent:CacheBuildCharTid(self.tbCharId)
|
||||
PlayerData.nCurGameType = AllEnum.WorldMapNodeType.InfinityTower
|
||||
CS.AdventureModuleHelper.EnterInfinityTowerFloor(self.floorId, self.tbCharId, isContinue)
|
||||
if againOrNextLv == 0 then
|
||||
NovaAPI.EnterModule("AdventureModuleScene", true, 17)
|
||||
else
|
||||
self:OnEvent_AdventureModuleEnter()
|
||||
end
|
||||
EventManager.Hit("Infinity_Refresh_Msg")
|
||||
end
|
||||
PlayerData.Build:GetBuildDetailData(GetBuildCallback, nBuildId)
|
||||
end
|
||||
function InfinityTowerLevel:CalCharFixedEffect(nCharId, bMainChar, tbDiscId)
|
||||
local stActorInfo = CS.Lua2CSharpInfo_CharAttribute()
|
||||
PlayerData.Char:CalCharacterAttrBattle(nCharId, stActorInfo, bMainChar, tbDiscId, self.mapBuildData.nBuildId)
|
||||
return stActorInfo
|
||||
end
|
||||
function InfinityTowerLevel:BindEvent()
|
||||
if type(mapEventConfig) ~= "table" then
|
||||
return
|
||||
end
|
||||
for nEventId, sCallbackName in pairs(mapEventConfig) do
|
||||
local callback = self[sCallbackName]
|
||||
if type(callback) == "function" then
|
||||
EventManager.Add(nEventId, self, callback)
|
||||
end
|
||||
end
|
||||
end
|
||||
function InfinityTowerLevel:UnBindEvent()
|
||||
if type(mapEventConfig) ~= "table" then
|
||||
return
|
||||
end
|
||||
for nEventId, sCallbackName in pairs(mapEventConfig) do
|
||||
local callback = self[sCallbackName]
|
||||
if type(callback) == "function" then
|
||||
EventManager.Remove(nEventId, self, callback)
|
||||
end
|
||||
end
|
||||
end
|
||||
function InfinityTowerLevel:OnEvent_InfinityTowerEnd(state)
|
||||
if state == 1 then
|
||||
self.parent:ITSettleReq(2, self.lvRunTime, self.tbCharId)
|
||||
elseif state == 2 then
|
||||
self.parent:ITSettleReq(1, self.lvRunTime, self.tbCharId)
|
||||
elseif state == 3 then
|
||||
self.parent:ITSettleReq(3, self.lvRunTime, self.tbCharId)
|
||||
end
|
||||
EventManager.Hit("Infinity_Hide_Time")
|
||||
EventManager.Hit("ResetBossHUD")
|
||||
end
|
||||
function InfinityTowerLevel:OnEvent_AdventureModuleEnter()
|
||||
PlayerData.Achievement:SetSpecialBattleAchievement(GameEnum.levelType.InfinityTower)
|
||||
EventManager.Hit(EventId.OpenPanel, PanelId.InfinityTowerBattlePanel, self.tbCharId)
|
||||
local wait = function()
|
||||
coroutine.yield(CS.UnityEngine.WaitForEndOfFrame())
|
||||
EventManager.Hit(EventId.OpenPanel, PanelId.Hud)
|
||||
end
|
||||
cs_coroutine.start(wait)
|
||||
self:SetPersonalPerk()
|
||||
self:SetDiscInfo()
|
||||
for idx, nCharId in ipairs(self.tbCharId) do
|
||||
local stActorInfo = self:CalCharFixedEffect(nCharId, idx == 1, self.tbDiscId)
|
||||
safe_call_cs_func(CS.AdventureModuleHelper.SetActorAttribute, nCharId, stActorInfo)
|
||||
end
|
||||
end
|
||||
function InfinityTowerLevel:SetPersonalPerk()
|
||||
if self.mapBuildData ~= nil then
|
||||
for nCharId, tbPerk in pairs(self.mapBuildData.tbPotentials) do
|
||||
local mapAddLevel = PlayerData.Char:GetCharEnhancedPotential(nCharId)
|
||||
local tbPerkInfo = {}
|
||||
for _, mapPerkInfo in ipairs(tbPerk) do
|
||||
local nAddLv = mapAddLevel[mapPerkInfo.nPotentialId] or 0
|
||||
local stPerkInfo = CS.Lua2CSharpInfo_TPPerkInfo()
|
||||
stPerkInfo.perkId = mapPerkInfo.nPotentialId
|
||||
stPerkInfo.nCount = mapPerkInfo.nLevel + nAddLv
|
||||
table.insert(tbPerkInfo, stPerkInfo)
|
||||
end
|
||||
safe_call_cs_func(CS.AdventureModuleHelper.ChangePersonalPerkIds, tbPerkInfo, nCharId)
|
||||
end
|
||||
end
|
||||
end
|
||||
function InfinityTowerLevel:SetDiscInfo()
|
||||
local tbDiscInfo = {}
|
||||
for k, nDiscId in ipairs(self.mapBuildData.tbDisc) do
|
||||
if k <= 3 then
|
||||
local discInfo = PlayerData.Disc:CalcDiscInfoInBuild(nDiscId, self.mapBuildData.tbSecondarySkill)
|
||||
table.insert(tbDiscInfo, discInfo)
|
||||
end
|
||||
end
|
||||
safe_call_cs_func(CS.AdventureModuleHelper.SetDiscInfo, tbDiscInfo)
|
||||
end
|
||||
function InfinityTowerLevel:OnEvent_LoadLevelRefresh()
|
||||
EventManager.Hit("MainBattleMenuBtnPauseActive", true)
|
||||
local mapAllEft, mapDiscEft, mapNoteEffect, tbNoteInfo = PlayerData.Build:GetBuildAllEft(self.mapBuildData.nBuildId)
|
||||
safe_call_cs_func(CS.AdventureModuleHelper.SetNoteInfo, tbNoteInfo)
|
||||
self.mapEftData = UTILS.AddBuildEffect(mapAllEft, mapDiscEft, mapNoteEffect)
|
||||
local tabAddAffixBuff = PlayerData.InfinityTower:GetFloorAffixBuff(self.tbCharId, self.floorId)
|
||||
safe_call_cs_func(CS.AdventureModuleHelper.InfinityTowerFloorEffects, tabAddAffixBuff)
|
||||
end
|
||||
function InfinityTowerLevel:OnEvent_UnloadComplete()
|
||||
self.parent:EnterInfinityTowerAgainNext()
|
||||
end
|
||||
function InfinityTowerLevel:OnEvnet_Pause()
|
||||
EventManager.Hit("show_Infinity_Pause", self.lvRunTime, self.tbCharId)
|
||||
end
|
||||
function InfinityTowerLevel:OnEvent_AbandonBattle()
|
||||
self:OnEvent_InfinityTowerEnd(3)
|
||||
end
|
||||
function InfinityTowerLevel:OnEvent_InfinityTowerRunTime(rTime)
|
||||
self.lvRunTime = rTime
|
||||
end
|
||||
return InfinityTowerLevel
|
||||
Reference in New Issue
Block a user