use super::{Run, run};
use crate::ui::{Model, theme};
pub fn waiting(model: &Model) -> u64 {
model
.roster
.iter()
.filter(|chunk| !matches!(chunk.held, crate::ui::Held::Unheld(_)))
.flat_map(|chunk| chunk.walls.iter())
.map(|wall| wall.attention)
.sum()
}
pub fn engines(model: &Model) -> Run {
use crate::ui::Held;
let held = model.roster.len();
let reached = model
.roster
.iter()
.filter(|chunk| chunk.held == Held::Heard)
.count();
let noun = if held == 1 { "engine" } else { "engines" };
if reached == held {
return run(format!("{held} {noun}"), theme::INK_WEAK);
}
let down = model
.roster
.iter()
.any(|chunk| matches!(chunk.held, Held::Unheld(_)));
let ink = if down {
theme::accent(theme::State::Error)
} else {
theme::INK_WEAK
};
run(format!("{reached} of {held} {noun}"), ink)
}