2021-12-04 03:42:57 +00:00
|
|
|
use geoffrey_models::models::locations::Location;
|
|
|
|
use geoffrey_models::models::player::Player;
|
2021-12-12 19:41:09 +00:00
|
|
|
use geoffrey_models::models::Portal;
|
2021-12-04 03:42:57 +00:00
|
|
|
|
|
|
|
pub fn display_owners(owners: Vec<Player>, limit: usize) -> String {
|
|
|
|
let mut plural = "";
|
|
|
|
let mut ellipses = "";
|
|
|
|
|
|
|
|
if owners.len() > 1 {
|
|
|
|
plural = "s"
|
|
|
|
}
|
|
|
|
|
|
|
|
let range = if owners.len() > limit {
|
|
|
|
ellipses = "...";
|
|
|
|
limit
|
|
|
|
} else {
|
|
|
|
owners.len()
|
|
|
|
};
|
|
|
|
|
|
|
|
format!(
|
|
|
|
"Owner{}: {}{}",
|
|
|
|
plural,
|
|
|
|
owners[0..range]
|
|
|
|
.iter()
|
|
|
|
.map(|owner| owner.name.clone())
|
|
|
|
.collect::<Vec<String>>()
|
|
|
|
.join(", "),
|
|
|
|
ellipses
|
|
|
|
)
|
|
|
|
}
|
|
|
|
|
2021-12-12 19:41:09 +00:00
|
|
|
pub fn display_portal(portal: Portal) -> String {
|
2021-12-13 02:30:38 +00:00
|
|
|
format!(
|
|
|
|
"Portal: {} {} (x={}, z={})",
|
|
|
|
portal.direction(),
|
|
|
|
portal.tunnel_addr(),
|
|
|
|
portal.x,
|
|
|
|
portal.z
|
|
|
|
)
|
2021-12-12 19:41:09 +00:00
|
|
|
}
|
|
|
|
|
2021-12-04 03:42:57 +00:00
|
|
|
pub fn display_loc(loc: Location) -> String {
|
2021-12-12 19:41:09 +00:00
|
|
|
let portal_str = match loc.portal {
|
|
|
|
None => "".to_string(),
|
2021-12-13 02:30:38 +00:00
|
|
|
Some(p) => format!("{}, ", display_portal(p)),
|
2021-12-12 19:41:09 +00:00
|
|
|
};
|
|
|
|
|
2021-12-04 03:42:57 +00:00
|
|
|
format!(
|
2021-12-12 19:41:09 +00:00
|
|
|
"**{}**, {}, {}{}",
|
2021-12-04 03:42:57 +00:00
|
|
|
loc.name,
|
|
|
|
loc.position,
|
2021-12-12 19:41:09 +00:00
|
|
|
portal_str,
|
|
|
|
display_owners(loc.owners, 3),
|
2021-12-04 03:42:57 +00:00
|
|
|
)
|
|
|
|
}
|