idk girl this is strange

This commit is contained in:
clizia 2025-01-12 23:23:34 +01:00
parent abfc03434c
commit f66600cabc
5 changed files with 22 additions and 8 deletions

View file

@ -2,13 +2,13 @@ use std::fmt::Display;
use serde::{Serialize, Deserialize}; use serde::{Serialize, Deserialize};
#[derive(Serialize, Deserialize)] #[derive(Serialize, Deserialize, PartialEq, Eq, Hash, Clone)]
pub struct Card { pub struct Card {
pub suit: Suit, pub suit: Suit,
pub value: u8, pub value: u8,
} }
#[derive(Clone, Copy, Serialize, Deserialize)] #[derive(Clone, Copy, Serialize, Deserialize, PartialEq, Eq, Hash)]
pub enum Suit { pub enum Suit {
Hearts, Hearts,
Diamonds, Diamonds,

View file

@ -4,6 +4,7 @@ use rand::rng;
use crate::card::Card; use crate::card::Card;
use crate::card::Suit; use crate::card::Suit;
#[derive(PartialEq, Eq, Hash, Clone)]
pub struct Deck { pub struct Deck {
pub deck: Vec<Card>, pub deck: Vec<Card>,
} }

View file

@ -1,6 +1,7 @@
use crate::{deck::Deck, player::Player}; use crate::{deck::Deck, player::Player};
use petname::Generator; use petname::Generator;
#[derive(Eq, PartialEq, Hash, Clone)]
pub struct Lobby { pub struct Lobby {
pub id: String, pub id: String,
pub players: Vec<Player>, pub players: Vec<Player>,
@ -32,4 +33,8 @@ impl Lobby {
pub fn get_deck(self) -> Deck { pub fn get_deck(self) -> Deck {
self.deck self.deck
} }
pub fn get_id(&self) -> String {
self.id.clone()
}
} }

View file

@ -1,3 +1,4 @@
use std::collections::HashMap;
use std::io::{self, Error}; use std::io::{self, Error};
use std::net::SocketAddr; use std::net::SocketAddr;
@ -50,15 +51,22 @@ async fn main() -> io::Result<()> {
let address = "127.0.0.1:8080".to_string(); let address = "127.0.0.1:8080".to_string();
let listener = TcpListener::bind(&address).await?; let listener = TcpListener::bind(&address).await?;
let mut lobbies: Vec<Lobby> = Vec::new(); let mut lobbies: HashMap<String, Lobby> = HashMap::new();
loop { loop {
let (mut stream, addr) = listener.accept().await?; let (mut stream, addr) = listener.accept().await?;
tokio::spawn(async move {
println!("new connection from: {}", addr); println!("new connection from: {}", addr);
let (player, lobby) = handle_connection(stream, addr).await;
}); let lobby_player_handle = tokio::spawn(handle_connection(stream, addr));
let (player, lobby) = lobby_player_handle.await?;
match lobby {
Some(lobby) => lobbies.insert(lobby.get_id(), lobby),
None => continue,
};
} }
Ok(()) Ok(())

View file

@ -4,7 +4,7 @@ use sha256::digest;
use crate::card::Card; use crate::card::Card;
#[derive(Serialize, Deserialize)] #[derive(Serialize, Deserialize, Eq, PartialEq, Hash, Clone)]
pub struct Player { pub struct Player {
// addr will change because at this stage i really // addr will change because at this stage i really
// don't know what i am doing // don't know what i am doing