using FairyGUI.Utils;

namespace FairyGUI
{
    public class PlayTransitionAction : ControllerAction
    {
        public string transitionName;
        public int playTimes;
        public float delay;
        public bool stopOnExit;

        private Transition _currentTransition;

        public PlayTransitionAction()
        {
            playTimes = 1;
            delay = 0;
        }

        override protected void Enter(Controller controller)
        {
            Transition trans = controller.parent.GetTransition(transitionName);
            if (trans != null)
            {
                if (_currentTransition != null && _currentTransition.playing)
                    trans.ChangePlayTimes(playTimes);
                else
                    trans.Play(playTimes, delay, null);
                _currentTransition = trans;
            }
        }

        override protected void Leave(Controller controller)
        {
            if (stopOnExit && _currentTransition != null)
            {
                _currentTransition.Stop();
                _currentTransition = null;
            }
        }

        override public void Setup(ByteBuffer buffer)
        {
            base.Setup(buffer);

            transitionName = buffer.ReadS();
            playTimes = buffer.ReadInt();
            delay = buffer.ReadFloat();
            stopOnExit = buffer.ReadBool();
        }
    }
}
