diff --git a/gdrust/server/src/connection.rs b/gdrust/server/src/connection.rs index 2526991..dc8954e 100644 --- a/gdrust/server/src/connection.rs +++ b/gdrust/server/src/connection.rs @@ -1,9 +1,8 @@ -use std::io::Cursor; - use anyhow::anyhow; use bytes::BytesMut; use prost::Message; use proto::{connect, ProtoRequest}; +use std::io::Cursor; use tokio::{io::AsyncReadExt, net::TcpStream, sync::broadcast}; pub struct Connection { diff --git a/gdrust/server/src/lib.rs b/gdrust/server/src/lib.rs index 4789e92..f38ccbb 100644 --- a/gdrust/server/src/lib.rs +++ b/gdrust/server/src/lib.rs @@ -1,21 +1,13 @@ mod cfg; mod connection; -use anyhow::anyhow; -use bytes::BytesMut; use cfg::{DEFAULT_IP, DEFAULT_PORT}; use clap::Parser; use connection::Connection; -use prost::Message; -use proto::{connect::Join, ProtoRequest}; -use std::{ - error::Error, - io::{Cursor, Write}, - process::exit, -}; +use std::{collections::HashMap, error::Error, io::Write, process::exit}; use tokio::{ - io::{self, AsyncBufReadExt, AsyncReadExt, BufReader}, - net::{TcpListener, TcpStream}, + io::{self, AsyncBufReadExt, BufReader}, + net::TcpListener, select, sync::broadcast, }; @@ -26,6 +18,7 @@ struct Server { port: usize, bind_addr: String, tcplistener: TcpListener, + connections: HashMap, } impl Server { @@ -45,6 +38,7 @@ impl Server { port, bind_addr, tcplistener, + connections: HashMap::new(), }) } @@ -60,7 +54,7 @@ impl Server { Ok((socket, _)) => { let shutdown = shutdown_sender.subscribe(); log::info!("Connected to a socket"); - tokio::spawn(async move { + tokio::spawn(async { let mut connection = Connection::new(shutdown, socket); if let Err(e) = connection.start().await { log::error!("When processing a request:{}", e) diff --git a/gdrust/src/multi.rs b/gdrust/src/multi.rs index e51b348..ec35b78 100644 --- a/gdrust/src/multi.rs +++ b/gdrust/src/multi.rs @@ -1,4 +1,4 @@ -use crate::{get_multi_single, get_tokio_runtime, MultiSingle}; +use crate::get_tokio_runtime; use ::proto::ProtoRequest; use anyhow::anyhow; use bytes::{Bytes, BytesMut}; @@ -6,7 +6,6 @@ use godot::classes::{INode, Node}; use godot::prelude::*; use prost::Message; use proto::connect::Join; -use std::mem::swap; use std::process::{Child, Command}; use tokio::io::{AsyncReadExt, AsyncWriteExt}; use tokio::net::tcp::{OwnedReadHalf, OwnedWriteHalf}; diff --git a/gdrust/src/ui/multi_setup.rs b/gdrust/src/ui/multi_setup.rs index c28a80e..7d0e191 100644 --- a/gdrust/src/ui/multi_setup.rs +++ b/gdrust/src/ui/multi_setup.rs @@ -83,6 +83,9 @@ impl MultiSetup { impl Drop for MultiSetup { fn drop(&mut self) { let tmp = self.receiver.take(); + if tmp.is_none() { + return; + } get_multi_single() .lock() .unwrap() diff --git a/scenes/fight.tscn b/scenes/fight.tscn index 8854e50..12a936c 100644 --- a/scenes/fight.tscn +++ b/scenes/fight.tscn @@ -71,6 +71,9 @@ texture = ExtResource("3_2spkb") [node name="StarWrath" parent="." instance=ExtResource("4_8ipx5")] +[node name="EnchantedSword" parent="." instance=ExtResource("13_1n0f0")] +rotation = 0.710345 + [node name="Player" type="Player" parent="."] position = Vector2(570, 414) scale = Vector2(0.2, 0.2) @@ -205,10 +208,6 @@ position = Vector2(500, 530) scale = Vector2(1.2, 1.2) texture = ExtResource("12_sm4t8") -[node name="EnchantedSword" parent="." instance=ExtResource("13_1n0f0")] -rotation = 0.710345 -enchanted_beam = null - [node name="CategoryPanel" type="Sprite2D" parent="."] position = Vector2(41, 35) texture = ExtResource("14_miw1s")