all_is_cubes_ui/
lib.rs

1//! User interface framework and screens for [`all_is_cubes`].
2//!
3//! This crate does not provide any platform bindings, but contains components for
4//! the platform-independent components of the complete interactive game application.
5//! If you create a [`Session`], it will manage the [`Universe`], the [UI](crate::vui),
6//! and user input; you need to provide:
7//!
8//! * A renderer of [`Space`]s (both the game world and the UI); possibly using
9//!   [`all-is-cubes-gpu`](https://docs.rs/all-is-cubes-gpu),
10//!   [the software raytracer](all_is_cubes_render::raytracer), or your own code.
11//! * Delivery of input events to [`Session::input_processor`].
12//! * Various hooks into IO and windowing functionality.
13//!
14//! TODO: Modules of this crate need a review of their organization.
15//!
16//! [`Session`]: crate::apps::Session
17//! [`Session::input_processor`]: crate::apps::Session::input_processor
18//! [`Space`]: all_is_cubes::space::Space
19//! [`Universe`]: all_is_cubes::universe::Universe
20
21#![no_std]
22// Crate-specific lint settings. (General settings can be found in the workspace manifest.)
23#![forbid(unsafe_code)]
24
25extern crate alloc;
26
27#[cfg(any(test, feature = "session"))]
28#[macro_use]
29extern crate std;
30
31#[cfg(feature = "session")]
32mod editor;
33#[cfg(feature = "session")]
34mod inv_watch;
35
36#[cfg(feature = "session")]
37pub mod apps;
38
39pub mod logo;
40
41#[cfg(feature = "session")]
42mod ui_content;
43#[cfg(feature = "session")]
44pub use ui_content::notification;
45
46pub mod vui;