From 33624fc62bad97549ace1582551d7faea0f358e3 Mon Sep 17 00:00:00 2001 From: core Date: Sun, 7 Jan 2024 21:40:18 -0500 Subject: [PATCH] rewrite the entire game to use tungstenite --- Cargo.lock | 22 - bevy_tungstenite_stk/src/lib.rs | 4 +- server/Cargo.toml | 1 - server/src/component.rs | 2 +- server/src/main.rs | 1052 ++++++++++++++++--------------- server/src/packet.rs | 28 +- starkingdoms-client/src/hub.ts | 10 +- 7 files changed, 557 insertions(+), 562 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 809ca4b7ad96aaa59b28e2ac24d8c32f77ce957a..54a25d052e56fdb55e4508a4354497e5b26a9822 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1066,16 +1066,6 @@ dependencies = [ "tungstenite", ] -[[package]] -name = "bevy_twite" -version = "1.0.0" -source = "git+https://gitlab.com/ghostlyzsh/twite.git#d6f1b2a46b84048c239d8667f499977d9dc40e5b" -dependencies = [ - "bevy", - "crossbeam-channel", - "twite", -] - [[package]] name = "bevy_utils" version = "0.12.1" @@ -3619,7 +3609,6 @@ dependencies = [ "bevy", "bevy_rapier2d", "bevy_tungstenite_stk", - "bevy_twite", "hex", "hmac", "jwt", @@ -4050,17 +4039,6 @@ dependencies = [ "utf-8", ] -[[package]] -name = "twite" -version = "0.1.0" -source = "git+https://gitlab.com/ghostlyzsh/twite.git#d6f1b2a46b84048c239d8667f499977d9dc40e5b" -dependencies = [ - "base64 0.21.5", - "rand", - "sha1", - "url", -] - [[package]] name = "typenum" version = "1.17.0" diff --git a/bevy_tungstenite_stk/src/lib.rs b/bevy_tungstenite_stk/src/lib.rs index 39b34f1abff3dd051a1b8d7ea88455db6680a78e..2b659f7170430d3b054dd1e4eece4b6cc604474d 100644 --- a/bevy_tungstenite_stk/src/lib.rs +++ b/bevy_tungstenite_stk/src/lib.rs @@ -7,7 +7,7 @@ use std::collections::HashMap; use std::net::{IpAddr, SocketAddr, TcpListener}; use std::sync::{Arc, RwLock}; use std::thread; -use tungstenite::protocol::frame::coding::OpCode; + use tungstenite::protocol::Role; use tungstenite::{Message, WebSocket}; @@ -108,7 +108,7 @@ impl StkTungsteniteServerPlugin { .send(WsEvent::Close { addr: this_addr }) .expect("failed to send on stream"); } - e => Err(e).unwrap(), + e => panic!("{:?}", e), }, } } diff --git a/server/Cargo.toml b/server/Cargo.toml index 6fed1a3d170c5a8e76dcbb44bceb8f1f21596de1..5d90aa55200a7df964f3bb7e66eed92ee2dc51bc 100644 --- a/server/Cargo.toml +++ b/server/Cargo.toml @@ -8,7 +8,6 @@ license = "AGPL-3" bevy = { version = "0.12", default-features = false } serde = { version = "1", features = ["derive"] } serde_json = "1" -bevy_twite = { git = "https://gitlab.com/ghostlyzsh/twite.git" } bevy_rapier2d = "0.23.0" rand = "0.8.5" tracing-subscriber = "0.3" diff --git a/server/src/component.rs b/server/src/component.rs index 2ead37f1164f07c25ee61861e8f38005905e0024..34f9d2f2341653c39389f6c591cbd524c321e78f 100644 --- a/server/src/component.rs +++ b/server/src/component.rs @@ -19,7 +19,7 @@ use bevy::prelude::*; use serde::{Deserialize, Serialize}; use starkingdoms_common::PartType as c_PartType; -#[derive(Component, Clone, Copy, Serialize, Deserialize, Debug)] +#[derive(Component, Clone, Copy, Serialize, Deserialize, Debug, PartialEq)] pub enum PlanetType { Earth, Moon, diff --git a/server/src/main.rs b/server/src/main.rs index 7750568663b23eb7cda59c1cbdb10d53bfd34381..7379fcbb605e1e4cc6f07a87bf78fde7c6a60c7c 100644 --- a/server/src/main.rs +++ b/server/src/main.rs @@ -13,7 +13,11 @@ // // You should have received a copy of the GNU Affero General Public License // along with this program. If not, see . -use std::net::Ipv4Addr; +#![allow(clippy::type_complexity)] // bevy :( +#![allow(clippy::too_many_arguments)] // bevy :( +#![allow(clippy::only_used_in_recursion)] // todo: remove this + +use std::net::IpAddr; use crate::mathutil::rot2d; use bevy::log::Level; @@ -21,7 +25,7 @@ use bevy::log::LogPlugin; use bevy::math::{vec2, vec3}; use bevy::{ecs::event::ManualEventReader, prelude::*}; use bevy_rapier2d::prelude::*; -use bevy_twite::{twite::frame::MessageType, ServerEvent, TwiteServerConfig, TwiteServerPlugin}; +use bevy_tungstenite_stk::{StkTungsteniteServerConfig, StkTungsteniteServerPlugin, WsEvent}; use component::Input; use component::*; use packet::*; @@ -29,6 +33,7 @@ use rand::Rng; use starkingdoms_common::SaveModule; use starkingdoms_common::{pack_savefile, unpack_savefile, SaveData}; use std::f32::consts::PI; +use std::str::FromStr; pub mod component; pub mod macros; @@ -62,8 +67,8 @@ fn main() { .insert_resource(AppKeys { app_key: key.into_bytes(), }) - .insert_resource(TwiteServerConfig { - addr: Ipv4Addr::new(0, 0, 0, 0), + .insert_resource(StkTungsteniteServerConfig { + addr: IpAddr::from_str("0.0.0.0").unwrap(), port: 3000, }) .add_plugins(MinimalPlugins) @@ -77,7 +82,7 @@ fn main() { }) .init_resource::() .add_plugins(RapierPhysicsPlugin::::pixels_per_meter(SCALE)) - .add_plugins(TwiteServerPlugin) + .add_plugins(StkTungsteniteServerPlugin) .add_systems(Startup, setup_integration_parameters) .add_systems(Startup, spawn_planets) .add_systems(FixedUpdate, module_spawn) @@ -158,7 +163,7 @@ fn module_spawn( time: Res