Skip to main content

GridTerrain

Struct GridTerrain 

Source
pub struct GridTerrain<G>(pub G);
Expand description

A Grid as a Terrain: solid tiles, one-way platforms, surfaces and pits by the grid’s answers. Wrap a borrow of your map (GridTerrain(&map)) to step through it each frame, or own it.

It builds on nothing and isn’t findable by find_mut (it may borrow). An ability that needs your map: write the Terrain yourself, forwarding to the grid’s Grid::overlaps_solid, Grid::on_platform and Grid::surface_of.

Tuple Fields§

§0: G

Trait Implementations§

Source§

impl<G: Clone> Clone for GridTerrain<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: Copy> Copy for GridTerrain<G>

Source§

impl<G: Debug> Debug for GridTerrain<G>

Source§

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

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

impl<G: Grid> Terrain for GridTerrain<G>

Source§

fn solid(&self, r: Rect) -> bool

Whether r overlaps anything solid (walls, floors, ceilings, moving solids).
Source§

fn platform(&self, r: Rect) -> bool

Whether r stands exactly on top of a one-way platform (its bottom edge on the platform’s top). One-way platforms hold from above, let the character jump up through them, and drop it on down + jump.
Source§

fn surface(&self, r: Rect) -> Surface

What kind of ground or wall r touches: the row under the feet while standing, the column beside the body at a wall. Ice, conveyor belts, walls that can’t be climbed, bouncy pads (see Surface). Default: the base’s, or Surface::DEFAULT.
Source§

fn fell_out(&self, r: Rect) -> bool

Whether r is out of the world (fell into a pit).
Source§

fn base(&self) -> Option<&dyn Terrain>

The terrain this one builds on, which the defaults forward to, or None. terrain_layer! writes it with Terrain::base_mut and Terrain::as_any_mut. Required, so a wrapper can’t lose its base’s platforms, refills and pits by forgetting it.
Source§

fn refill(&mut self, r: Rect) -> bool

The character’s body r touches a dash refill: use it up and return true (it’s only asked when a dash is spent).
Source§

fn tick(&mut self, _dt: f32, _bodies: &[Rect])

This layer’s own update, once per step after the characters moved, with their bodies (one, unless several share the terrain through a crate::Party): let things fall onto them, refills come back, platforms move. Only this layer’s state: Terrain::update runs the bases’ ticks by itself. Default: nothing.
Source§

fn update(&mut self, dt: f32, bodies: &[Rect])

The whole terrain’s update: Terrain::tick on this layer, then on every base down the chain. Don’t write it; write Terrain::tick. Only an adapter that hands its base something else than it got (converted bodies, say) writes it, and then calls the base’s update.
Source§

fn carry(&self, r: Rect) -> (f32, f32)

How far the solid (or one-way platform) overlapping r moved in the last Terrain::update, in units: moving platforms, elevators. Read more
Source§

fn base_mut(&mut self) -> Option<&mut dyn Terrain>

Terrain::base, to change. Return the same terrain from both (checked in debug builds).
Source§

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

This terrain as itself, so an Ability can reach your type through find_mut (break a block, flip a switch): Some(self), which terrain_layer! writes. Default: None, it isn’t found (its Terrain::base still is).
Source§

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

Terrain::as_any_mut, to read: what find looks at. terrain_layer! writes both. Default: None.

Auto Trait Implementations§

§

impl<G> Freeze for GridTerrain<G>
where G: Freeze,

§

impl<G> RefUnwindSafe for GridTerrain<G>
where G: RefUnwindSafe,

§

impl<G> Send for GridTerrain<G>
where G: Send,

§

impl<G> Sync for GridTerrain<G>
where G: Sync,

§

impl<G> Unpin for GridTerrain<G>
where G: Unpin,

§

impl<G> UnsafeUnpin for GridTerrain<G>
where G: UnsafeUnpin,

§

impl<G> UnwindSafe for GridTerrain<G>
where G: 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<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
where ST: ?Sized, DT: ?Sized,

Source§

impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
where ST: ?Sized, DT: ?Sized,

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> Downcast for T
where T: Any,

Source§

fn into_any(self: Box<T>) -> Box<dyn Any>

Convert Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>. Box<dyn Any> can then be further downcast into Box<ConcreteType> where ConcreteType implements Trait.
Source§

fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>

Convert Rc<Trait> (where Trait: Downcast) to Rc<Any>. Rc<Any> can then be further downcast into Rc<ConcreteType> where ConcreteType implements Trait.
Source§

fn as_any(&self) -> &(dyn Any + 'static)

Convert &Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot generate &Any’s vtable from &Trait’s.
Source§

fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)

Convert &mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot generate &mut Any’s vtable from &mut Trait’s.
Source§

impl<T> Downcast<T> for T

Source§

fn downcast(&self) -> &T

Source§

impl<T> DowncastSync for T
where T: Any + Send + Sync,

Source§

fn into_any_arc(self: Arc<T>) -> Arc<dyn Any + Send + Sync> ⓘ

Convert Arc<Trait> (where Trait: Downcast) to Arc<Any>. Arc<Any> can then be further downcast into Arc<ConcreteType> where ConcreteType implements Trait.
Source§

impl<S, T> Duplex<S> for T
where T: FromSample<S> + ToSample<S>,

Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<S> FromSample<S> for S

Source§

fn from_sample_(s: S) -> S

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self> ⓘ

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self> ⓘ

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
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<F, T> IntoSample<T> for F
where T: FromSample<F>,

Source§

fn into_sample(self) -> T

Source§

impl<T> Read<Exclusive, BecauseExclusive> for T
where T: ?Sized,

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> ToSample<U> for T
where U: FromSample<T>,

Source§

fn to_sample_(self) -> U

Source§

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

Source§

type Error = !

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

fn try_from(value: U) -> Result<T, !>

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.
Source§

impl<T> Upcast<T> for T

Source§

fn upcast(&self) -> Option<&T>

Source§

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

Source§

impl<T> WasmNotSendSync for T

Source§

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

Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more