lift warp plugin out of simmode. and categorize display logs as view,

just to organize the directory more.
This commit is contained in:
Dustin Carlino 2018-12-24 17:27:58 -08:00
parent 597828ce28
commit d06f80e918
5 changed files with 17 additions and 32 deletions

View File

@ -576,6 +576,8 @@ Plugin styles are blocking or ambient. And some can conflict...
- a bunch of exclusive blocking stuff... meaning it doesn't actually need to be per map! - a bunch of exclusive blocking stuff... meaning it doesn't actually need to be per map!
- hider... per-map state, shouldnt exist till it does, stackable modal, should modify ctx itself. - hider... per-map state, shouldnt exist till it does, stackable modal, should modify ctx itself.
- layers... shouldnt be per-map state. should modify stuff itself. - layers... shouldnt be per-map state. should modify stuff itself.
- view mode... whew, one thing at a time.
- warp... exclusive blocking. apparently we used to still let ambient plugins draw and color stuff while it's active, but meh, doesnt seem important.

View File

@ -1,6 +1,5 @@
pub mod debug; pub mod debug;
pub mod edit; pub mod edit;
pub mod logs;
pub mod sim; pub mod sim;
pub mod time_travel; pub mod time_travel;
pub mod view; pub mod view;

View File

@ -1,12 +1,13 @@
mod debug_objects; pub mod debug_objects;
mod follow; pub mod follow;
mod neighborhood_summary; pub mod logs;
mod search; pub mod neighborhood_summary;
mod show_activity; pub mod search;
mod show_associated; pub mod show_activity;
mod show_route; pub mod show_associated;
mod turn_cycler; pub mod show_route;
mod warp; pub mod turn_cycler;
pub mod warp;
use crate::objects::{Ctx, ID}; use crate::objects::{Ctx, ID};
use crate::plugins::{Plugin, PluginCtx}; use crate::plugins::{Plugin, PluginCtx};
@ -16,7 +17,6 @@ use ezgui::{Color, GfxCtx};
use map_model::Map; use map_model::Map;
pub struct ViewMode { pub struct ViewMode {
warp: Option<Box<Plugin>>,
search: Option<search::SearchState>, search: Option<search::SearchState>,
ambient_plugins: Vec<Box<Plugin>>, ambient_plugins: Vec<Box<Plugin>>,
} }
@ -24,7 +24,6 @@ pub struct ViewMode {
impl ViewMode { impl ViewMode {
pub fn new(map: &Map, draw_map: &DrawMap, timer: &mut Timer) -> ViewMode { pub fn new(map: &Map, draw_map: &DrawMap, timer: &mut Timer) -> ViewMode {
ViewMode { ViewMode {
warp: None,
search: None, search: None,
ambient_plugins: vec![ ambient_plugins: vec![
Box::new(debug_objects::DebugObjectsState::new()), Box::new(debug_objects::DebugObjectsState::new()),
@ -45,18 +44,6 @@ impl ViewMode {
impl Plugin for ViewMode { impl Plugin for ViewMode {
fn blocking_event(&mut self, ctx: &mut PluginCtx) -> bool { fn blocking_event(&mut self, ctx: &mut PluginCtx) -> bool {
if self.warp.is_some() {
if self.warp.as_mut().unwrap().blocking_event(ctx) {
return true;
} else {
self.warp = None;
return false;
}
} else if let Some(p) = warp::WarpState::new(ctx) {
self.warp = Some(Box::new(p));
return true;
}
if self.search.is_some() { if self.search.is_some() {
if self.search.as_mut().unwrap().blocking_event(ctx) { if self.search.as_mut().unwrap().blocking_event(ctx) {
if self.search.as_ref().unwrap().is_blocking() { if self.search.as_ref().unwrap().is_blocking() {
@ -83,17 +70,12 @@ impl Plugin for ViewMode {
p.draw(g, ctx); p.draw(g, ctx);
} }
if let Some(ref p) = self.warp {
p.draw(g, ctx);
}
if let Some(ref p) = self.search { if let Some(ref p) = self.search {
p.draw(g, ctx); p.draw(g, ctx);
} }
} }
fn color_for(&self, obj: ID, ctx: &Ctx) -> Option<Color> { fn color_for(&self, obj: ID, ctx: &Ctx) -> Option<Color> {
// warp doesn't implement color_for.
if let Some(ref p) = self.search { if let Some(ref p) = self.search {
if let Some(c) = p.color_for(obj, ctx) { if let Some(c) = p.color_for(obj, ctx) {
return Some(c); return Some(c);

View File

@ -3,8 +3,8 @@ use crate::objects::{Ctx, RenderingHints, ID};
use crate::plugins; use crate::plugins;
use crate::plugins::debug; use crate::plugins::debug;
use crate::plugins::edit; use crate::plugins::edit;
use crate::plugins::logs::DisplayLogs;
use crate::plugins::time_travel::TimeTravel; use crate::plugins::time_travel::TimeTravel;
use crate::plugins::view;
use crate::plugins::view::ViewMode; use crate::plugins::view::ViewMode;
use crate::plugins::{Plugin, PluginCtx}; use crate::plugins::{Plugin, PluginCtx};
use crate::render::{DrawMap, Renderable}; use crate::render::{DrawMap, Renderable};
@ -62,7 +62,7 @@ impl DefaultUIState {
pub fn new(flags: SimFlags, kml: Option<String>, canvas: &Canvas) -> DefaultUIState { pub fn new(flags: SimFlags, kml: Option<String>, canvas: &Canvas) -> DefaultUIState {
// Do this first to trigger the log console initialization, so anything logged by sim::load // Do this first to trigger the log console initialization, so anything logged by sim::load
// isn't lost. // isn't lost.
DisplayLogs::initialize(); view::logs::DisplayLogs::initialize();
let (primary, primary_plugins) = PerMapUI::new(flags, kml); let (primary, primary_plugins) = PerMapUI::new(flags, kml);
let mut state = DefaultUIState { let mut state = DefaultUIState {
primary, primary,
@ -165,7 +165,7 @@ impl UIState for DefaultUIState {
return; return;
} }
if let Some(p) = DisplayLogs::new(&mut ctx) { if let Some(p) = view::logs::DisplayLogs::new(&mut ctx) {
self.exclusive_blocking_plugin = Some(Box::new(p)); self.exclusive_blocking_plugin = Some(Box::new(p));
} else if let Some(p) = debug::chokepoints::ChokepointsFinder::new(&mut ctx) { } else if let Some(p) = debug::chokepoints::ChokepointsFinder::new(&mut ctx) {
self.exclusive_blocking_plugin = Some(Box::new(p)); self.exclusive_blocking_plugin = Some(Box::new(p));
@ -175,6 +175,8 @@ impl UIState for DefaultUIState {
self.exclusive_blocking_plugin = Some(Box::new(p)); self.exclusive_blocking_plugin = Some(Box::new(p));
} else if let Some(p) = debug::geom_validation::Validator::new(&mut ctx) { } else if let Some(p) = debug::geom_validation::Validator::new(&mut ctx) {
self.exclusive_blocking_plugin = Some(Box::new(p)); self.exclusive_blocking_plugin = Some(Box::new(p));
} else if let Some(p) = view::warp::WarpState::new(&mut ctx) {
self.exclusive_blocking_plugin = Some(Box::new(p));
} else if ctx.secondary.is_none() { } else if ctx.secondary.is_none() {
if let Some(p) = edit::a_b_tests::ABTestManager::new(&mut ctx) { if let Some(p) = edit::a_b_tests::ABTestManager::new(&mut ctx) {
self.exclusive_blocking_plugin = Some(Box::new(p)); self.exclusive_blocking_plugin = Some(Box::new(p));