diff --git a/src/main.rs b/src/main.rs index b7659e7..b93804b 100644 --- a/src/main.rs +++ b/src/main.rs @@ -349,14 +349,51 @@ impl App { self.scene.insert_conversation(ConversationEntry::SystemMessage("Invalid episode number format. Use /episode [number]".into())); } }, - "/reset" => { - self.scene = Scene::default(); + "/reload" => { + self.load(); + self.reload_mixxx_playlist(); + }, + "/timer" => { + if let Ok(minutes) = arg.trim().parse::() { + self.end_time = Utc::now() + Duration::minutes(minutes); + self.scene.insert_conversation(ConversationEntry::SystemMessage(format!("Set timer for {} minutes.", minutes))); + } else { + self.scene.insert_conversation(ConversationEntry::SystemMessage("Invalid timer format. Use /timer [minutes]".into())); + } + } + "/clear" => { + match arg.trim() { + "playlist" => { + self.scene.direction.current_playlist.clear(); + self.scene.insert_conversation(ConversationEntry::SystemMessage("Cleared current playlist.".into())); + return; + }, + "artifacts" => { + self.scene.direction.artifacts.clear(); + self.scene.insert_conversation(ConversationEntry::SystemMessage("Cleared artifacts.".into())); + return; + }, + "all" => { + self.scene = Scene::default(); + self.scene.insert_conversation(ConversationEntry::SystemMessage("Cleared all data.".into())); + }, + "conversation" => { + self.scene.conversation.clear(); + self.scene.insert_conversation(ConversationEntry::SystemMessage("Cleared conversation.".into())); + }, + _ => { + self.scene.insert_conversation(ConversationEntry::SystemMessage("Unknown clear command. Use /clear [playlist|artifacts|all]".into())); + } + } return; }, "/narrative" => { self.scene.direction.narrative = arg.to_string(); self.scene.insert_conversation(ConversationEntry::SystemMessage(format!("Updated stage direction: {}", self.scene.direction.narrative))); }, + "/event" => { + self.scene.insert_conversation(ConversationEntry::StageDirection(arg.to_string())); + } _ => { self.scene.insert_conversation(ConversationEntry::SystemMessage("Unknown command. Available commands: /bandcamp [url], /episode [number], /narrative [text], /reset".into())); return;