using cfg; using System.Collections; using System.Collections.Generic; using System.Data; using UnityEngine; namespace game { public class ToolShovel : OperatingToolsBase { [Tooltip("动画")] [SerializeField] private Animation m_Animation = null; [Tooltip("循环动画")] [SerializeField] private string m_LoopAnimation = null; [Tooltip("最后一击动画")] [SerializeField] private string m_FinalBlowAnimation = null; [Tooltip("循环动画声音节点")] [SerializeField] private GameObject m_LoopAnimationNode = null; [Tooltip("最后一击动画声音节点")] [SerializeField] private GameObject m_FinalBlowAnimationNode = null; #region 行为相关 public override void Enter1stStage() { base.Enter1stStage(); if (m_Animation != null) { m_Animation.Play(m_LoopAnimation); } if (m_LoopAnimationNode != null && m_LoopAnimationNode.activeSelf == false) { m_LoopAnimationNode.SetActive(true); } } public override void Exit1stStage() { base.Exit1stStage(); if (m_Animation != null) { m_Animation.Stop(m_LoopAnimation); m_Animation.transform.localPosition = Vector3.zero; m_Animation.transform.localEulerAngles = Vector3.zero; } if (m_LoopAnimationNode != null && m_LoopAnimationNode.activeSelf == true) { m_LoopAnimationNode.SetActive(false); } } public override void Enter2ndStage() { base.Enter2ndStage(); if (m_Animation != null) { m_Animation.Play(m_FinalBlowAnimation); } if (m_FinalBlowAnimationNode != null && m_FinalBlowAnimationNode.activeSelf == false) { m_FinalBlowAnimationNode.SetActive(true); } } public override void Exit2ndStage() { base.Exit2ndStage(); if (m_Animation != null) { m_Animation.transform.localPosition = Vector3.zero; m_Animation.transform.localEulerAngles = Vector3.zero; } if (m_FinalBlowAnimationNode != null && m_FinalBlowAnimationNode.activeSelf == true) { m_FinalBlowAnimationNode.SetActive(false); } } private void StopAllAnimation() { if (m_Animation != null) { m_Animation.Stop(); m_Animation.transform.localPosition = Vector3.zero; m_Animation.transform.localEulerAngles = Vector3.zero; } if (m_LoopAnimationNode != null && m_LoopAnimationNode.activeSelf == true) { m_LoopAnimationNode.SetActive(false); } if (m_FinalBlowAnimationNode != null && m_FinalBlowAnimationNode.activeSelf == true) { m_FinalBlowAnimationNode.SetActive(false); } } public override void StopExecuting() { base.StopExecuting(); StopAllAnimation(); } #endregion #region 生命周期 public override void InitTool() { base.InitTool(); m_Type = EventWashingTool.Shovel; m_PrepareCumulativeTime = 0f; StopAllAnimation(); } #endregion } }