miduo_client/Assets/ManagedResources/~Lua/Modules/Fight/FightLevelSwitchPopup.lua

156 lines
4.9 KiB
Lua
Raw Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

require("Base/BasePanel")
FightLevelSwitchPopup = Inherit(BasePanel)
local this = FightLevelSwitchPopup
local fightAnimRes = "live2d_guaji_yuguai"
local fightLevelConfig = ConfigManager.GetConfig(ConfigName.MainLevelConfig)
local fightSkeleton
local count = 1
local isAnimActive = false
local chooseAnim = 0
local fightAnim = {
[2] = "diban",
[3] = "xiaoguai",
[4] = "bnoss",
[1] = "idle",
}
--初始化组件(用于子类重写)
function FightLevelSwitchPopup:InitComponent()
this.spLoader = SpriteLoader.New()
isAnimActive = false
this.switchPanel = Util.GetGameObject(self.gameObject, "SwitchAnim")
this.fightInfoRoot = Util.GetGameObject(self.gameObject, "Image")
this.fightText = Util.GetGameObject(this.fightInfoRoot, "info"):GetComponent("Text")
this.animGo = poolManager:LoadLive(fightAnimRes, this.switchPanel.transform, Vector3.one, Vector3.one)
fightSkeleton = this.animGo:GetComponent("SkeletonGraphic")
local idle = function()
if not isAnimActive then return end
if count == 2 then
else
fightSkeleton.AnimationState:SetAnimation(0, fightAnim[chooseAnim], false)
count = count + 1
this.animTimer = nil
this.animTimer = Timer.New(function ()
isAnimActive = false
count = 1
fightSkeleton.AnimationState:SetAnimation(0, fightAnim[1], false)
this.SetAnimPanelState(false)
UIManager.OpenPanel(UIName.FormationPanelV2, FORMATION_TYPE.STORY, FightPointPassManager.curOpenFight)
--- Spine动画在播放过程中所依赖的物体被隐藏此时动画机会中断再次激活时会先继续播放上次的动画
--- 然后再执行当前设置的动画idle动画0.33秒放完
self:InitAnimation()
end, 1)
this.animTimer:Start()
-- 第一个动画播放完毕之后
local isBoss = FightPointPassManager.IsFightBoss()
this.PlayInfoAnim(false, isBoss)
local sound = isBoss and SoundConfig.Sound_FightArea_Boss or SoundConfig.Sound_FightArea_Monster
SoundManager.PlaySound(sound, AUDIO_FADE_TYPE.FADE_OUT_NOT_IN, AUDIO_RUN_TYPE.CONC, nil, 20)
end
end
fightSkeleton.AnimationState.Complete = fightSkeleton.AnimationState.Complete + idle
poolManager:SetLiveClearCall(fightAnimRes, this.animGo, function()
fightSkeleton.AnimationState.Complete = fightSkeleton.AnimationState.Complete - idle
end)
end
function this.SetAnimPanelState(isShow)
local offset = isShow and 0 or 2000
this.switchPanel.transform.localPosition = Vector3.New(offset, 0, 0 )
end
--绑定事件(用于子类重写)
function FightLevelSwitchPopup:BindEvent()
end
--添加事件监听(用于子类重写)
function FightLevelSwitchPopup:AddListener()
end
--移除事件监听(用于子类重写)
function FightLevelSwitchPopup:RemoveListener()
end
function FightLevelSwitchPopup:OnOpen(playAni)
if playAni then
this.PlayInfoAnim(true, false)
count = 1
local curName = GetLanguageStrById(fightLevelConfig[FightPointPassManager.curOpenFight].Name)
this.fightText.text = curName
this.switchPanel:SetActive(true)
this.SetAnimPanelState(true)
fightSkeleton.AnimationState:SetAnimation(0, fightAnim[2], false)
isAnimActive = true
local isBoss = FightPointPassManager.IsFightBoss()
chooseAnim = isBoss and 4 or 3
end
end
-- 小怪 258 boss 570
-- 播放那个动画
function this.PlayInfoAnim(isInit, isBoss)
if isInit then
this.fightInfoRoot.transform.localPosition = Vector3.New(0, -187, 0)
this.fightInfoRoot:SetActive(false)
else
this.fightInfoRoot:SetActive(true)
local targetPos = Vector3.zero
targetPos = isBoss and Vector3.New(0, 570, 0) or Vector3.New(0, 288, 0)
this.fightInfoRoot:GetComponent("RectTransform"):DOAnchorPos(targetPos, 0.3, false):OnComplete(function ()
end)
this.fightInfoRoot:GetComponent("Image"):DOFade(1, 0.3):OnComplete(function ()
end)
end
end
function this:InitAnimation()
UIManager.OpenPanel(UIName.FightLevelSwitchPopup, false)
Timer.New(function()
UIManager.ClosePanel(UIName.FightLevelSwitchPopup)
end, 0.33):Start()
end
--界面打开时调用(用于子类重写)
function FightLevelSwitchPopup:OnShow(...)
end
function FightLevelSwitchPopup:OnSortingOrderChange()
end
--界面关闭时调用(用于子类重写)
function FightLevelSwitchPopup:OnClose()
this.PlayInfoAnim(true, false)
end
--界面销毁时调用(用于子类重写)
function FightLevelSwitchPopup:OnDestroy()
this.spLoader:Destroy()
poolManager:UnLoadLive(fightAnimRes, this.animGo, PoolManager.AssetType.GameObject)
end
return FightLevelSwitchPopup