widgetry

Trait State

Source
pub trait State<A>: Downcast {
    // Required methods
    fn event(
        &mut self,
        ctx: &mut EventCtx<'_>,
        shared_app_state: &mut A,
    ) -> Transition<A>;
    fn draw(&self, g: &mut GfxCtx<'_>, shared_app_state: &A);

    // Provided methods
    fn draw_baselayer(&self) -> DrawBaselayer { ... }
    fn on_destroy(&mut self, _: &mut EventCtx<'_>, _: &mut A) { ... }
    fn recreate(&mut self, _: &mut EventCtx<'_>, _: &mut A) -> Box<dyn State<A>> { ... }
}
Expand description

A temporary state of an application. There’s a stack of these, with the most recent being the active one.

Required Methods§

Source

fn event( &mut self, ctx: &mut EventCtx<'_>, shared_app_state: &mut A, ) -> Transition<A>

Respond to a UI event, such as input or time passing.

Source

fn draw(&self, g: &mut GfxCtx<'_>, shared_app_state: &A)

Draw

Provided Methods§

Source

fn draw_baselayer(&self) -> DrawBaselayer

Specifies what to draw before draw()

Source

fn on_destroy(&mut self, _: &mut EventCtx<'_>, _: &mut A)

Before this state is popped or replaced, call this.

Source

fn recreate(&mut self, _: &mut EventCtx<'_>, _: &mut A) -> Box<dyn State<A>>

Respond to Transition::Recreate by assuming state in the app has changed, but preserving the State-specific state appropriately.

Implementations§

Source§

impl<A> dyn State<A>
where A: Any + 'static,

Source

pub fn is<__T: State<A>>(&self) -> bool

Returns true if the trait object wraps an object of type __T.

Source

pub fn downcast<__T: State<A>>(self: Box<Self>) -> Result<Box<__T>, Box<Self>>

Returns a boxed object from a boxed trait object if the underlying object is of type __T. Returns the original boxed trait if it isn’t.

Source

pub fn downcast_rc<__T: State<A>>(self: Rc<Self>) -> Result<Rc<__T>, Rc<Self>>

Returns an Rc-ed object from an Rc-ed trait object if the underlying object is of type __T. Returns the original Rc-ed trait if it isn’t.

Source

pub fn downcast_ref<__T: State<A>>(&self) -> Option<&__T>

Returns a reference to the object within the trait object if it is of type __T, or None if it isn’t.

Source

pub fn downcast_mut<__T: State<A>>(&mut self) -> Option<&mut __T>

Returns a mutable reference to the object within the trait object if it is of type __T, or None if it isn’t.

Implementors§

Source§

impl<A> State<A> for PopupMsg

Source§

impl<A, T> State<A> for FutureLoader<A, T>
where A: 'static, T: 'static,

Source§

impl<A: 'static> State<A> for SimpleStateWrapper<A>

Source§

impl<A: 'static> State<A> for PromptInput<A>

Source§

impl<A: 'static, T: 'static + Readable> State<A> for FileLoader<A, T>

Source§

impl<A: 'static, T: 'static> State<A> for ChooseSomething<A, T>

impl State<SimpleApp<Options>> for ExploreAmenitiesDetails

impl State<SimpleApp<Options>> for BusExperiment

impl State<SimpleApp<Options>> for FromAmenity

impl State<SimpleApp<Options>> for Results

impl State<SimpleApp<Options>> for SingleStart

impl State<App> for CutscenePlayer

impl State<App> for ShowMessage

impl State<App> for DebugWarp

impl State<App> for Warping

impl State<App> for Viewer

impl State<App> for Blockfinder

impl State<App> for Floodfiller

impl State<App> for PathCounter

impl State<App> for PolygonDebugger

impl State<App> for AllRoutesExplorer

impl State<App> for PathCostDebugger

impl State<App> for RouteExplorer

impl State<App> for BulkSelect

impl State<App> for DebugMode

impl State<App> for ScreenshotTest

impl State<App> for CollisionsViewer

impl State<App> for PopularDestinations

impl State<App> for ViewKML

impl State<App> for PolygonEditor

impl State<App> for ScenarioManager

impl State<App> for DrawFreehand

impl State<App> for StoryMapEditor

impl State<App> for CrosswalkEditor

impl State<App> for SelectSegments

impl State<App> for RoadEditor

impl State<App> for RouteEditor

impl State<App> for ConfirmDiscard

impl State<App> for EditMode

impl State<App> for LoadEdits

impl State<App> for SaveEdits

impl State<App> for SignalPicker

impl State<App> for PreviewTrafficSignal

impl State<App> for TrafficSignalEditor

impl State<App> for ZoneEditor

impl State<App> for PickLayer

impl State<App> for CommuterPatterns

impl State<App> for ActiveTraffic

impl State<App> for TransitRoutes

impl State<App> for ModeShift

impl State<App> for ParkingOverhead

impl State<App> for RiskSummaries

impl State<App> for RectangularSelector

impl State<App> for TrafficSignalDemand

impl State<App> for TravelTimes

impl State<App> for TripTable

impl State<App> for AreaSpawner

impl State<App> for AgentSpawner

impl State<App> for ChangeMode

impl State<App> for EditScenarioModifiers

impl State<App> for FinalScore

impl State<App> for TrafficRecorder

impl State<App> for BackToTitleScreen

impl State<App> for SandboxLoader

impl State<App> for SandboxMode

impl State<App> for JumpToTime

impl State<App> for TimeWarpScreen

impl State<App> for TurnExplorer

impl State<App> for ExploreMap

impl State<App> for ShowGaps

impl State<App> for QuickSketch

impl State<App> for TripPlanner

impl State<App> for SimpleWarper

impl State<App> for ChangeFilterType

impl State<App> for ResolveBusGate

impl State<App> for ResolveOneWayAndFilter

impl State<App> for DesignLTN

impl State<App> for ChangedRoutes

impl State<App> for Census

impl State<App> for Crossings

impl State<App> for CustomizeBoundary

impl State<App> for CycleNetwork

impl State<App> for FreehandBoundary

impl State<App> for PerResidentImpact

impl State<App> for PickArea

impl State<App> for RoutePlanner

impl State<App> for SelectBoundary

impl State<App> for ShowImpactResults

impl State<App> for SaveDialog

impl State<App> for MainState

impl State<App> for PickMap

impl<A: AppLike + 'static> State<A> for MapAlreadyLoaded<A>

impl<A: AppLike + 'static> State<A> for AllCityPicker<A>

impl<A: AppLike + 'static> State<A> for CitiesInCountryPicker<A>

impl<A: AppLike + 'static> State<A> for ImportCity<A>

impl<A: AppLike + 'static> State<A> for CrossStreet

impl<A: AppLike + 'static> State<A> for SearchBuildings

impl<A: AppLike + 'static> State<A> for CityPicker<A>

impl<A: AppLike + 'static> State<A> for Navigator

impl<A: AppLike + 'static> State<A> for RunCommand<A>

impl<A: AppLike> State<A> for OptionsPanel

impl<T> State<SimpleApp<T>> for SimpleWarper

impl State<SimpleApp<()>> for Viewer

impl State<SimpleApp<()>> for ChangeWay

impl State<SimpleApp<()>> for ParkingMapper

impl State<SimpleApp<Session>> for Picker

impl State<SimpleApp<Session>> for Game

impl State<App> for Demo