diff --git a/src/client/chat/systems.rs b/src/client/chat/systems.rs index 3c724c12..3e71085d 100644 --- a/src/client/chat/systems.rs +++ b/src/client/chat/systems.rs @@ -4,6 +4,7 @@ use bevy_flair::style::components::{ClassList, NodeStyleSheet}; use chat_events::ChatMessageSendEvent; const MESSAGE_PROMPT: &str = "> "; +const MAX_MESSAGE_LENGTH: usize = 42; pub fn setup_chat_container(mut commands: Commands, asset_server: Res) { commands @@ -108,9 +109,14 @@ pub fn process_chat_input_system( Key::Backspace => { message.pop(); } - Key::Space => message.push(' '), + Key::Space => { + if message.len() < MAX_MESSAGE_LENGTH { + message.push(' '); + } + } Key::Character(input) => { - if input.chars().all(|c| !c.is_control()) { + if message.len() < MAX_MESSAGE_LENGTH && input.chars().all(|c| !c.is_control()) + { message.push_str(input); } } @@ -245,6 +251,17 @@ mod tests { use chat_events::{ChatClearEvent, SingleChatSendEvent}; use rsmc::ChatMessage; + fn get_chat_messages(app: &mut App) -> Vec { + let mut messages = app + .world_mut() + .query::<(&Text, &chat_components::ChatMessageElement)>(); + + messages + .iter(app.world()) + .map(|(text, _)| text.0.clone()) + .collect() + } + #[test] fn test_send_message_system() { let mut app = App::new(); @@ -284,17 +301,6 @@ mod tests { ); } - fn get_chat_messages(app: &mut App) -> Vec { - let mut messages = app - .world_mut() - .query::<(&Text, &chat_components::ChatMessageElement)>(); - - messages - .iter(app.world()) - .map(|(text, _)| text.0.clone()) - .collect() - } - #[test] fn test_chat_clear_system() { let mut app = App::new();