Skip to main content

OptionsScreen

Struct OptionsScreen 

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

The options screen. Cancel closes it, asking first if anything changed.

Implementations§

Source§

impl<G: GameData> OptionsScreen<G>

Source

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

Name reported by Screen::name.

Source

pub fn new(rows: Rows<G>) -> Self

The screen of rows, its first row focused.

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 focused_on(self, key: &'static str) -> Self

The same screen focused on the row key (on the first row while that one isn’t shown).

Source

pub fn rows(&self, ctx: &Ctx<G>) -> Vec<OptionRow<G>>

The rows ctx shows, top to bottom: the game’s, less the Fullscreen row (OptionRow::fullscreen’s key) where the game isn’t in a window (PlatformFacts::windowed): a device that is always full screen.

Source

pub fn focus(&self, ctx: &Ctx<G>) -> &'static str

The focused row’s key ("" with no rows).

Source

pub fn asking(&self) -> Option<&'static str>

The key of the question open, if any.

Source

pub fn leaving(&self) -> Option<LeaveChoice>

The answer in focus while the question asked on leaving with changes is open.

Source

pub fn changed(&self, ctx: &Ctx<G>) -> bool

Whether any setting, or any row that isn’t one, differs from when the screen opened (the layout aside: it is saved when picked).

Source

pub fn typing(&self) -> Option<&NumberBox>

The volume box, while it is open.

Source

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

The text key of the message under the panel, if any.

Source

pub fn value(ctx: &Ctx<G>, row: &OptionRow<G>) -> ValueView

What row shows beside its name. (The volume box, while open, is the screen’s: view.)

Source

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

The screen as it is now, as plain data for a skin to paint (glyph::paint): every row with its name and value, the row in focus, the volume box if it is open, the message, the question and the help line, all in the player’s language and naming their keys.

Source

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

The bottom help line, naming the keys of the active keymap (or their buttons, on a controller): what Confirm does on the focused row, if anything.

Trait Implementations§

Source§

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

Source§

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

Its rows, its questions and the volume box on a controller.

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§

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> 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, 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.