~starkingdoms/starkingdoms

e21a77a31020e12aaaee1b12bf60ddd346fa0236 — core 1 year, 8 months ago 6cc3797
server config file part 2
2 files changed, 55 insertions(+), 87 deletions(-)

M server/src/config.rs
M server/src/main.rs
M server/src/config.rs => server/src/config.rs +1 -1
@@ 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)]

M server/src/main.rs => server/src/main.rs +54 -86
@@ 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<StkConfig> = OnceLock::new();
#[inline]
pub fn server_config() -> StkConfig {


@@ 173,13 166,16 @@ fn main() {
}

fn setup_integration_parameters(mut context: ResMut<RapierContext>) {
    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;
            }
        }