local PreviewLevel = class("PreviewLevel") local Actor2DManager = require("Game.Actor2D.Actor2DManager") local mapEventConfig = { LoadLevelRefresh = "OnEvent_LoadLevelRefresh", BattlePause = "OnEvent_AbandonBattle", LevelStateChanged = "OnEvent_LevelResult", AdventureModuleEnter = "OnEvent_AdventureModuleEnter" } function PreviewLevel:Init(nLevelType, nLevelId, bView, nStarTowerFloorSetId, nPrefabID, nPrefabExtension, nPlayType, nSceneMir, parent) self.parent = parent self.tbCharId = PlayerData.Team:GetTeamCharId(1) self.nLevelType = nLevelType self.nLevelId = nLevelId self:BindEvent() CS.AdventureModuleHelper.EnterViewSceneLevel(nLevelType, nLevelId, self.tbCharId, bView, nStarTowerFloorSetId, nPrefabID, nPrefabExtension, nPlayType, nSceneMir) NovaAPI.EnterModule("AdventureModuleScene", true, 17) end function PreviewLevel:OnEvent_LoadLevelRefresh() end function PreviewLevel:OnEvent_LevelResult(nState) self:PlaySuccessPerform({}, {}, 3) end function PreviewLevel:OnEvent_AbandonBattle() self:OnEvent_LevelResult(true, 0) end function PreviewLevel:OnEvent_AdventureModuleEnter() EventManager.Hit(EventId.OpenPanel, PanelId.Adventure, self.tbCharId) self:SetTheme() for _, value in ipairs(self.tbCharId) do self:SetTempActorAttribute(value) end end function PreviewLevel: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 PreviewLevel: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 PreviewLevel:PlaySuccessPerform() local func_OpenResult = function(bSuccess) end local tbChar = self.tbCharId local function levelEndCallback() EventManager.Remove("ADVENTURE_LEVEL_UNLOAD_COMPLETE", self, levelEndCallback) local sName = "" if self.nLevelType == GameEnum.worldLevelType.Mainline then local nType = ConfigTable.GetData("MainlineFloor", self.nLevelId).Theme sName = ConfigTable.GetData("EndSceneType", nType).EndSceneName elseif self.nLevelType == GameEnum.worldLevelType.RegionBoss then local nType = ConfigTable.GetData("RegionBossFloor", self.nLevelId).Theme sName = ConfigTable.GetData("EndSceneType", nType).EndSceneName elseif self.nLevelType == GameEnum.worldLevelType.TravelerDuel then local nType = ConfigTable.GetData("TravelerDuelFloor", self.nLevelId).Theme sName = ConfigTable.GetData("EndSceneType", nType).EndSceneName elseif self.nLevelType == GameEnum.worldLevelType.DailyInstance then local nType = ConfigTable.GetData("DailyInstanceFloor", self.nLevelId).Theme sName = ConfigTable.GetData("EndSceneType", nType).EndSceneName elseif self.nLevelType == GameEnum.worldLevelType.ActivityStory then local nType = ConfigTable.GetData("ActivityLevelsFloor", self.nLevelId).Theme sName = ConfigTable.GetData("EndSceneType", nType).EndSceneName else local nType = ConfigTable.GetData("StarTowerMap", self.nLevelId).Theme sName = ConfigTable.GetData("EndSceneType", nType).EndSceneName end local jumpPerform = function() NovaAPI.DispatchEventWithData("SKIP_SETTLEMENT_PERFORM") end EventManager.Hit(EventId.OpenPanel, PanelId.BtnTips, jumpPerform) local function openBattleResultPanel() EventManager.Remove("SettlementPerformLoadFinish", self, openBattleResultPanel) local sLarge, sSmall = "", "" EventManager.Hit(EventId.OpenPanel, PanelId.BattleResult, true, 3, {}, {}, {}, 0, false, sLarge, sSmall, 13001, self.tbCharId) self.bSettle = false self.parent:LevelEnd() end EventManager.Add("SettlementPerformLoadFinish", self, openBattleResultPanel) local tbSkin = {} for _, nCharId in ipairs(tbChar) do local nSkinId = PlayerData.Char:GetCharSkinId(nCharId) table.insert(tbSkin, nSkinId) end CS.AdventureModuleHelper.PlaySettlementPerform(sName, "", tbSkin, func_OpenResult) end EventManager.Add("ADVENTURE_LEVEL_UNLOAD_COMPLETE", self, levelEndCallback) CS.AdventureModuleHelper.LevelStateChanged(true) end function PreviewLevel:SetTempActorAttribute(nCharId) local mapChar = {nLevel = 1, nAdvance = 0} local nLevel = mapChar.nLevel local nAdvance = mapChar.nAdvance local nAttrId = UTILS.GetCharacterAttributeId(nCharId, nAdvance, nLevel) local mapCharAttr = ConfigTable.GetData_Attribute(tostring(nAttrId)) if mapCharAttr == nil then printError("属性配置不存在:" .. nAttrId) return {} end local stActorInfo = CS.Lua2CSharpInfo_CharAttribute() stActorInfo.Atk = mapCharAttr.Atk stActorInfo.Def = mapCharAttr.Def stActorInfo.MDef = mapCharAttr.Mdef stActorInfo.ShieldBonus = mapCharAttr.ShieldBonus stActorInfo.IncomingShieldBonus = mapCharAttr.IncomingShieldBonus stActorInfo.Evd = mapCharAttr.Evd stActorInfo.CritRate = mapCharAttr.CritRate stActorInfo.CritResistance = mapCharAttr.CritResistance stActorInfo.CritPower = mapCharAttr.CritPower stActorInfo.HitRate = mapCharAttr.HitRate stActorInfo.DefPierce = mapCharAttr.DefPierce stActorInfo.WEE = mapCharAttr.WEE stActorInfo.FEE = mapCharAttr.FEE stActorInfo.SEE = mapCharAttr.SEE stActorInfo.AEE = mapCharAttr.AEE stActorInfo.LEE = mapCharAttr.LEE stActorInfo.DEE = mapCharAttr.DEE stActorInfo.WEP = mapCharAttr.WEP stActorInfo.FEP = mapCharAttr.FEP stActorInfo.AEP = mapCharAttr.AEP stActorInfo.SEP = mapCharAttr.SEP stActorInfo.LEP = mapCharAttr.LEP stActorInfo.DEP = mapCharAttr.DEP stActorInfo.WER = mapCharAttr.WER stActorInfo.FER = mapCharAttr.FER stActorInfo.AER = mapCharAttr.AER stActorInfo.SER = mapCharAttr.SER stActorInfo.LER = mapCharAttr.LER stActorInfo.DER = mapCharAttr.DER stActorInfo.Hp = mapCharAttr.Hp stActorInfo.Suppress = mapCharAttr.Suppress stActorInfo.SkillLevel = { 1, 1, 1 } stActorInfo.skinId = PlayerData.Char:GetCharSkinId(nCharId) stActorInfo.attrId = mapCharAttr.sAttrId safe_call_cs_func(CS.AdventureModuleHelper.SetActorAttribute, nCharId, stActorInfo) end function PreviewLevel:SetCharFixedAttribute() for nCharId, mapInfo in pairs(self.mapActorInfo) do safe_call_cs_func(CS.AdventureModuleHelper.SetActorAttribute, nCharId, mapInfo.stActorInfo) end end function PreviewLevel.CalCharFixedEffect(nCharId, bMainChar) local tbstInfo = {} local stActorInfo = {} local nHeartStoneLevel = 1 return tbstInfo, stActorInfo, nHeartStoneLevel end function PreviewLevel:SetTheme() end return PreviewLevel