public MainTrackController(AppContext context) : base(context)
 {
     context.MainTrackController = this;
     _transition        = null;
     _transitionStarted = false;
     Context.AddEventOnTick(TickHandler);
 }
Exemple #2
0
        /// <summary>
        ///     Removes one <see cref="Scene" /> from the <see cref="SceneStack" />
        /// </summary>
        private static void RemoveScene(AbstractTransition transition = null)
        {
            //Game.ResetFrameCounter();

            if (transition == null)
            {
                var sm = GetInstance();

                var c = sm.SceneStack.Count;

                if (c <= 0)
                {
                    return;
                }

                sm.SceneStack.Last().UnloadContent();
                sm.SceneStack.Last().ResetScene();
                sm.SceneStack.RemoveAt(c - 1);
            }
            else
            {
                transition.SetLambda(() => RemoveScene());
                AddTransition(transition);
            }
        }
Exemple #3
0
        /// <summary>
        /// 加载新面板,都带
        /// </summary>
        /// <param name="panelName"></param>
        /// <param name="transition"></param>
        /// <param name="abstractScreenEffect"></param>
        public static void PushPanel(string panelName, AbstractTransition transition,
                                     AbstractScreenEffect abstractScreenEffect)
        {
            var panel = AbstractPanel.GetPanel(panelName);

            transition.onBegin += abstractScreenEffect.OnBegin;
            transition.PushPanel(panel);
            panelStack.Push(panel);
        }
Exemple #4
0
        /// <summary>
        /// 加载新面板,带动画
        /// </summary>
        /// <param name="panelName"></param>
        /// <param name="transition"></param>
        public static void PushPanel(string panelName, AbstractTransition transition)
        {
            var panel = AbstractPanel.GetPanel(panelName);

            transition.PushPanel(panel);
            panelStack.Push(panel);

//            Debug.Log("入栈:" + panelStack.Count + " name:" + panelName);
        }
Exemple #5
0
 public void StartWipe(AbstractTransition transition, PlanetVO planetVO)
 {
     if (this.currentTransition != null && this.currentTransition.IsTransitioning())
     {
         Service.Get <StaRTSLogger>().Error("Transition in progress, unable to start another wipe.");
         return;
     }
     this.currentTransition = transition;
     this.currentTransition.StartWipe(planetVO);
 }
Exemple #6
0
 public void StartTransition(AbstractTransition transition)
 {
     if (this.currentTransition != null && this.currentTransition.IsTransitioning())
     {
         Service.Get <StaRTSLogger>().Error("Transition in progress, unable to set another transition.");
         return;
     }
     this.currentTransition = transition;
     this.currentTransition.StartTransition();
 }
        private void StartTransition(MusicItem item)
        {
            AudioMaterial nextTrack = null;

            if (item != null)
            {
                nextTrack = new AudioMaterial(item);
                nextTrack.MasterVolume = Context.MasterVolume;
            }
            _transition = new LinearTransition(nextTrack, Context.MainTrack);
            _transition.StartTransition((int)Math.Min(Context.TransitionDuration, Context.MainTrack.TimeRemaining.TotalSeconds));
        }
Exemple #8
0
        /// <summary>
        ///     TODO
        /// </summary>
        /// <param name="transition"></param>
        private static void AddTransition(AbstractTransition transition)
        {
            if (transition == null)
            {
                return;
            }

            transition.LoadContent();

            if (GetInstance().CurrentTransition?.GetType() != transition.GetType())
            {
                GetInstance().CurrentTransition = transition;
            }
        }
 private void TickHandler(object sender, ElapsedEventArgs elapsedEventArgs)
 {
     if (_transition != null)
     {
         _transition.DoStep();
         if (_transition.Finished)
         {
             Context.MainTrack = _transition.TrackToPlay;
             RaiseTrackChangedEvent(new TrackChangedEventArgs(Context.MainTrack.Item));
             _transition        = null;
             _transitionStarted = false;
         }
     }
     else if (!_transitionStarted && Context.MainTrack != null && Context.MainTrack.TimeRemaining.TotalSeconds <= Context.TransitionDuration)
     {
         Next();
     }
 }
Exemple #10
0
        /// <summary>
        ///     Adds a <see cref="Scene" /> to the <see cref="SceneStack" />
        /// </summary>
        /// <param name="scene"><see cref="Scene" /> that's added to the <see cref="SceneStack" /></param>
        /// <param name="transition"></param>
        public static void AddScene(Scene scene, AbstractTransition transition = null)
        {
            //Game.ResetFrameCounter();

            if (transition == null)
            {
                var sm = GetInstance();

                sm.SceneStack.Add(scene);
                sm.CurrentScene.ResetScene();
                sm.CurrentScene.LoadContent();
            }
            else
            {
                transition.SetLambda(() => AddScene(scene));
                AddTransition(transition);
            }
        }
Exemple #11
0
        /// <summary>
        ///     Adds a <see cref="Scene" /> to the <see cref="SceneStack" /> by <paramref name="key" />
        /// </summary>
        /// <param name="key"></param>
        /// <param name="transition"></param>
        public static void AddScene(string key, AbstractTransition transition = null)
        {
            if (key == GetCurrentScene().SceneKey)
            {
                return;
            }

            //Game.ResetFrameCounter();

            if (transition == null)
            {
                var sm = GetInstance();

                sm.SceneStack.Add(sm.SceneDictionary[key]);
                sm.CurrentScene.ResetScene();
                sm.CurrentScene.LoadContent();
            }
            else
            {
                transition.SetLambda(() => AddScene(key));
                AddTransition(transition);
            }
        }
Exemple #12
0
 public void StartWipe(AbstractTransition transition)
 {
     this.StartWipe(transition, Service.Get <IDataController>().Get <PlanetVO>("planet1"));
 }
 private void CancelTransition()
 {
     _transition.CancelTransition();
     _transition        = null;
     _transitionStarted = false;
 }
Exemple #14
0
 /// <summary>
 ///     Closes <paramref name="amount" /> <see cref="Scene" /> from <see cref="SceneStack" />
 /// </summary>
 /// <param name="amount">Amount of scenes to be closed</param>
 public static void CloseScene(AbstractTransition transition = null, int amount = 1)
 {
     //RemoveScene(transition);
     AddTransition(transition);
     ClosingScene += amount;
 }