using Microsoft.Xna.Framework; using Microsoft.Xna.Framework.Graphics; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace RhythmBullet.Utilities.ScreenSystem { public interface ITransition { /// /// Called once when the transition is needed. /// The dimensions of the screen. /// void InitiateTransition(Rectangle dimensions); /// /// Called every frame if the state of the screen this transition is placed upon is in the enter transition phase. /// /// The time passed in seconds since the last frame. /// Whether or not if all assets have been loaded by the . /// The frame being rendered by the screen as it exits. This can be null. /// If this returns true, then it is considered that this transition is complete. bool EnteringTransition(double delta, bool assetsLoaded); /// /// Called every frame if the state of the screen this transition is placed upon is in the exit phase. /// /// The time passed in seconds since the last frame. /// Whether or not if all assets have been loaded by the . /// If this returns true, then it is considered that this transition is complete. bool ExitingTransition(double delta, bool assetsLoaded); /// /// Called once every frame while transition is active. Meant to draw transition. /// /// void DrawTransition(SpriteBatch spriteBatch); /// /// Updates if the previous screen uses a render target for exit transition. /// /// The frame of the previous screen. void UpdatePreviousScreenFrame(RenderTarget2D previousScreenFrame); } }