srdusr
aboutsummaryrefslogtreecommitdiffstats
path: root/crates/server/src
diff options
context:
space:
mode:
Diffstat (limited to 'crates/server/src')
-rw-r--r--crates/server/src/main.rs6
-rw-r--r--crates/server/src/multiplayer.rs2
-rw-r--r--crates/server/src/state.rs3
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)]