From 6ba4e37bab2c30ecfca7d7688cf0f9658c7d032c Mon Sep 17 00:00:00 2001 From: Sofia Date: Mon, 3 Aug 2026 19:51:49 +0300 Subject: [PATCH] Send game options to player at connection --- rust/src/game/opts.rs | 2 +- rust/src/net/network_manager.rs | 3 ++- rust/src/net/protocol.rs | 4 ++++ 3 files changed, 7 insertions(+), 2 deletions(-) diff --git a/rust/src/game/opts.rs b/rust/src/game/opts.rs index 07efeae..743e71f 100644 --- a/rust/src/game/opts.rs +++ b/rust/src/game/opts.rs @@ -2,7 +2,7 @@ use std::collections::HashMap; use serde::{Deserialize, Serialize}; -#[derive(Debug)] +#[derive(Debug, Clone, Serialize, Deserialize)] pub struct GameOptions { pub values: HashMap, } diff --git a/rust/src/net/network_manager.rs b/rust/src/net/network_manager.rs index 2d8545f..1b08d67 100644 --- a/rust/src/net/network_manager.rs +++ b/rust/src/net/network_manager.rs @@ -12,7 +12,7 @@ use crate::{ announcer::Announcement, game::{ Game, GameManager, NetPlayer, - opts::{GameOption, GameOptionValue}, + opts::{GameOption, GameOptionValue, GameOptions}, }, game_settings::GameSettingsManager, net::{net_stats::Stats, util::NetVector3}, @@ -321,6 +321,7 @@ pub enum Package { NewPlayer(NetPlayer), PlayerLeft(NetPlayer), SetTeam(u16, u8), + GameOptions(GameOptions), GameOptionChanged(GameOption, GameOptionValue), ChatMessage(u16, String), diff --git a/rust/src/net/protocol.rs b/rust/src/net/protocol.rs index 6c1f9c5..deea49d 100644 --- a/rust/src/net/protocol.rs +++ b/rust/src/net/protocol.rs @@ -264,6 +264,10 @@ impl NetworkManager { self_id, ), ); + peer.send_reliable( + &connection.address, + Package::GameOptions(game.bind().opts.clone()), + ); peer.broadcast_reliable(Package::NewPlayer( game.bind().find_player(self_id).unwrap().clone().into(), ));