using V3.Input;
namespace V3.Screens
{
///
/// A screen that can be handled by a screen manager and that provides
/// information on how to deal with other screens below this one.
///
public interface IScreen : IDrawable, IUpdateable
{
///
/// Indicates whether screens below this one should be updated.
///
bool UpdateLower { get; }
///
/// Indicates whether screens below this one should be drawn.
///
bool DrawLower { get; }
///
/// Handles the given key event and returns whether it should be passed
/// to the screens below this one.
///
/// the key event that occurred
/// true if the event has been handeled by this screen and
/// should not be passed to the lower screens, false otherwise
bool HandleKeyEvent(IKeyEvent keyEvent);
///
/// Handles the given mouse event and returns whether it should be passed
/// to the screens below this one.
///
/// the mouse event that occurred
/// true if the event has been handeled by this screen and
/// should not be passed to the lower screens, false otherwise
bool HandleMouseEvent(IMouseEvent mouseEvent);
}
}