mirror of
https://github.com/a-b-street/abstreet.git
synced 2024-11-28 12:12:00 +03:00
Revert "distinguish parked cars that have a trip scheduled or not"
This reverts commit dba7ced094
.
Is slow, not so useful. Could implement more intelligently, but not
worthwhile yet.
This commit is contained in:
parent
a4b24c2643
commit
f1f951fc1c
@ -27,6 +27,7 @@ list.
|
|||||||
- 23rd and madison traffic signal is the biggest problem
|
- 23rd and madison traffic signal is the biggest problem
|
||||||
- lots of unfinished trips, pedestrians waiting for missing buses
|
- lots of unfinished trips, pedestrians waiting for missing buses
|
||||||
- sometimes crashes with queue spillover?!
|
- sometimes crashes with queue spillover?!
|
||||||
|
- unparking from driveways has bugs
|
||||||
|
|
||||||
## caphill
|
## caphill
|
||||||
|
|
||||||
@ -51,5 +52,4 @@ list.
|
|||||||
|
|
||||||
- short roads: lake city, ne 115th
|
- short roads: lake city, ne 115th
|
||||||
- 12th and ravenna seems stuck, not sure why
|
- 12th and ravenna seems stuck, not sure why
|
||||||
- running zoomed-in is super laggy
|
|
||||||
- Car with one-step route Router, crash around 6am
|
- Car with one-step route Router, crash around 6am
|
||||||
|
@ -457,12 +457,7 @@ impl AgentColorScheme {
|
|||||||
CarStatus::Debug => cs.get_def("debug car", Color::BLUE.alpha(0.8)),
|
CarStatus::Debug => cs.get_def("debug car", Color::BLUE.alpha(0.8)),
|
||||||
CarStatus::Moving => cs.get_def("moving car", Color::CYAN),
|
CarStatus::Moving => cs.get_def("moving car", Color::CYAN),
|
||||||
CarStatus::Stuck => cs.get_def("stuck car", Color::rgb(222, 184, 135)),
|
CarStatus::Stuck => cs.get_def("stuck car", Color::rgb(222, 184, 135)),
|
||||||
CarStatus::ParkedWithoutTrip => {
|
CarStatus::Parked => cs.get_def("parked car", Color::rgb(180, 233, 76)),
|
||||||
cs.get_def("parked car without trip", Color::rgb(200, 233, 176))
|
|
||||||
}
|
|
||||||
CarStatus::ParkedWithTrip => {
|
|
||||||
cs.get_def("parked car with trip", Color::rgb(180, 233, 76))
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -477,7 +472,7 @@ impl AgentColorScheme {
|
|||||||
// TODO Hard to see on the greenish bike lanes? :P
|
// TODO Hard to see on the greenish bike lanes? :P
|
||||||
CarStatus::Moving => cs.get_def("moving bike", Color::GREEN),
|
CarStatus::Moving => cs.get_def("moving bike", Color::GREEN),
|
||||||
CarStatus::Stuck => cs.get_def("stuck bike", Color::RED),
|
CarStatus::Stuck => cs.get_def("stuck bike", Color::RED),
|
||||||
CarStatus::ParkedWithoutTrip | CarStatus::ParkedWithTrip => unreachable!(),
|
CarStatus::Parked => unreachable!(),
|
||||||
},
|
},
|
||||||
_ => self.by_metadata(&input.metadata),
|
_ => self.by_metadata(&input.metadata),
|
||||||
}
|
}
|
||||||
|
@ -154,10 +154,10 @@ impl Car {
|
|||||||
CarState::WaitingToAdvance => CarStatus::Stuck,
|
CarState::WaitingToAdvance => CarStatus::Stuck,
|
||||||
CarState::Crossing(_, _) => CarStatus::Moving,
|
CarState::Crossing(_, _) => CarStatus::Moving,
|
||||||
// Eh they're technically moving, but this is a bit easier to spot
|
// Eh they're technically moving, but this is a bit easier to spot
|
||||||
CarState::Unparking(_, _, _) => CarStatus::ParkedWithTrip,
|
CarState::Unparking(_, _, _) => CarStatus::Parked,
|
||||||
CarState::Parking(_, _, _) => CarStatus::ParkedWithTrip,
|
CarState::Parking(_, _, _) => CarStatus::Parked,
|
||||||
// Changing color for idling buses is helpful
|
// Changing color for idling buses is helpful
|
||||||
CarState::Idling(_, _) => CarStatus::ParkedWithTrip,
|
CarState::Idling(_, _) => CarStatus::Parked,
|
||||||
},
|
},
|
||||||
on: self.router.head(),
|
on: self.router.head(),
|
||||||
label: if self.vehicle.vehicle_type == VehicleType::Bus {
|
label: if self.vehicle.vehicle_type == VehicleType::Bus {
|
||||||
|
@ -1,6 +1,4 @@
|
|||||||
use crate::{
|
use crate::{AgentMetadata, CarID, CarStatus, DrawCarInput, ParkedCar, ParkingSpot, Vehicle};
|
||||||
AgentMetadata, CarID, CarStatus, DrawCarInput, ParkedCar, ParkingSpot, TripManager, Vehicle,
|
|
||||||
};
|
|
||||||
use abstutil::{
|
use abstutil::{
|
||||||
deserialize_btreemap, deserialize_multimap, serialize_btreemap, serialize_multimap, MultiMap,
|
deserialize_btreemap, deserialize_multimap, serialize_btreemap, serialize_multimap, MultiMap,
|
||||||
};
|
};
|
||||||
@ -144,37 +142,27 @@ impl ParkingSimState {
|
|||||||
self.dynamically_reserved_cars.remove(&p.vehicle.id);
|
self.dynamically_reserved_cars.remove(&p.vehicle.id);
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn get_draw_cars(&self, id: LaneID, map: &Map, trips: &TripManager) -> Vec<DrawCarInput> {
|
pub fn get_draw_cars(&self, id: LaneID, map: &Map) -> Vec<DrawCarInput> {
|
||||||
let mut cars = Vec::new();
|
let mut cars = Vec::new();
|
||||||
if let Some(ref lane) = self.onstreet_lanes.get(&id) {
|
if let Some(ref lane) = self.onstreet_lanes.get(&id) {
|
||||||
for spot in lane.spots() {
|
for spot in lane.spots() {
|
||||||
if let Some(car) = self.occupants.get(&spot) {
|
if let Some(car) = self.occupants.get(&spot) {
|
||||||
cars.push(self.get_draw_car(*car, map, trips).unwrap());
|
cars.push(self.get_draw_car(*car, map).unwrap());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
cars
|
cars
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn get_draw_car(&self, id: CarID, map: &Map, trips: &TripManager) -> Option<DrawCarInput> {
|
pub fn get_draw_car(&self, id: CarID, map: &Map) -> Option<DrawCarInput> {
|
||||||
let p = self.parked_cars.get(&id)?;
|
let p = self.parked_cars.get(&id)?;
|
||||||
match p.spot {
|
match p.spot {
|
||||||
ParkingSpot::Onstreet(lane, idx) => {
|
ParkingSpot::Onstreet(lane, idx) => {
|
||||||
let front_dist = self.onstreet_lanes[&lane].dist_along_for_car(idx, &p.vehicle);
|
let front_dist = self.onstreet_lanes[&lane].dist_along_for_car(idx, &p.vehicle);
|
||||||
// TODO Is this expensive to do constantly?
|
|
||||||
let status = if let Some(b) = p.vehicle.owner {
|
|
||||||
if trips.find_trip_using_car(id, b).is_some() {
|
|
||||||
CarStatus::ParkedWithTrip
|
|
||||||
} else {
|
|
||||||
CarStatus::ParkedWithoutTrip
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
CarStatus::ParkedWithoutTrip
|
|
||||||
};
|
|
||||||
Some(DrawCarInput {
|
Some(DrawCarInput {
|
||||||
id: p.vehicle.id,
|
id: p.vehicle.id,
|
||||||
waiting_for_turn: None,
|
waiting_for_turn: None,
|
||||||
status,
|
status: CarStatus::Parked,
|
||||||
on: Traversable::Lane(lane),
|
on: Traversable::Lane(lane),
|
||||||
label: None,
|
label: None,
|
||||||
metadata: AgentMetadata {
|
metadata: AgentMetadata {
|
||||||
@ -194,20 +182,18 @@ impl ParkingSimState {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// There's no DrawCarInput for cars parked offstreet, so we need this.
|
// There's no DrawCarInput for cars parked offstreet, so we need this.
|
||||||
pub fn canonical_pt(&self, id: CarID, map: &Map, trips: &TripManager) -> Option<Pt2D> {
|
pub fn canonical_pt(&self, id: CarID, map: &Map) -> Option<Pt2D> {
|
||||||
let p = self.parked_cars.get(&id)?;
|
let p = self.parked_cars.get(&id)?;
|
||||||
match p.spot {
|
match p.spot {
|
||||||
ParkingSpot::Onstreet(_, _) => {
|
ParkingSpot::Onstreet(_, _) => self.get_draw_car(id, map).map(|c| c.body.last_pt()),
|
||||||
self.get_draw_car(id, map, trips).map(|c| c.body.last_pt())
|
|
||||||
}
|
|
||||||
ParkingSpot::Offstreet(b, _) => Some(map.get_b(b).label_center),
|
ParkingSpot::Offstreet(b, _) => Some(map.get_b(b).label_center),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn get_all_draw_cars(&self, map: &Map, trips: &TripManager) -> Vec<DrawCarInput> {
|
pub fn get_all_draw_cars(&self, map: &Map) -> Vec<DrawCarInput> {
|
||||||
self.parked_cars
|
self.parked_cars
|
||||||
.keys()
|
.keys()
|
||||||
.filter_map(|id| self.get_draw_car(*id, map, trips))
|
.filter_map(|id| self.get_draw_car(*id, map))
|
||||||
.collect()
|
.collect()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -46,8 +46,7 @@ pub struct DrawCarInput {
|
|||||||
pub enum CarStatus {
|
pub enum CarStatus {
|
||||||
Moving,
|
Moving,
|
||||||
Stuck,
|
Stuck,
|
||||||
ParkedWithoutTrip,
|
Parked,
|
||||||
ParkedWithTrip,
|
|
||||||
Debug,
|
Debug,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -288,7 +288,7 @@ impl GetDrawAgents for Sim {
|
|||||||
}
|
}
|
||||||
|
|
||||||
fn get_draw_car(&self, id: CarID, map: &Map) -> Option<DrawCarInput> {
|
fn get_draw_car(&self, id: CarID, map: &Map) -> Option<DrawCarInput> {
|
||||||
self.parking.get_draw_car(id, map, &self.trips).or_else(|| {
|
self.parking.get_draw_car(id, map).or_else(|| {
|
||||||
self.driving
|
self.driving
|
||||||
.get_single_draw_car(id, self.time, map, &self.transit)
|
.get_single_draw_car(id, self.time, map, &self.transit)
|
||||||
})
|
})
|
||||||
@ -301,7 +301,7 @@ impl GetDrawAgents for Sim {
|
|||||||
fn get_draw_cars(&self, on: Traversable, map: &Map) -> Vec<DrawCarInput> {
|
fn get_draw_cars(&self, on: Traversable, map: &Map) -> Vec<DrawCarInput> {
|
||||||
if let Traversable::Lane(l) = on {
|
if let Traversable::Lane(l) = on {
|
||||||
if map.get_l(l).is_parking() {
|
if map.get_l(l).is_parking() {
|
||||||
return self.parking.get_draw_cars(l, map, &self.trips);
|
return self.parking.get_draw_cars(l, map);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
self.driving
|
self.driving
|
||||||
@ -320,7 +320,7 @@ impl GetDrawAgents for Sim {
|
|||||||
let mut result = self
|
let mut result = self
|
||||||
.driving
|
.driving
|
||||||
.get_all_draw_cars(self.time, map, &self.transit);
|
.get_all_draw_cars(self.time, map, &self.transit);
|
||||||
result.extend(self.parking.get_all_draw_cars(map, &self.trips));
|
result.extend(self.parking.get_all_draw_cars(map));
|
||||||
result
|
result
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -889,7 +889,7 @@ impl Sim {
|
|||||||
match id {
|
match id {
|
||||||
AgentID::Car(id) => self
|
AgentID::Car(id) => self
|
||||||
.parking
|
.parking
|
||||||
.canonical_pt(id, map, &self.trips)
|
.canonical_pt(id, map)
|
||||||
.or_else(|| Some(self.get_draw_car(id, map)?.body.last_pt())),
|
.or_else(|| Some(self.get_draw_car(id, map)?.body.last_pt())),
|
||||||
AgentID::Pedestrian(id) => Some(self.get_draw_ped(id, map)?.pos),
|
AgentID::Pedestrian(id) => Some(self.get_draw_ped(id, map)?.pos),
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user