diff --git a/src/sources.rs b/src/sources.rs index 8c8eb2b..872bb04 100644 --- a/src/sources.rs +++ b/src/sources.rs @@ -118,6 +118,8 @@ pub async fn voidwell(world: i32) -> Result { #[derive(serde::Deserialize)] struct Root { + #[serde(rename = "onlineCharacters")] + pub online_characters: i32, #[serde(rename = "zoneStates")] pub zone_states: Vec, } @@ -152,29 +154,39 @@ pub async fn voidwell(world: i32) -> Result { .await .unwrap(); + let ns_avg: i32 = response + .zone_states + .iter() + .map(|zone| zone.population.ns) + .sum::() + / 3; + + let nc = response + .zone_states + .iter() + .map(|zone| zone.population.nc) + .sum::() + + ns_avg; + + let tr = response + .zone_states + .iter() + .map(|zone| zone.population.tr) + .sum::() + + ns_avg; + + let vs = response + .zone_states + .iter() + .map(|zone| zone.population.vs) + .sum::() + + ns_avg; + Ok(Population { - nc: response - .zone_states - .iter() - .map(|zone| zone.population.nc) - .sum(), - tr: response - .zone_states - .iter() - .map(|zone| zone.population.tr) - .sum(), - vs: response - .zone_states - .iter() - .map(|zone| zone.population.vs) - .sum(), - total: response - .zone_states - .iter() - .map(|zone| { - zone.population.nc + zone.population.tr + zone.population.vs + zone.population.ns - }) - .sum(), + nc, + tr, + vs, + total: response.online_characters, }) }