durak/src/player.rs
2025-01-28 16:33:46 +01:00

48 lines
1.2 KiB
Rust

use tokio::{io::AsyncReadExt, net::TcpStream};
use std::net::SocketAddr;
use serde::{Deserialize, Serialize};
use sha256::digest;
use crate::{card::Card, message_read::MessageReader};
#[derive(Serialize, Deserialize, Eq, PartialEq, Hash, Clone)]
pub struct Player {
// addr will change because at this stage i really
// don't know what i am doing
// it will probably be something like id or playerid
// or some other identifier idk
pub addr: SocketAddr,
// same goes for id because rn it's just the sha256 of
// the ip
pub id: String,
pub name: String,
pub hand: Vec<Card>,
}
impl Player {
pub async fn new(addr: SocketAddr, name: &str) -> anyhow::Result<Option<Self>> {
let hand_empty: Vec<Card> = Vec::new();
let to_digest: String = addr.to_string();
let id = digest(to_digest);
Ok(Some(Player {
addr,
id,
name: name.to_string(),
hand: hand_empty,
}))
}
pub fn get_addr(self) -> SocketAddr {
self.addr
}
pub fn get_name(self) -> String {
self.name
}
pub fn get_hand(self) -> Vec<Card> {
self.hand
}
}