Files
StellaSora_DataLua/lua/game/adventure/mainlinelevel/previewlevel.lua
T
SL1900 e0549005e1 Update - 1.9.0.103
EN: 1.9.0.103
CN: 1.9.0.104
JP: 1.9.0.106
KR: 1.9.0.108
2026-04-18 00:15:00 +09:00

168 lines
6.5 KiB
Lua

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