From e21a77a31020e12aaaee1b12bf60ddd346fa0236 Mon Sep 17 00:00:00 2001 From: core Date: Tue, 9 Apr 2024 14:16:22 -0400 Subject: [PATCH] server config file part 2 --- server/src/config.rs | 2 +- server/src/main.rs | 140 +++++++++++++++++-------------------------- 2 files changed, 55 insertions(+), 87 deletions(-) diff --git a/server/src/config.rs b/server/src/config.rs index 01a363dfefbd9b55c27bb87cc087a87915da331a..f3e8cb3cbff7f88145564e1b5719d36ff1d05ba0 100644 --- a/server/src/config.rs +++ b/server/src/config.rs @@ -31,7 +31,7 @@ pub struct StkConfig { #[derive(Serialize, Deserialize, Debug, Clone)] pub struct SecurityConfig { pub app_key: String, - pub required_permission_level: u64 + pub required_permission_level: i32 } #[derive(Serialize, Deserialize, Debug, Clone)] diff --git a/server/src/main.rs b/server/src/main.rs index 3de8600d75fe12ada37b71f2456387e27a06dcf7..e185684580c47455df1761bb3dac1bb057c15696 100644 --- a/server/src/main.rs +++ b/server/src/main.rs @@ -17,9 +17,9 @@ #![allow(clippy::too_many_arguments)] // bevy :( #![allow(clippy::only_used_in_recursion)] // todo: remove this -use std::cell::OnceCell; + use std::collections::HashMap; -use std::net::IpAddr; + use crate::mathutil::rot2d; use crate::ws::{StkTungsteniteServerConfig, StkTungsteniteServerPlugin, WsEvent}; @@ -42,10 +42,10 @@ use starkingdoms_common::SaveModule; use starkingdoms_common::{pack_savefile, unpack_savefile, SaveData}; use std::f32::consts::PI; use std::fs; -use std::str::FromStr; -use std::sync::{Arc, OnceLock}; + +use std::sync::{OnceLock}; use std::time::Duration; -use crate::config::{PartsConfig, PlanetsConfig, ServerConfig, StkConfig}; +use crate::config::{PartsConfig, PhysicsSolver, PlanetsConfig, StkConfig}; pub mod component; pub mod macros; @@ -97,13 +97,6 @@ pub struct UserToken { pub expires: std::time::SystemTime, } -pub const REQUIRED_PERM_LEVEL: i32 = 0; - -#[derive(Deserialize)] -struct KeyJson { - app_key: String, -} - static _SERVER_CONFIG: OnceLock = OnceLock::new(); #[inline] pub fn server_config() -> StkConfig { @@ -173,13 +166,16 @@ fn main() { } fn setup_integration_parameters(mut context: ResMut) { - context.integration_parameters.dt = 1.0 / 20.0; - context.integration_parameters.joint_erp = 0.01; - context.integration_parameters.erp = 0.1; - //context.integration_parameters.num_solver_iterations = NonZeroUsize::new(1).unwrap(); - //context.integration_parameters.num_internal_pgs_iterations = 1; - context.integration_parameters.max_penetration_correction = 0.5; - //context.integration_parameters.switch_to_standard_pgs_solver(); + context.integration_parameters = server_config().physics.parameters; + + match server_config().physics.solver { + PhysicsSolver::SmallstepPGS => { + context.integration_parameters.switch_to_small_steps_pgs_solver(); + }, + PhysicsSolver::OldPGS => { + context.integration_parameters.switch_to_standard_pgs_solver(); + } + } } fn spawn_planets(mut commands: Commands) { info!("Spawning planets"); @@ -355,10 +351,10 @@ fn on_message( } }; - if claims.permission_level < REQUIRED_PERM_LEVEL { + if claims.permission_level < server_config().security.required_permission_level { event_queue.push(WsEvent::Send { to: *from, - message: Packet::Message { message_type: MessageType::Error, actor: "SERVER".to_string(), content: format!("Permission level {} is too low, {REQUIRED_PERM_LEVEL} is required. If your permissions were just changed, you need to log out and log back in for the change to take effect. If you believe this is a mistake, contact StarKingdoms staff.", claims.permission_level) }.into(), + message: Packet::Message { message_type: MessageType::Error, actor: "SERVER".to_string(), content: format!("Permission level {} is too low, {} is required. If your permissions were just changed, you need to log out and log back in for the change to take effect. If you believe this is a mistake, contact StarKingdoms staff.", claims.permission_level, server_config().security.required_permission_level) }.into(), }); event_queue.push(WsEvent::Close { addr: *from }); continue; @@ -368,7 +364,7 @@ fn on_message( to: *from, message: Packet::Message { message_type: MessageType::Server, actor: "StarKingdoms Team".to_string(), content: "Thank you for participating in the StarKingdoms private alpha! Your feedback is essential to improving the game, so please give us any feedback you have in the Discord! <3".to_string() }.into(), }); - } else if REQUIRED_PERM_LEVEL != 0 { + } else if server_config().security.required_permission_level != 0 { event_queue.push(WsEvent::Send { to: *from, message: Packet::Message { message_type: MessageType::Error, actor: "SERVER".to_string(), content: "Authentication is required to join this server at the moment. Log in and try again, or try again later.".to_string() }.into(), @@ -2026,49 +2022,25 @@ fn search_thrusters( force.torque += thruster_force.torque; *energy -= energy_lose_by; } - if PI / 4. < relative_angle && relative_angle < 3. * PI / 4. { - if relative_pos.y < -0.48 { - let thruster_force = ExternalForce::at_point( - Vec2::new(-force_mult * angle.sin(), force_mult * angle.cos()), - transform.translation.xy(), - transform.translation.xy(), - ); - force.force += thruster_force.force; - force.torque += thruster_force.torque; - *energy -= energy_lose_by; - } - /*if -0.48 < relative_pos.y && relative_pos.y < 0.48 { - let thruster_force = ExternalForce::at_point( - Vec2::new(-force_mult * angle.sin(), force_mult * angle.cos()), - transform.translation.xy(), - transform.translation.xy(), - ); - force.force += thruster_force.force; - force.torque += thruster_force.torque; - *energy -= energy_lose_by; - }*/ + if PI / 4. < relative_angle && relative_angle < 3. * PI / 4. && relative_pos.y < -0.48 { + let thruster_force = ExternalForce::at_point( + Vec2::new(-force_mult * angle.sin(), force_mult * angle.cos()), + transform.translation.xy(), + transform.translation.xy(), + ); + force.force += thruster_force.force; + force.torque += thruster_force.torque; + *energy -= energy_lose_by; } - if 5. * PI / 4. < relative_angle && relative_angle < 7. * PI / 4. { - if relative_pos.y > 0.48 { - let thruster_force = ExternalForce::at_point( - Vec2::new(-force_mult * angle.sin(), force_mult * angle.cos()), - transform.translation.xy(), - transform.translation.xy(), - ); - force.force += thruster_force.force; - force.torque += thruster_force.torque; - *energy -= energy_lose_by; - } - /*if -0.48 < relative_pos.y && relative_pos.y < 0.48 { - let thruster_force = ExternalForce::at_point( - Vec2::new(-force_mult * angle.sin(), force_mult * angle.cos()), - transform.translation.xy(), - transform.translation.xy(), - ); - force.force += thruster_force.force; - force.torque += thruster_force.torque; - *energy -= energy_lose_by; - }*/ + if 5. * PI / 4. < relative_angle && relative_angle < 7. * PI / 4. && relative_pos.y > 0.48 { + let thruster_force = ExternalForce::at_point( + Vec2::new(-force_mult * angle.sin(), force_mult * angle.cos()), + transform.translation.xy(), + transform.translation.xy(), + ); + force.force += thruster_force.force; + force.torque += thruster_force.torque; + *energy -= energy_lose_by; } } if input.right { @@ -2098,29 +2070,25 @@ fn search_thrusters( force.torque += thruster_force.torque; *energy -= energy_lose_by; } - if PI / 4. < relative_angle && relative_angle < 3. * PI / 4. { - if relative_pos.y > 0.48 { - let thruster_force = ExternalForce::at_point( - Vec2::new(-force_mult * angle.sin(), force_mult * angle.cos()), - transform.translation.xy(), - transform.translation.xy(), - ); - force.force += thruster_force.force; - force.torque += thruster_force.torque; - *energy -= energy_lose_by; - } + if PI / 4. < relative_angle && relative_angle < 3. * PI / 4. && relative_pos.y > 0.48 { + let thruster_force = ExternalForce::at_point( + Vec2::new(-force_mult * angle.sin(), force_mult * angle.cos()), + transform.translation.xy(), + transform.translation.xy(), + ); + force.force += thruster_force.force; + force.torque += thruster_force.torque; + *energy -= energy_lose_by; } - if 5. * PI / 4. < relative_angle && relative_angle < 7. * PI / 4. { - if relative_pos.y < -0.48 { - let thruster_force = ExternalForce::at_point( - Vec2::new(-force_mult * angle.sin(), force_mult * angle.cos()), - transform.translation.xy(), - transform.translation.xy(), - ); - force.force += thruster_force.force; - force.torque += thruster_force.torque; - *energy -= energy_lose_by; - } + if 5. * PI / 4. < relative_angle && relative_angle < 7. * PI / 4. && relative_pos.y < -0.48 { + let thruster_force = ExternalForce::at_point( + Vec2::new(-force_mult * angle.sin(), force_mult * angle.cos()), + transform.translation.xy(), + transform.translation.xy(), + ); + force.force += thruster_force.force; + force.torque += thruster_force.torque; + *energy -= energy_lose_by; } }