732 lines
30 KiB
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 |