Skip to main content

Menu

Struct Menu 

Source
pub struct Menu<T = ()> { /* private fields */ }
Expand description

A vertical list of items in a single-line box. CursorDown/CursorUp move the focus (wrapping, skipping disabled items), Confirm chooses the focused item, Cancel cancels (unless the menu is without_cancel). A menu showing fewer rows than it has scrolls.

Implementations§

Source§

impl<T> Menu<T>

Source

pub const ACTIONS: &'static [UiAction]

What a menu reacts to (handle), for the screen that shows it to declare (Screen::actions).

Source

pub fn new(items: Vec<MenuItem<T>>) -> Self

A menu focused on its first enabled item (or the first item, if none is enabled).

Source

pub fn without_cancel(self) -> Self

The same menu where Cancel does nothing (and so plays nothing): for menus with nothing to back out of.

Source

pub fn browsing_disabled(self) -> Self

The same menu where the focus also stops on disabled items, so the player can read what they do. Confirm on one still chooses nothing.

Source

pub fn showing(self, rows: usize, scroll: Scroll) -> Self

The same menu showing at most rows rows: a longer one scrolls, its window following the focus by scroll.

Source

pub fn focused(self, index: usize) -> Self

The same menu focused on item index, if it exists and the focus may stop on it (it is enabled, or the menu is browsing_disabled).

Source

pub fn items(&self) -> &[MenuItem<T>]

The items, in order.

Source

pub fn value(&self, index: usize) -> Option<&T>

The value item index stands for, if it exists.

Source

pub fn focus(&self) -> usize

Index of the focused item.

Source

pub fn handle<A: ActionSet>(&mut self, action: A) -> Option<MenuEvent<T>>
where T: Clone,

Handles one action, by what the game takes it for. Returns an event for UiAction::Confirm on an enabled item (with a copy of its value) and for UiAction::Cancel; moves the focus for UiAction::Down and UiAction::Up; ignores everything else.

Source

pub fn handle_with_sound<A: ActionSet, V>( &mut self, action: A, audio: &mut AudioQueue<V>, ) -> Option<MenuEvent<T>>
where T: Clone,

handle, playing the MenuSounds on audio: Move when the focus moves, Select when an item is chosen, Cancel when cancelled, Denied for Confirm on a disabled item. Any other action that does nothing (a move with nowhere to go) plays nothing.

Source

pub fn view(&self) -> MenuView

What the menu shows: every item, which one has the focus, and the window of them the box shows.

Trait Implementations§

Source§

impl<T: Clone> Clone for Menu<T>

Source§

fn clone(&self) -> Menu<T>

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl<T: Debug> Debug for Menu<T>

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl<T: Eq> Eq for Menu<T>

Source§

impl<T: PartialEq> PartialEq for Menu<T>

Source§

fn eq(&self, other: &Menu<T>) -> bool

Equality operator ==. Read more
1.0.0 (const: unstable) · Source§

fn ne(&self, other: &Rhs) -> bool

Inequality operator !=. Read more
Source§

impl<T: PartialEq> StructuralPartialEq for Menu<T>

Auto Trait Implementations§

§

impl<T> Freeze for Menu<T>

§

impl<T> RefUnwindSafe for Menu<T>
where T: RefUnwindSafe,

§

impl<T> Send for Menu<T>
where T: Send,

§

impl<T> Sync for Menu<T>
where T: Sync,

§

impl<T> Unpin for Menu<T>
where T: Unpin,

§

impl<T> UnsafeUnpin for Menu<T>

§

impl<T> UnwindSafe for Menu<T>
where T: UnwindSafe,

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> DynClone for T
where T: Clone,

Source§

fn __clone_box(&self, _: Private) -> *mut ()

Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.