miduo_client/Assets/ManagedResources/~Lua/Modules/Story/StoryMapPanel.lua

732 lines
30 KiB
Lua

require("Base/BasePanel")
local StoryMapPanel = Inherit(BasePanel)
local this = StoryMapPanel
--local playerSpeed = 0
local curGroupId = 0
local storyMapConfig = ConfigManager.GetConfig(ConfigName.StoryMapConfig)
local chapterEventPointData = ConfigManager.GetConfig(ConfigName.ChapterEventPointConfig)
local artResConfig = ConfigManager.GetConfig(ConfigName.ArtResourcesConfig)
local curGroupConfig = {}
this.eventIndex = 0
this.showDiaLog = false
local lastLive2DId = 0
local sortingOrder = 0
local newSortingOrder = 0
local isSkip = false
local isFirstEnter = 1
--初始化组件(用于子类重写)
function StoryMapPanel:InitComponent()
this.spLoader = SpriteLoader.New()
this.map = Util.GetGameObject(self.gameObject,"bg/mapParent")
this.mapPre = Util.GetGameObject(self.gameObject,"bg/mapPre")
this.TT = Util.GetGameObject(self.gameObject,"bg/TT")
this.dialog = Util.GetGameObject(self.gameObject,"bg/dialog")
this.diaLogName = Util.GetGameObject(this.dialog,"Image")
this.diaLogNameText = Util.GetGameObject(this.diaLogName,"Name"):GetComponent("Text")
this.diaLogContent = Util.GetGameObject(this.dialog,"context"):GetComponent("Text")
-- 右切入
this.right2dRoot = Util.GetGameObject(self.gameObject, "rightLive2d")
-- 左切入
this.left2dRoot = Util.GetGameObject(self.gameObject, "leftLive2d")
-- 特效的节点
this.effectRoot = Util.GetGameObject(self.gameObject, "effectRoot")
-- 中间乱入的图片
this.showImg = Util.GetGameObject(self.gameObject, "showImg")
this.GoOn = Util.GetGameObject(self.gameObject,"bg/btnGoOn")
this.btnGoOn = Util.GetGameObject(this.GoOn ,"Click")
this.skip = Util.GetGameObject(self.gameObject,"bg/btnSkip")
this.btnSkip = Util.GetGameObject(this.skip,"btnGo")
this.btnSkipBtnComp = Util.GetGameObject(this.skip,"btnGo"):GetComponent("Button")
this.skip.gameObject:SetActive(true)
this.PlayerGrouops = {}
this.Maps = {}
this.mask = Util.GetGameObject(self.gameObject,"mask")
this.maskBtn = Util.GetGameObject(this.mask,"Button")
this.mask.gameObject:SetActive(false)
end
--绑定事件(用于子类重写)
function StoryMapPanel:BindEvent()
Util.AddClick(this.btnSkip, function ()
if not isSkip then
--StoryMapManager.GetSingleStoryConfig()
MsgPanel.ShowTwo("是否跳过这段剧情?",function() end,function()
isSkip = true
this:StackPop()
end,"取消","确认")
end
end)
Util.AddClick(this.btnGoOn, function ()
this:ShowDialog()
end)
Util.AddClick(this.maskBtn, function ()
this.mask.gameObject:SetActive(false)
if self.SoundTime1_2 then
self.SoundTime1_2:Stop()
self.SoundTime1_2 = nil
end
SoundManager.PlaySound(SoundConfig.STORY_VOICE_1_5)
this:StackPop()
end)
end
--添加事件监听(用于子类重写)
function StoryMapPanel:AddListener()
Game.GlobalEvent:AddEvent(GameEvent.GuaJi.CloseStoryMapPanel,this.CloseThisPanel)
end
function this.CloseThisPanel()
this:ClosePanel()
end
--移除事件监听(用于子类重写)
function StoryMapPanel:RemoveListener()
Game.GlobalEvent:RemoveEvent(GameEvent.GuaJi.CloseStoryMapPanel,this.CloseThisPanel)
end
--界面打开时调用(用于子类重写)
function StoryMapPanel:OnOpen(config)
this.mask.gameObject:SetActive(false)
this.map.transform.localPosition = Vector3.zero
--LogGreen("this.map.transform.localPosition:"..tostring(this.map.transform.localPosition))
sortingOrder = 0
this.PlayerGrouops = {}
this.triggerEvent = {}
this.callList = Stack.New()
curGroupConfig = config
curGroupId = config.Id
this.LoadMap()
this.LoadTT()
end
---加载跑图角色
function this.LoadTT()
if not curGroupConfig then
return
end
if curGroupConfig.MonsterRoads and #curGroupConfig.MonsterRoads > 0 then
for i = 1 ,#curGroupConfig.MonsterRoads do
this.PlayerGrouops[i] = SubUIManager.Open(SubUIConfig.SingleStoryPlayerView,this.TT.transform,this)
this.PlayerGrouops[i]:SetData(curGroupConfig.MonsterRoads[i],0,this)
end
end
this.PlayerGrouops[0] = SubUIManager.Open(SubUIConfig.SingleStoryPlayerView,this.TT.transform,this)
this.PlayerGrouops[0]:SetData(curGroupConfig.PlayerRoads,1,this)
end
function this.LoadMap()
if not curGroupConfig then
return
end
if not this.Maps then
this.Maps = {}
end
for i = 1 ,#this.Maps do
this.Maps[i].gameObject:SetActive(false)
end
for i = 1 ,#curGroupConfig.Map do
if not this.Maps[i] then
this.Maps[i] = newObjToParent(this.mapPre,this.map)
end
this.Maps[i]:GetComponent("Image").sprite = this.spLoader:LoadSprite(curGroupConfig.Map[i][1])
this.Maps[i]:GetComponent("Image"):SetNativeSize()
this.Maps[i].gameObject:SetActive(true)
local vecs = string.split(curGroupConfig.Map[i][2],',')
this.Maps[i]:GetComponent("RectTransform").localPosition = Vector3.New(tonumber(vecs[1]),tonumber(vecs[2]),tonumber(vecs[3]))
end
end
function StoryMapPanel:OnShow()
SoundManager.StopMusic()
if not curGroupConfig.TriggerEvent or #curGroupConfig.TriggerEvent < 1 then
return
end
this.triggerEvent = {}
--初始化触发事件
for i = 1,#curGroupConfig.TriggerEvent do
local event = {}
event.eventType = curGroupConfig.TriggerEvent[i][1]
event.groups = {}
for j = 2,#curGroupConfig.TriggerEvent[i] do
table.insert(event.groups,curGroupConfig.TriggerEvent[i][j])
end
table.insert(this.triggerEvent,event)
end
this.callList:Clear()
for i = #this.triggerEvent,1,-1 do
this.callList:Push(function()
this:CheckTrigger(this.triggerEvent[i])
end)
end
this:StackPop()
end
function this:StackPop()
if this.callList:Count() > 0 then
this.callList:Pop()()
else
sortingOrder = newSortingOrder
StoryMapManager.GetSingleStoryConfig()
end
end
local pos = {
[1] = Vector3.New(-130,0,0),
[2] = Vector3.New(0,0,0),
[3] = Vector3.New(130,0,0),
[4] = Vector3.New(-130,-144,0),
[6] = Vector3.New(130,-144,0),
[7] = Vector3.New(-130,-288,0),
[8] = Vector3.New(0,-288,0),
[9] = Vector3.New(130,-288,0),
}
function this:CheckTrigger(data,go)
if isSkip then
-- --LogGreen("data.eventType:"..tostring(data.eventType).." this.curEvent.eventType:"..tostring(this.curEvent.eventType))
-- if (data.eventType == this.curEvent.eventType) then--(data.eventType ~= 3 and data.eventType ~= 1 and data.eventType ~= 2 and data.eventType ~= 10) or (data.eventType == this.curEvent.eventType) then
-- this:CloseDiaLog()
-- this:StackPop()
-- return
-- end
-- if this.curEvent.eventType == 2 then
-- for k,v in pairs(this.PlayerGrouops) do
-- v:StopAction()
-- end
-- end
if data.eventType ~= 3 then
this:StackPop()
return
end
isSkip = false
-- MsgPanel.ShowTwo("是否跳过这段剧情?",function() end,function()
-- if this.callList:Count() > 0 then
-- this.callList:Clear()
-- end
-- StoryMapManager.GetSingleStoryConfig()
-- return
-- end,"取消","确认")
-- MsgPanel.ShowTwo("是否跳过整段剧情?",function() end,function()
-- this:ClosePanel()
-- end,"取消","确认")
end
this.go = go
this.curEvent = data
if data.eventType == 1 then -- 1 对话 2跑图 3假战斗
this.eventIndex = 0
this:ShowDialog()
elseif data.eventType == 2 then
this.eventIndex = 0
this:RunMap(data.eventType)
elseif data.eventType == 3 then
this.eventIndex = 0
--PopupTipPanel.ShowTip("进入一场假战斗")
this:EnterFight()
elseif data.eventType == 4 then --符咒闪烁了一下
this.eventIndex = 0
--PopupTipPanel.ShowTip("符咒闪烁了一下")
-- this:StackPop()
this.btnSkipBtnComp.enabled = false
if not this.UI_Effect_ChuFaEffect_04 then
this.UI_Effect_ChuFaEffect_04 = poolManager:LoadAsset("UI_Effect_ChuFaEffect_04", PoolManager.AssetType.GameObject)
this.UI_Effect_ChuFaEffect_04.name = "UI_Effect_ChuFaEffect_04"
this.UI_Effect_ChuFaEffect_04.transform:SetParent(this.effectRoot.transform)
this.UI_Effect_ChuFaEffect_04.transform.localPosition = Vector3.New(0,550,0)
this.UI_Effect_ChuFaEffect_04.transform.localScale = Vector3.one
end
this.UI_Effect_ChuFaEffect_04.gameObject:SetActive(true)
SoundManager.PlaySound(SoundConfig.STORY_VOICE_1_1)
Util.AddParticleSortLayer(this.UI_Effect_ChuFaEffect_04,newSortingOrder - sortingOrder)
Timer.New(function()
if this.UI_Effect_ChuFaEffect_04 then
this.UI_Effect_ChuFaEffect_04.gameObject:SetActive(false)
this.btnSkipBtnComp.enabled = true
this:StackPop()
end
end,data.groups[1],1,false):Start()
elseif data.eventType == 5 then --符咒闪烁后消失
this.eventIndex = 0
if this.Maps and this.Maps[2] then
this.Maps[2].gameObject:SetActive(false)
end
this:StackPop()
elseif data.eventType == 6 then --符咒消失,金箍棒砸在主角和怪物中间。
this.eventIndex = 0
this.btnSkipBtnComp.enabled = false
if not this.UI_Effect_ChuFaEffect_01 then
this.UI_Effect_ChuFaEffect_01 = poolManager:LoadAsset("UI_Effect_ChuFaEffect_01", PoolManager.AssetType.GameObject)
this.UI_Effect_ChuFaEffect_01.name = "UI_Effect_ChuFaEffect_01"
this.UI_Effect_ChuFaEffect_01.transform:SetParent(this.effectRoot.transform)
this.UI_Effect_ChuFaEffect_01.transform.localPosition = Vector3.zero
this.UI_Effect_ChuFaEffect_01.transform.localScale = Vector3.one
end
Util.AddParticleSortLayer(this.UI_Effect_ChuFaEffect_01,newSortingOrder - sortingOrder)
this.UI_Effect_ChuFaEffect_01.gameObject:SetActive(true)
SoundManager.PlayMusic(SoundConfig.BGM_STORY_1_2)
SoundManager.PlaySound(SoundConfig.STORY_VOICE_1_3)
Timer.New(function()
if this.UI_Effect_ChuFaEffect_01 then
this.UI_Effect_ChuFaEffect_01.gameObject:SetActive(false)
end
this.btnSkipBtnComp.enabled = true
end,data.groups[1],1,false):Start()
this:StackPop()
--PopupTipPanel.ShowTip("符咒消失,金箍棒砸在主角和怪物中间。")
-- this:StackPop()
elseif data.eventType == 7 then
this.eventIndex = 0
this.btnSkipBtnComp.enabled = false
--PopupTipPanel.ShowTip("随着光芒闪烁,一把从天而降的神剑插在了一只怪物面前。")
if not this.UI_Effect_ChuFaEffect_02 then
this.UI_Effect_ChuFaEffect_02 = poolManager:LoadAsset("UI_Effect_ChuFaEffect_02", PoolManager.AssetType.GameObject)
this.UI_Effect_ChuFaEffect_02.name = "UI_Effect_ChuFaEffect_02"
this.UI_Effect_ChuFaEffect_02.transform:SetParent(this.effectRoot.transform)
this.UI_Effect_ChuFaEffect_02.transform.localPosition = Vector3.New(-415,700,0)
this.UI_Effect_ChuFaEffect_02.transform.localScale = Vector3.one
end
if not this.UI_Effect_ChuFaEffect_05 then
this.UI_Effect_ChuFaEffect_05 = poolManager:LoadAsset("UI_Effect_ChuFaEffect_05", PoolManager.AssetType.GameObject)
this.UI_Effect_ChuFaEffect_05.name = "UI_Effect_ChuFaEffect_05"
this.UI_Effect_ChuFaEffect_05.transform:SetParent(this.effectRoot.transform)
this.UI_Effect_ChuFaEffect_05.transform.localPosition = pos[8]
this.UI_Effect_ChuFaEffect_05.transform.localScale = Vector3.one
end
this.UI_Effect_ChuFaEffect_05.gameObject:SetActive(false)
Util.AddParticleSortLayer(this.UI_Effect_ChuFaEffect_02,newSortingOrder - sortingOrder)
Util.AddParticleSortLayer(this.UI_Effect_ChuFaEffect_05,newSortingOrder - sortingOrder)
this.UI_Effect_ChuFaEffect_02.gameObject:SetActive(true)
SoundManager.PlaySound(SoundConfig.STORY_VOICE_2_1)
Timer.New(function()
if this.UI_Effect_ChuFaEffect_02 then
this.UI_Effect_ChuFaEffect_02.gameObject:SetActive(false)
end
if this.UI_Effect_ChuFaEffect_05 then
this.UI_Effect_ChuFaEffect_05.gameObject:SetActive(true)
SoundManager.PlayMusic(SoundConfig.bgm_story_2_2)
SoundManager.PlaySound(SoundConfig.STORY_VOICE_2_2)
end
end,data.groups[1],1,false):Start()
Timer.New(function()
if this.PlayerGrouops and this.PlayerGrouops[7] then
this.PlayerGrouops[7]:SetWalkDir(WALK_DIR.DEAD_BACK)
end
end,(data.groups[1] + 0.5),1,false):Start()
Timer.New(function()
if this.UI_Effect_ChuFaEffect_05 then
this.UI_Effect_ChuFaEffect_05.gameObject:SetActive(false)
end
this.btnSkipBtnComp.enabled = true
this:StackPop()
end,(data.groups[1] + 0.5 + 1),1,false):Start()
--this:StackPop()
elseif data.eventType == 8 then
this.eventIndex = 0
this.btnSkipBtnComp.enabled = false
--PopupTipPanel.ShowTip("数把飞剑在主角身边依次落下,将身边一圈的怪物都扎死在剑下。随后剑放出光芒,形成环绕主角的法阵。")
-- this:StackPop()
if not this.effectBrowList then
this.effectBrowList = {}
end
local tempList = {7,4,1,2,3,6,9}
for k,v in pairs(tempList) do
if not this.effectBrowList[v] then
this.effectBrowList[v] = poolManager:LoadAsset("UI_Effect_ChuFaEffect_05", PoolManager.AssetType.GameObject)
this.effectBrowList[v].name = "UI_Effect_ChuFaEffect_05"
this.effectBrowList[v].transform:SetParent(this.effectRoot.transform)
this.effectBrowList[v].transform.localPosition = pos[v]
this.effectBrowList[v].transform.localScale = Vector3.one
this.effectBrowList[v].gameObject:SetActive(false)
end
end
for k,v in pairs(this.effectBrowList) do
Util.AddParticleSortLayer(v,newSortingOrder - sortingOrder)
end
local indexTemp = 0
Timer.New(function()
indexTemp = indexTemp + 1
if this.effectBrowList[tempList[indexTemp]] then
this.effectBrowList[tempList[indexTemp]].gameObject:SetActive(true)
SoundManager.PlaySound(SoundConfig.STORY_VOICE_2_2)
end
local index = 0
if tempList[indexTemp] < 5 then
index = tempList[indexTemp]
else
index = tempList[indexTemp] - 1
end
--LogGreen("index:"..index.." this.PlayerGrouops[index]:"..tostring(this.PlayerGrouops[index]))
if this.PlayerGrouops and this.PlayerGrouops[index] then
if index > 0 and index < 4 then
this.PlayerGrouops[index]:SetWalkDir(WALK_DIR.DEAD_FRONT)
elseif index == 4 then
this.PlayerGrouops[index]:SetWalkDir(WALK_DIR.DEAD_LEFT)
elseif index == 5 then
this.PlayerGrouops[index]:SetWalkDir(WALK_DIR.DEAD_RIGHT)
elseif index > 5 and index < 9 then
this.PlayerGrouops[index]:SetWalkDir(WALK_DIR.DEAD_BACK)
end
end
end,data.groups[1],7,false):Start()
Timer.New(function()
for k,v in pairs(this.effectBrowList) do
v.gameObject:SetActive(false)
end
if not this.UI_Effect_ChuFaEffect_03 then
this.UI_Effect_ChuFaEffect_03 = poolManager:LoadAsset("UI_Effect_ChuFaEffect_03", PoolManager.AssetType.GameObject)
this.UI_Effect_ChuFaEffect_03.name = "UI_Effect_ChuFaEffect_03"
this.UI_Effect_ChuFaEffect_03.transform:SetParent(this.effectRoot.transform)
this.UI_Effect_ChuFaEffect_03.transform.localPosition = Vector3.New(0,-183,0)
this.UI_Effect_ChuFaEffect_03.transform.localScale = Vector3.one
end
Util.AddParticleSortLayer(this.UI_Effect_ChuFaEffect_03,newSortingOrder - sortingOrder)
this.UI_Effect_ChuFaEffect_03.gameObject:SetActive(true)
SoundManager.PlaySound(SoundConfig.STORY_VOICE_2_3)
Timer.New(function()
this.btnSkipBtnComp.enabled = true
this:StackPop()
end,1.3,1,false):Start()
end,data.groups[2],1,false):Start()
elseif data.eventType == 9 then --等待几秒
this.eventIndex = 0
this.btnSkipBtnComp.enabled = false
Timer.New(function()
this.btnSkipBtnComp.enabled = true
if UIManager.IsOpen(UIName.BattlePanel) then
return
end
this:StackPop()
end,data.groups[1],1,false):Start()
elseif data.eventType == 10 then --保持某方向移动
this.eventIndex = 0
this:RunMap(data.eventType)
elseif data.eventType == 11 then --设置全屏遮罩,显示高亮位置点击区域
this.eventIndex = 0
this.btnSkipBtnComp.enabled = false
this.mask.gameObject:SetActive(true)
if not this.UI_Effect_ChuFaEffect_06 then
this.UI_Effect_ChuFaEffect_06 = poolManager:LoadAsset("UI_Effect_ChuFaEffect_06", PoolManager.AssetType.GameObject)
this.UI_Effect_ChuFaEffect_06.name = "UI_Effect_ChuFaEffect_06"
this.UI_Effect_ChuFaEffect_06.transform:SetParent(this.effectRoot.transform)
this.UI_Effect_ChuFaEffect_06.transform.localPosition = Vector3.New(50,532.2,0)
this.UI_Effect_ChuFaEffect_06.transform.localScale = Vector3.one
end
if not this.UI_Effect_ChuFaEffect_04 then
this.UI_Effect_ChuFaEffect_04 = poolManager:LoadAsset("UI_Effect_ChuFaEffect_04", PoolManager.AssetType.GameObject)
this.UI_Effect_ChuFaEffect_04.name = "UI_Effect_ChuFaEffect_04"
this.UI_Effect_ChuFaEffect_04.transform:SetParent(this.effectRoot.transform)
this.UI_Effect_ChuFaEffect_04.transform.localPosition = Vector3.New(0,550,0)
this.UI_Effect_ChuFaEffect_04.transform.localScale = Vector3.one
end
Util.AddParticleSortLayer(this.UI_Effect_ChuFaEffect_04,newSortingOrder - sortingOrder)
Util.AddParticleSortLayer(this.UI_Effect_ChuFaEffect_06,newSortingOrder - sortingOrder)
this.UI_Effect_ChuFaEffect_06.gameObject:SetActive(true)
this.UI_Effect_ChuFaEffect_04.gameObject:SetActive(true)
if self.SoundTime1_2 then
self.SoundTime1_2:Stop()
self.SoundTime1_2 = nil
end
SoundManager.PlaySound(SoundConfig.STORY_VOICE_1_2)
self.SoundTime1_2 = Timer.New(function()
SoundManager.PlaySound(SoundConfig.STORY_VOICE_1_2)
end,1,-1,false)
self.SoundTime1_2:Start()
elseif data.eventType == 12 then --光芒四射的特效
--设置上一个特效为false
if this.UI_Effect_ChuFaEffect_06 then
this.UI_Effect_ChuFaEffect_06.gameObject:SetActive(false)
end
--加载光芒四射的特效
if not this.UI_Effect_ChuFaEffect_07 then
this.UI_Effect_ChuFaEffect_07 = poolManager:LoadAsset("UI_Effect_ChuFaEffect_07", PoolManager.AssetType.GameObject)
this.UI_Effect_ChuFaEffect_07.name = "UI_Effect_ChuFaEffect_07"
this.UI_Effect_ChuFaEffect_07.transform:SetParent(this.effectRoot.transform)
this.UI_Effect_ChuFaEffect_07.transform.localPosition = Vector3.New(0,532.2,0)
this.UI_Effect_ChuFaEffect_07.transform.localScale = Vector3.one
end
Util.AddParticleSortLayer(this.UI_Effect_ChuFaEffect_07,newSortingOrder - sortingOrder)
this.UI_Effect_ChuFaEffect_07.gameObject:SetActive(true)
this.eventIndex = 0
this.btnSkipBtnComp.enabled = false
Timer.New(function()
if this.UI_Effect_ChuFaEffect_04 then
this.UI_Effect_ChuFaEffect_04.gameObject:SetActive(false)
end
if this.UI_Effect_ChuFaEffect_07 then
this.UI_Effect_ChuFaEffect_07.gameObject:SetActive(false)
end
this.btnSkipBtnComp.enabled = true
this:StackPop()
end,data.groups[1],1,false):Start()
end
end
function this:EnterFight()
this.eventIndex = this.eventIndex + 1
local fdata, fseed = BattleManager.GetFakeBattleData(this.curEvent.groups[this.eventIndex])
local testFightData = {
fightData = fdata,
fightSeed = fseed,
fightType = 0,
maxRound = 20,
}
UIManager.OpenPanel(UIName.BattlePanel, testFightData, BATTLE_TYPE.Test,function()
this:StackPop()
end,nil,true)
end
function this:CloseDiaLog()
SoundManager.StopSoundByChannel(10)
this.showDiaLog = false
this.dialog.gameObject:SetActive(false)
this.GoOn.gameObject:SetActive(false)
this.showImg:SetActive(false)
this.ReSetLive2d()
end
function this:ShowDialog()
this.eventIndex = this.eventIndex + 1
if #this.curEvent.groups < this.eventIndex then
this:CloseDiaLog()
if this.go then
this.go:StackPop()
this.go = nil
else
this:StackPop()
end
else
local config = chapterEventPointData[this.curEvent.groups[this.eventIndex]]
if not config then
this:CloseDiaLog()
LogGreen("this.curEvent.groups[this.eventIndex]:"..this.curEvent.groups[this.eventIndex].." this.eventIndex:"..this.eventIndex)
if this.go then
this.go:StackPop()
this.go = nil
else
this:StackPop()
end
return
end
this.showImg:SetActive(false)
this.dialog.gameObject:SetActive(true)
this.GoOn.gameObject:SetActive(true)
local showValues = GetLanguageStrById(config.ShowValues)
local options = config.Option
local dir = config.ShowDir
local live2dRoot = dir == 2 and this.left2dRoot or this.right2dRoot
local setId = config.DialogueViewId
-- 角色信息
local contents = string.split(showValues, "|")
local resId = tonumber(contents[1])
local contexts =(contents[2])
contexts = string.gsub(contexts, Language[11248], NameManager.roleName)
contexts = string.gsub(contexts, "{ta}", NameManager.roleSex == ROLE_SEX.BOY and "" or "")
local voice = config.VoiceRes
if voice and IS_PLAY_VOICE then
-- 使用相同通道播放,避免跳过剧情导致音效重复
SoundManager.PlaySound(voice, nil, nil, 10)
end
--this.diaLogNameText.text = ""
ShowText(this.diaLogContent.transform, contexts, 1)
this.SetList2d(resId,setId,live2dRoot)
if not this.showDiaLog then
PlayUIAnim(this.gameObject)
this.showDiaLog = true
end
--this.diaLogContent.text = contexts
end
end
function this.SetList2d(resId,setId,live2dRoot)
-- 显示立绘
if resId > 0 and resId ~= 999 then
local data = artResConfig[resId]
this.diaLogName.gameObject:SetActive(true)
this.diaLogNameText.text = string.gsub(GetLanguageStrById(data.Desc), Language[11252], NameManager.roleName)
local roleSex = NameManager.roleSex
local resPath
if resId == 8001 then --- 主角专用字段
resPath = roleSex == ROLE_SEX.BOY and StoryManager.boyRes or StoryManager.bitchRes
else
resPath = artResConfig[resId].Name
end
if lastLive2DId ~= resId then
-- 需要加载立绘的时候清除所有
this.ReSetLive2d()
if setId and setId ~= 0 then
StoryManager.InitLive2dState(setId, resPath, live2dRoot, this.effectRoot, true, this)
else
this.LoadLive2D(data, resPath, live2dRoot)
end
else
if setId then
StoryManager.InitLive2dState(setId, resPath, live2dRoot, this.effectRoot, false, this)
end
end
elseif resId == 999 then -- 显示图片
this.showImg:SetActive(true)
this.ReSetLive2d()
this.diaLogName.gameObject:SetActive(false)
if setId then
StoryManager.InitImgState(setId, this.showImg, this.effectRoot, this)
end
else
this.showImg:SetActive(false)
this.ReSetLive2d()
this.diaLogName.gameObject:SetActive(false)
end
lastLive2DId = resId
end
-- 清除立绘
function this.ReSetLive2d()
Util.ClearChild(this.left2dRoot.transform)
Util.ClearChild(this.right2dRoot.transform)
end
function this:RunMap(indexType)
if this.startTimer then
this.startTimer:Stop()
this.startTimer = nil
end
local dua = 0
if isFirstEnter == 1 then
isFirstEnter = 0
dua = 0.1
else
dua = 0
end
this.startTimer = Timer.New(function ()
for k,v in pairs(this.PlayerGrouops) do
v:RunMap(indexType)
end
end,dua)
this.startTimer:Start()
if this.startTimer1 then
this.startTimer1:Stop()
this.startTimer1 = nil
end
local isEnterNext = true
this.startTimer1 = Timer.New(function()
isEnterNext = true
for k,v in pairs(this.PlayerGrouops) do
if v:CheckState() then
isEnterNext = false
break
end
end
if isEnterNext then
this.startTimer1:Stop()
this.startTimer1 = nil
this:StackPop()
end
end,0.01,-1,false)
Timer.New(function()
if this.startTimer1 then
this.startTimer1:Start()
end
end,0.2,1,false):Start()
end
function StoryMapPanel:OnSortingOrderChange()
newSortingOrder = self.sortingOrder
end
--界面关闭时调用(用于子类重写)
function StoryMapPanel:OnClose()
SoundManager.StopSoundByChannel(10)
isFirstEnter = 1
for k,v in pairs(this.PlayerGrouops) do
SubUIManager.Close(v)
end
this.PlayerGrouops = {}
if this.startTimer then
this.startTimer:Stop()
this.startTimer = nil
end
lastLive2DId = 0
this.showDiaLog = false
this.dialog.gameObject:SetActive(false)
this.GoOn.gameObject:SetActive(false)
this.showImg:SetActive(false)
this.ReSetLive2d()
this.callList:Clear()
isSkip = false
this.triggerEvent = {}
if this.startTimer then
this.startTimer:Stop()
this.startTimer = nil
end
if this.startTimer1 then
this.startTimer1:Stop()
this.startTimer1 = nil
end
this.map.transform.localPosition = Vector3.New(0,0,0)
if this.effectBrowList then
for k ,v in pairs(this.effectBrowList) do
v.gameObject:SetActive(false)
poolManager:UnLoadAsset(v.name, v, PoolManager.AssetType.GameObject)
end
this.effectBrowList = nil
end
if this.UI_Effect_ChuFaEffect_01 then
poolManager:UnLoadAsset("UI_Effect_ChuFaEffect_01", this.UI_Effect_ChuFaEffect_01, PoolManager.AssetType.GameObject)
this.UI_Effect_ChuFaEffect_01 = nil
end
if this.UI_Effect_ChuFaEffect_02 then
poolManager:UnLoadAsset("UI_Effect_ChuFaEffect_02", this.UI_Effect_ChuFaEffect_02, PoolManager.AssetType.GameObject)
this.UI_Effect_ChuFaEffect_02 = nil
end
if this.UI_Effect_ChuFaEffect_03 then
poolManager:UnLoadAsset("UI_Effect_ChuFaEffect_03", this.UI_Effect_ChuFaEffect_03, PoolManager.AssetType.GameObject)
this.UI_Effect_ChuFaEffect_03 = nil
end
if this.UI_Effect_ChuFaEffect_04 then
poolManager:UnLoadAsset("UI_Effect_ChuFaEffect_04", this.UI_Effect_ChuFaEffect_04, PoolManager.AssetType.GameObject)
this.UI_Effect_ChuFaEffect_04 = nil
end
if this.UI_Effect_ChuFaEffect_05 then
poolManager:UnLoadAsset("UI_Effect_ChuFaEffect_05", this.UI_Effect_ChuFaEffect_05, PoolManager.AssetType.GameObject)
this.UI_Effect_ChuFaEffect_05 = nil
end
if this.UI_Effect_ChuFaEffect_06 then
poolManager:UnLoadAsset("UI_Effect_ChuFaEffect_06", this.UI_Effect_ChuFaEffect_05, PoolManager.AssetType.GameObject)
this.UI_Effect_ChuFaEffect_06 = nil
end
if this.UI_Effect_ChuFaEffect_07 then
poolManager:UnLoadAsset("UI_Effect_ChuFaEffect_07", this.UI_Effect_ChuFaEffect_05, PoolManager.AssetType.GameObject)
this.UI_Effect_ChuFaEffect_07 = nil
end
if self.SoundTime1_2 then
self.SoundTime1_2:Stop()
self.SoundTime1_2 = nil
end
end
--界面销毁时调用(用于子类重写)
function StoryMapPanel:OnDestroy()
this.spLoader:Destroy()
for k,v in pairs(this.PlayerGrouops) do
SubUIManager.Close(v)
end
this.Maps = {}
this.PlayerGrouops = {}
if this.startTimer then
this.startTimer:Stop()
this.startTimer = nil
end
end
return this