From fb6ca2a4b9d78dd80dbdf37b2926d9ede4108e8b Mon Sep 17 00:00:00 2001 From: metamuffin Date: Wed, 18 Sep 2024 15:42:19 +0200 Subject: translate server messages --- server/src/state.rs | 24 ++++++++++++++++-------- 1 file changed, 16 insertions(+), 8 deletions(-) (limited to 'server/src/state.rs') diff --git a/server/src/state.rs b/server/src/state.rs index 09e7031e..9086248a 100644 --- a/server/src/state.rs +++ b/server/src/state.rs @@ -15,8 +15,8 @@ along with this program. If not, see . */ -use crate::{server::Server, ConnectionID}; -use anyhow::{bail, Result}; +use crate::{server::Server, tre, trm, ConnectionID, TrError}; +use anyhow::Result; use hurrycurry_protocol::{Message, PacketC, PacketS, PlayerID}; use log::{debug, trace}; @@ -41,10 +41,10 @@ impl Server { &mut self, conn: ConnectionID, packet: PacketS, - ) -> Result> { + ) -> Result, TrError> { if let Some(p) = get_packet_player(&packet) { if !self.connections.entry(conn).or_default().contains(&p) { - bail!("Packet sent to a player that is not owned by this connection."); + return Err(tre!("s.state.packet_sender_invalid")); } } let mut replies = Vec::new(); @@ -58,7 +58,8 @@ impl Server { Ok(packets) => return Ok(packets), Err(e) => { return Ok(vec![PacketC::ServerMessage { - text: format!("{e}"), + message: Message::Text(format!("{e}")), // TODO localize + error: true, }]); } } @@ -68,7 +69,7 @@ impl Server { } PacketS::Join { .. } => { if self.connections.entry(conn).or_default().len() > 8 { - bail!("Players-per-connection limit exceeded.") + return Err(tre!("s.state.conn_too_many_players")); } } _ => (), @@ -84,10 +85,17 @@ impl Server { if self.count_chefs() == 0 && !self.game.lobby { self.tx .send(PacketC::ServerMessage { - text: "Game was aborted due to a lack of players".to_string(), + message: trm!("s.state.abort_no_players"), + error: false, }) .ok(); - self.load(self.index.generate("lobby").await?, None); + self.load( + self.index + .generate("lobby") + .await + .map_err(|m| tre!("s.error.map_load", s = format!("{m}")))?, + None, + ); } Ok(replies) } -- cgit v1.2.3-70-g09d2