Skip to main content

KeyBindingsScreen

Struct KeyBindingsScreen 

Source
pub struct KeyBindingsScreen<G: GameData> { /* private fields */ }
Expand description

The Key bindings screen for one layout and the controller. Cancel saves and closes it, unless a required action has no key or no button.

Implementations§

Source§

impl<G: GameData> KeyBindingsScreen<G>

Source

pub const NAME: &'static str = "key_bindings"

Name reported by Screen::name.

Source

pub fn new(ctx: &Ctx<G>, rows: &'static [KeyRow<G::Action>]) -> Self

The screen listing rows, for the layout in use (the keymap file’s first if none is chosen yet), focused on the first action’s first slot, showing the side the player pressed last: the controller’s buttons after a button press, else the keys. With no keyboard (Keyboard::Absent) it shows the controller’s alone.

Source

pub fn painted_by(self, paint: Paint<G>) -> Self

The same screen with its view painted by paint instead of glyph::paint: a game’s look for a device of its own.

Source

pub fn is_controller_only(&self) -> bool

Whether only the controller side is shown: the platform has no keyboard, so there is no switch.

Source

pub fn with_bindings(self, bindings: LayoutBindings<G::Action>) -> Self

The same screen editing bindings instead of the saved ones.

Source

pub fn bindings(&self) -> &LayoutBindings<G::Action>

The edited keys (saved when the screen closes).

Source

pub fn pad_bindings(&self) -> &PadBindings<G::Action>

The edited controller buttons (saved when the screen closes).

Source

pub fn side(&self) -> Side

Which bindings are shown.

Source

pub fn focus(&self) -> Option<(G::Action, usize)>

The focused action and slot; None on Restore defaults and on the keyboard / controller switch.

Source

pub fn is_on_switch(&self) -> bool

Whether the focus is on the keyboard / controller switch.

Source

pub fn is_capturing(&self) -> bool

Whether the focused slot is waiting for a key or button.

Source

pub fn choice(&self) -> Option<usize>

The focused line of CHOICES, while they are open.

Source

pub fn is_asking_restore(&self) -> bool

Whether the screen is asking before it restores the defaults.

Source

pub fn restore_question(&self, ctx: &Ctx<G>) -> String

The question asked before restoring the shown side’s defaults.

Source

pub fn message(&self) -> Option<&str>

The message under the panel, if any.

Source

pub fn help(&self, ctx: &Ctx<G>) -> String

The bottom help line, naming the keys the screen was opened with (or their buttons, on a controller): the same as ctx’s until the screen closes.

Source

pub fn view(&self, ctx: &Ctx<G>) -> KeyBindingsView<G::Action>

The screen as it is now, as plain data for a skin to paint (glyph::paint): the switch, the slot columns, every action with what its slots hold, the restore row, the message, the question or the choices open, and the help line, all in the player’s language and naming their keys.

Trait Implementations§

Source§

impl<G: GameData> Clone for KeyBindingsScreen<G>

Source§

fn clone(&self) -> Self

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<G: GameData> Debug for KeyBindingsScreen<G>

Source§

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

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

impl<G: GameData> Screen<G> for KeyBindingsScreen<G>

Source§

fn actions(&self) -> Option<Vec<G::Action>>

Its rows and slots, and its questions; the keys and buttons it captures are not actions.

Source§

fn name(&self) -> &'static str

A stable, unique snake_case name, for tests and debugging.
Source§

fn update( &mut self, ctx: &mut Ctx<G>, input: &FrameInput<G::Action>, ) -> Transition<G>

Handles one frame: input holds this frame’s actions (often none) and elapsed time. Called only while this screen is on top.
Source§

fn draw(&self, ctx: &Ctx<G>, buf: &mut GlyphBuffer)

Paints the screen. An opaque screen must cover the whole buffer.
Source§

fn as_any(&self) -> Option<&dyn Any>

This screen as Any, for tests that look inside a screen on the stack (ScreenStack::find). None unless the screen opts in.
Source§

fn debug_draw(&self, ctx: &Ctx<G>, out: &mut Gizmos)

Hands in what the debug view shows of this screen (ADR-0085): its gizmos, each in its channel, in console pixels, built from self and ctx alone, so looking changes nothing. A channel’s helper (the grid kit’s layout_gizmos) does the work. Called after draw on every screen drawn, bottom up, only while debug tools are on (Ctx::debug_tools). Does nothing unless the screen has something to show.
Source§

fn is_overlay(&self) -> bool

Whether the screen below shows through (drawn first, then this one).
Source§

fn state_hash(&self) -> Option<StateHash>

The hash of the game’s state this screen holds, which goes in each frame’s hash in a session record (Game::state_hash), most simply shuyi_core::state_hash(&self.rules).ok(): so a playback that plays differently is found at the frame the state moved. None unless the screen opts in.
Source§

fn as_any_mut(&mut self) -> Option<&mut dyn Any>

Source§

fn covered(&mut self, _ctx: &mut Ctx<G>)

Called when a screen is pushed on top of this one (Transition::Push): it is no longer updated until it is uncovered. Not called when the screen above swaps itself for another (Transition::Replace). Does nothing unless the screen needs it.
Source§

fn uncovered( &mut self, ctx: &mut Ctx<G>, result: Option<ScreenResult>, ) -> Transition<G>

Called when the screen above pops and this one is on top again: result is what it popped with (Transition::PopWith), None after a plain Transition::Pop. The transition returned is applied at once, as if from update, so a screen can act on the answer in the same frame: push the next screen, or pop with an answer of its own. By default, nothing happens. Read more

Auto Trait Implementations§

§

impl<G> Freeze for KeyBindingsScreen<G>
where <G as GameData>::Action: Freeze,

§

impl<G> RefUnwindSafe for KeyBindingsScreen<G>
where <G as GameData>::Action: RefUnwindSafe,

§

impl<G> Send for KeyBindingsScreen<G>
where <G as GameData>::Action: Send + Sync,

§

impl<G> Sync for KeyBindingsScreen<G>
where <G as GameData>::Action: Sync,

§

impl<G> Unpin for KeyBindingsScreen<G>
where <G as GameData>::Action: Unpin,

§

impl<G> UnsafeUnpin for KeyBindingsScreen<G>
where <G as GameData>::Action: UnsafeUnpin,

§

impl<G> UnwindSafe for KeyBindingsScreen<G>

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.