From 3ddc56e4ac76c7e478dd8d179f4dd3c33c6c671d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Piotr=20Korg=C3=B3l?= Date: Mon, 17 Jun 2019 12:40:19 +0200 Subject: [PATCH 1/4] Allow client to read user input --- chat-cli/src/main.rs | 25 +++++++++++++++++++------ 1 file changed, 19 insertions(+), 6 deletions(-) diff --git a/chat-cli/src/main.rs b/chat-cli/src/main.rs index 1a4f099579..2065becdb7 100644 --- a/chat-cli/src/main.rs +++ b/chat-cli/src/main.rs @@ -2,9 +2,19 @@ use client::{Client, Event}; use common::{clock::Clock, comp}; use log::{error, info}; use std::time::Duration; +use std::io; const TPS: u64 = 10; // Low value is okay, just reading messages. +fn read_input() -> String { + let mut buffer = String::new(); + + io::stdin().read_line(&mut buffer) + .expect("Failed to read input"); + + buffer +} + fn main() { // Initialize logging. pretty_env_logger::init(); @@ -20,15 +30,18 @@ fn main() { println!("Server info: {:?}", client.server_info); - // TODO: Remove or move somewhere else, this doesn't work immediately after connecting - println!("Ping: {:?}", client.get_ping_ms()); - println!("Players online: {:?}", client.get_players()); - client.register(comp::Player::new("test".to_string(), None)); - client.send_chat("Hello!".to_string()); + println!("Enter your username"); + let mut username = read_input(); + + client.register(comp::Player::new(username, None)); loop { + + // TODO: Make it run on another thread. The client doesn't sync until you won't send another + // message. + client.send_chat(read_input()); let events = match client.tick(comp::Controller::default(), clock.get_last_delta()) { Ok(events) => events, Err(err) => { @@ -39,7 +52,7 @@ fn main() { for event in events { match event { - Event::Chat(msg) => println!("[chat] {}", msg), + Event::Chat(msg) => println!("{}", msg), Event::Disconnect => {} // TODO } } From a4a835d26bb531a22dd50f411a1c1942f92f5d02 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Piotr=20Korg=C3=B3l?= Date: Mon, 17 Jun 2019 12:40:50 +0200 Subject: [PATCH 2/4] fmt --- chat-cli/src/main.rs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/chat-cli/src/main.rs b/chat-cli/src/main.rs index 2065becdb7..693ab08ed3 100644 --- a/chat-cli/src/main.rs +++ b/chat-cli/src/main.rs @@ -1,15 +1,16 @@ use client::{Client, Event}; use common::{clock::Clock, comp}; use log::{error, info}; -use std::time::Duration; use std::io; +use std::time::Duration; const TPS: u64 = 10; // Low value is okay, just reading messages. fn read_input() -> String { let mut buffer = String::new(); - io::stdin().read_line(&mut buffer) + io::stdin() + .read_line(&mut buffer) .expect("Failed to read input"); buffer @@ -38,7 +39,6 @@ fn main() { client.register(comp::Player::new(username, None)); loop { - // TODO: Make it run on another thread. The client doesn't sync until you won't send another // message. client.send_chat(read_input()); From d33c4e35c5d5e67d44a98102a78859f3c7ebf265 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Piotr=20Korg=C3=B3l?= Date: Mon, 17 Jun 2019 15:07:55 +0200 Subject: [PATCH 3/4] read input on a different thread --- chat-cli/src/main.rs | 24 +++++++++++++++++------- 1 file changed, 17 insertions(+), 7 deletions(-) diff --git a/chat-cli/src/main.rs b/chat-cli/src/main.rs index 693ab08ed3..1d7fbdee1a 100644 --- a/chat-cli/src/main.rs +++ b/chat-cli/src/main.rs @@ -2,6 +2,8 @@ use client::{Client, Event}; use common::{clock::Clock, comp}; use log::{error, info}; use std::io; +use std::sync::mpsc; +use std::thread; use std::time::Duration; const TPS: u64 = 10; // Low value is okay, just reading messages. @@ -25,6 +27,9 @@ fn main() { // Set up an fps clock. let mut clock = Clock::new(); + println!("Enter your username"); + let mut username = read_input(); + // Create a client. let mut client = Client::new(([127, 0, 0, 1], 59003), None).expect("Failed to create client instance"); @@ -33,15 +38,21 @@ fn main() { println!("Players online: {:?}", client.get_players()); - println!("Enter your username"); - let mut username = read_input(); - client.register(comp::Player::new(username, None)); + let (tx, rx) = mpsc::channel(); + thread::spawn(move || { + loop { + let msg = read_input(); + tx.send(msg).unwrap(); + } + }); + loop { - // TODO: Make it run on another thread. The client doesn't sync until you won't send another - // message. - client.send_chat(read_input()); + for msg in rx.try_iter() { + client.send_chat(msg) + } + let events = match client.tick(comp::Controller::default(), clock.get_last_delta()) { Ok(events) => events, Err(err) => { @@ -56,7 +67,6 @@ fn main() { Event::Disconnect => {} // TODO } } - // Clean up the server after a tick. client.cleanup(); From f460fc5e2a4630aa666ab06555b28fa9bb06d975 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Piotr=20Korg=C3=B3l?= Date: Mon, 17 Jun 2019 15:10:14 +0200 Subject: [PATCH 4/4] fmt --- chat-cli/src/main.rs | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/chat-cli/src/main.rs b/chat-cli/src/main.rs index 1d7fbdee1a..41ca03a63e 100644 --- a/chat-cli/src/main.rs +++ b/chat-cli/src/main.rs @@ -41,11 +41,9 @@ fn main() { client.register(comp::Player::new(username, None)); let (tx, rx) = mpsc::channel(); - thread::spawn(move || { - loop { - let msg = read_input(); - tx.send(msg).unwrap(); - } + thread::spawn(move || loop { + let msg = read_input(); + tx.send(msg).unwrap(); }); loop {