diff options
author | metamuffin <metamuffin@disroot.org> | 2024-09-18 15:42:19 +0200 |
---|---|---|
committer | metamuffin <metamuffin@disroot.org> | 2024-09-18 15:42:19 +0200 |
commit | fb6ca2a4b9d78dd80dbdf37b2926d9ede4108e8b (patch) | |
tree | 76b1a77dcd3ae29595caaa6423a18b5ce29e32db /server/src/state.rs | |
parent | e5fdbaadbf01f14290e70c49482e1dce3c9816d8 (diff) | |
download | hurrycurry-fb6ca2a4b9d78dd80dbdf37b2926d9ede4108e8b.tar hurrycurry-fb6ca2a4b9d78dd80dbdf37b2926d9ede4108e8b.tar.bz2 hurrycurry-fb6ca2a4b9d78dd80dbdf37b2926d9ede4108e8b.tar.zst |
translate server messages
Diffstat (limited to 'server/src/state.rs')
-rw-r--r-- | server/src/state.rs | 24 |
1 files changed, 16 insertions, 8 deletions
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 <https://www.gnu.org/licenses/>. */ -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<Vec<PacketC>> { + ) -> Result<Vec<PacketC>, 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) } |