aboutsummaryrefslogtreecommitdiff
path: root/V3/Screens/IScreenManager.cs
blob: e61c49c83be8ae5559147f56995e1a02d24a9606 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
namespace V3.Screens
{
    /// <summary>
    /// Handles screens using a screen stack.  You can add screens to the
    /// foreground using the AddScreen method, remove screens from the
    /// foreground using the RemoveScreen method and remove all screens using
    /// the Clear method.  The top screen is always drawn and updated, and
    /// it can decide whether lower screens should be drawn and/or updated
    /// too.  The screens are updated from top to bottom, and drawn from
    /// bottom to top.
    /// </summary>
    public interface IScreenManager : IDrawable, IUpdateable
    {
        /// <summary>
        /// Adds a screen to the foreground.
        /// </summary>
        /// <param name="screen">the screen to add in the foreground</param>
        void AddScreen(IScreen screen);

        /// <summary>
        /// Removes the given screen if it is on the top of the screen stack.
        /// </summary>
        /// <param name="screen">the screen to remove</param>
        /// <returns>true if the screen was on top and has been removed,
        /// false otherwise</returns>
        void RemoveScreen(IScreen screen);

        /// <summary>
        /// Clears the screen stack.
        /// </summary>
        void Clear();

        GameScreen GetGameScreen();
    }
}