public MainTrackController(AppContext context) : base(context) { context.MainTrackController = this; _transition = null; _transitionStarted = false; Context.AddEventOnTick(TickHandler); }
/// <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); } }
/// <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); }
/// <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); }
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); }
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)); }
/// <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(); } }
/// <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); } }
/// <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); } }
public void StartWipe(AbstractTransition transition) { this.StartWipe(transition, Service.Get <IDataController>().Get <PlanetVO>("planet1")); }
private void CancelTransition() { _transition.CancelTransition(); _transition = null; _transitionStarted = false; }
/// <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; }