diff options
Diffstat (limited to 'crates/server/src')
| -rw-r--r-- | crates/server/src/main.rs | 6 | ||||
| -rw-r--r-- | crates/server/src/multiplayer.rs | 2 | ||||
| -rw-r--r-- | crates/server/src/state.rs | 3 |
3 files changed, 10 insertions, 1 deletions
diff --git a/crates/server/src/main.rs b/crates/server/src/main.rs index beaabef..ce07a4b 100644 --- a/crates/server/src/main.rs +++ b/crates/server/src/main.rs @@ -32,6 +32,8 @@ struct TextEntry { content: String, #[serde(default)] attribution: Option<String>, + #[serde(default)] + category: Option<String>, } // Every multiplayer room draws from this same pool so every player in a @@ -48,6 +50,7 @@ fn fallback_race_texts() -> Vec<RaceText> { RaceText { text: "The quick brown fox jumps over the lazy dog, and the dog, being lazy, does not mind at all. Pack my box with five dozen liquor jugs.".to_string(), attribution: None, + category: Some("general".to_string()), }, ] } @@ -63,7 +66,7 @@ fn load_race_texts() -> Vec<RaceText> { // player, where a short quote is fine, so the floor is applied // here rather than to the pack itself. .filter(|e| e.content.chars().count() >= MIN_RACE_TEXT_CHARS) - .map(|e| RaceText { text: e.content, attribution: e.attribution }) + .map(|e| RaceText { text: e.content, attribution: e.attribution, category: e.category }) .collect(); if pool.is_empty() { tracing::warn!("no passage reached {MIN_RACE_TEXT_CHARS} characters - races will use the fallback pool"); @@ -282,6 +285,7 @@ mod tests { vec![RaceText { text: "The quick brown fox jumps over the lazy dog.".to_string(), attribution: None, + category: None, }], SpotifyConfig::default(), billing::StripeConfig::default(), diff --git a/crates/server/src/multiplayer.rs b/crates/server/src/multiplayer.rs index 7fca7c3..fc11a23 100644 --- a/crates/server/src/multiplayer.rs +++ b/crates/server/src/multiplayer.rs @@ -329,6 +329,7 @@ async fn start_race(room_arc: Arc<Mutex<Room>>, state: Arc<AppState>) { .unwrap_or_else(|| crate::state::RaceText { text: String::new(), attribution: None, + category: None, }); room.text = Some(picked.text.clone()); // Sent before the countdown so every client can put the passage on @@ -339,6 +340,7 @@ async fn start_race(room_arc: Arc<Mutex<Room>>, state: Arc<AppState>) { &ServerMessage::RaceText { text: picked.text.clone(), attribution: picked.attribution.clone(), + category: picked.category.clone(), }, ) .await; diff --git a/crates/server/src/state.rs b/crates/server/src/state.rs index 8696764..f2a38ad 100644 --- a/crates/server/src/state.rs +++ b/crates/server/src/state.rs @@ -24,6 +24,9 @@ impl SpotifyConfig { pub struct RaceText { pub text: String, pub attribution: Option<String>, + /// The pack it came from. Shown when a passage has no attribution of its + /// own, so the results screen says where the text is from either way. + pub category: Option<String>, } #[derive(Clone)] |