Compare commits

...

2 commits

Author SHA1 Message Date
clizia
37c996fc24 sistemato 2025-03-07 17:03:50 +01:00
clizia
d446cf7762 piccolo todo 2025-03-06 13:40:24 +01:00
4 changed files with 41 additions and 55 deletions

View file

@ -13,3 +13,9 @@ server:
```
RUSTFLAGS="--cfg tokio_unstable" cargo run --bin server
```
### TODO
- [ ] move player creation on the server
- [ ] move lobby creation on the server
- [ ] fixing ui (perpetual)

View file

@ -19,51 +19,6 @@ use ratatui::{
Frame,
};
// async fn delete_player(player: &Player, client: reqwest::Client, addr: &str) -> anyhow::Result<()> {
// let player_id = &player.name;
// let response = client
// .get([&addr, "/delete/", &player_id].concat())
// .send().await;
// if let Err(e) = &response {
// println!("{e}\n");
// return Ok(())
// }
// println!("{}", response?.text().await?);
// Ok(())
// }
// async fn handle_terminal(player: &Player, stdout: &mut Stdout, client: reqwest::Client, addr: &str) -> anyhow::Result<()> {
// 'handler: loop {
// while let Ok(_event_happened) = poll(Duration::from_millis(2)) {
// match event::read().expect("diomerds") {
// TermEvent::Key(key) => {
// match (key.code, key.modifiers) {
// (KeyCode::Char('c'), KeyModifiers::CONTROL) => break 'handler,
// (KeyCode::Char('h'), KeyModifiers::NONE) => {
// for line in HELP.split('\n') {
// println!("{line}")
// }
// },
// (KeyCode::Char('1'), KeyModifiers::NONE) => {
// send_player(&player, client.clone(), addr).await?;
// },
// (KeyCode::Char('2'), KeyModifiers::NONE) => {
// delete_player(&player, client.clone(), addr).await?;
// },
// (_, _) => println!("{:?}\n", key),
// }
// },
// _ => continue,
// }
// }
// }
// Ok(())
// }
#[tokio::main]
pub async fn main() -> anyhow::Result<()> {
let mut stdout = std::io::stdout();

View file

@ -14,6 +14,7 @@ pub struct Client {
pub popup_content: String,
pub response: String,
pub lobby: Option<Lobby>,
pub lobby_id: String,
}
impl Client {

View file

@ -11,10 +11,18 @@ use ratatui::{
widgets::{Block, Borders, Clear, List, ListItem, Paragraph, Widget, Wrap},
Frame,
};
use ratatui::crossterm::{event::{self, Event, KeyCode, KeyEvent, KeyEventKind}};
use ratatui::crossterm::event::{self, Event, KeyCode, KeyEvent, KeyEventKind};
use crate::{client::Client, player::Player};
const HELP: &str = r#"bindings:
h - show help
q - quit
1 - create player
2 - create lobby
3 - send player to server
4 - send lobby to server"#;
#[derive(Debug, Default, Setters)]
struct Popup<'a> {
#[setters(into)]
@ -51,25 +59,35 @@ async fn handle_key_event(mut client: &mut Client, key_event: KeyEvent) {
false => {
match key_event.code {
KeyCode::Char('q') => Client::exit(client),
KeyCode::Char('h') => {
client.popup_title = "help".to_string();
client.popup_content = HELP.to_string();
client.popup = true;
},
KeyCode::Char('1') => {
if !client.name.is_empty() {
if client.user != None {
client.popup_title = "Error".to_string();
client.popup_content = "user already_created".to_string();
client.popup = true;
return
} else {
client.user = Some(Player::new().expect("toto"));
client.name = client.user.clone().unwrap().name;
}
client.user = Some(Player::new().expect("toto"));
client.name = client.user.clone().unwrap().name;
},
KeyCode::Char('2') => {
todo!()
if client.lobby != None {
client.popup_title = "Error".to_string();
client.popup_content = "lobby already_created".to_string();
client.popup = true;
} else {
client.user = Some(Player::new().expect("toto"));
client.name = client.user.clone().unwrap().name;
}
},
KeyCode::Char('3') => {
if let Some(player) = client.user.clone() {
let addr = client.addr.clone();
Client::send_player(&mut client, &player, &addr).await.unwrap();
return
}
}
_ => (),
@ -123,11 +141,15 @@ pub fn ui(frame: &mut Frame, app: &Client) {
"username: ".into(),
app.name.clone().yellow(),
]),
Line::from(vec![
"lobby: ".into(),
app.lobby_id.clone().yellow(),
]),
]);
let title = Line::from(" durak tui test fre ".bold());
let top_block_title = Line::from(" durak tui test fre ".bold());
let top_block = Block::default()
.title(title.centered())
.title(top_block_title.centered())
.borders(Borders::ALL)
.style(Style::default());
frame.render_widget(Paragraph::new(infos).block(top_block), chunks[0]);
@ -139,7 +161,9 @@ pub fn ui(frame: &mut Frame, app: &Client) {
])
]);
let btm_block_title = Line::from(" messaggini carini :3 ".bold());
let btm_block = Block::default()
.title(btm_block_title.centered())
.title_bottom(instructions.centered())
.borders(Borders::ALL)
.style(Style::default());