[−][src]Trait coffee::ui::UserInterface
The user interface of your game.
Implementors of this trait must also implement Game
and should hold all
the state of the user interface.
Be sure to read the introduction of the ui
module first! It will help
you understand the purpose of this trait.
Associated Types
type Message
The type of messages handled by the user interface.
Messages are produced by user interactions. The runtime feeds these
messages to the react
method, which updates the state of the game
depending on the user interaction.
The Message
type should normally be an enumeration of different
user interactions. For example:
enum Message { ButtonPressed, CheckboxToggled(bool), SliderChanged(f32), // ... }
type Renderer: Renderer
The renderer used to draw the user interface.
If you just want to use the built-in widgets in Coffee, you should
use the built-in Renderer
type here.
If you want to write your own renderer, you will need to implement the
core::Renderer
trait.
Required methods
fn react(&mut self, message: Self::Message)
Reacts to a Message
, updating game state as needed.
This method is analogous to Game::interact
, but it processes a
Message
instead of Game::Input
.
The logic of your user interface should live here.
fn layout(&mut self, window: &Window) -> Element<Self::Message, Self::Renderer>
Produces the layout of the user interface.
It returns an Element
containing the different widgets that comprise
the user interface.
This method is called on every frame. The produced layout is rendered and used by the runtime to allow user interaction.
Provided methods
fn configuration() -> <Self::Renderer as Renderer>::Configuration
Builds the renderer configuration for the user interface.
By default, it returns Default::default()
.
fn run(window_settings: WindowSettings) -> Result<()> where
Self: 'static + Sized,
Self: 'static + Sized,
Runs the Game
with a user interface.
Call this method instead of Game::run
once you have implemented the
UserInterface
.