Struct game::app::PerMap[][src]

pub struct PerMap {
    pub map: Map,
    pub draw_map: DrawMap,
    pub sim: Sim,
    pub agents: RefCell<AgentCache>,
    pub current_selection: Option<ID>,
    pub current_flags: Flags,
    pub last_warped_from: Option<(Pt2D, f64)>,
    pub sim_cb: Option<Box<dyn SimCallback>>,
    pub dirty_from_edits: bool,
    pub has_modified_trips: bool,
    pub unedited_map: RefCell<Option<Map>>,
    pub layer: Option<Box<dyn Layer>>,
    pub suspended_sim: Option<Sim>,
    prebaked: Option<(MapName, String, Analytics)>,
    pub scenario: Option<Scenario>,
}

All of the state that's bound to a specific map.

Fields

map: Mapdraw_map: DrawMapsim: Simagents: RefCell<AgentCache>current_selection: Option<ID>current_flags: Flagslast_warped_from: Option<(Pt2D, f64)>sim_cb: Option<Box<dyn SimCallback>>dirty_from_edits: bool

If we ever left edit mode and resumed without restarting from midnight, this is true.

has_modified_trips: bool

Any ScenarioModifiers in effect?

unedited_map: RefCell<Option<Map>>

Sometimes we need the map before any edits have been applied. Cache it here.

layer: Option<Box<dyn Layer>>suspended_sim: Option<Sim>

Only filled out in edit mode. Stored here once to avoid lots of clones. Used for preview.

prebaked: Option<(MapName, String, Analytics)>

Only exists in some gameplay modes. Must be carefully reset otherwise. Has the map and scenario name too.

scenario: Option<Scenario>

The most recent Scenario loaded from a file. Don't depend on it always matching the current gameplay mode; always verify the name matches what's needed.

Storing this may cost some memory, but otherwise resetting to midnight would require loading it again from a file. This is particularly painful on the web!

Implementations

impl PerMap[src]

pub fn map_loaded(
    map: Map,
    sim: Sim,
    flags: Flags,
    opts: &Options,
    cs: &ColorScheme,
    ctx: &mut EventCtx<'_>,
    timer: &mut Timer<'_>
) -> PerMap
[src]

pub fn init_camera_for_loaded_map(
    &mut self,
    ctx: &mut EventCtx<'_>,
    splash: bool
)
[src]

pub fn clear_sim(&mut self) -> Sim[src]

Returns whatever was there

pub fn calculate_unedited_map(
    &self,
    ctx: &mut EventCtx<'_>
) -> Option<Transition<App>>
[src]

If needed, makes sure the unedited_map is populated. Callers can then do self.unedited_map.borrow().unwrap_or(&self.map) if this returns None. If a transition is returned, that must be executed first.

pub fn canonical_point(&self, id: ID) -> Option<Pt2D>[src]

Auto Trait Implementations

impl !RefUnwindSafe for PerMap[src]

impl !Send for PerMap[src]

impl !Sync for PerMap[src]

impl Unpin for PerMap[src]

impl !UnwindSafe for PerMap[src]

Blanket Implementations

impl<T> Any for T where
    T: 'static + ?Sized
[src]

impl<T> Borrow<T> for T where
    T: ?Sized
[src]

impl<T> BorrowMut<T> for T where
    T: ?Sized
[src]

impl<T> Downcast for T where
    T: Any

impl<T> From<T> for T[src]

impl<T> Instrument for T[src]

impl<T> Instrument for T[src]

impl<T, U> Into<U> for T where
    U: From<T>, 
[src]

impl<T> Same<T> for T

type Output = T

Should always be Self

impl<T, U> TryFrom<U> for T where
    U: Into<T>, 
[src]

type Error = Infallible

The type returned in the event of a conversion error.

impl<T, U> TryInto<U> for T where
    U: TryFrom<T>, 
[src]

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

The type returned in the event of a conversion error.

impl<V, T> VZip<V> for T where
    V: MultiLane<T>,