#![allow(clippy::unwrap_used, clippy::missing_docs_in_private_items)]
use elevator_core::prelude::*;
use elevator_core::query::Ext;
use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, Serialize, Deserialize)]
struct VipTag {
level: u32,
}
fn main() {
let mut sim = SimulationBuilder::demo()
.with_ext::<VipTag>("vip_tag")
.build()
.unwrap();
let rider = sim
.spawn_rider_by_stop_id(StopId(0), StopId(1), 70.0)
.unwrap();
sim.world_mut()
.insert_ext(rider, VipTag { level: 5 }, "vip_tag");
for (id, vip) in sim.world().query::<(EntityId, &Ext<VipTag>)>().iter() {
println!("Rider {id:?} is VIP level {}", vip.level);
}
sim.world_mut()
.query_ext_mut::<VipTag>()
.for_each_mut(|id, tag| {
tag.level += 1;
println!("Upgraded rider {id:?} to VIP level {}", tag.level);
});
}