diff options
author | metamuffin <metamuffin@disroot.org> | 2024-06-29 19:04:57 +0200 |
---|---|---|
committer | metamuffin <metamuffin@disroot.org> | 2024-06-29 19:04:57 +0200 |
commit | fd2c907274095031917e6279db436186d95d74fc (patch) | |
tree | 62e064f445e791c78ada2b68f7e84220f33e76fb /server/src/state.rs | |
parent | 5f361ffedfd132c5a900ca8dcb1b25fcb21a2e33 (diff) | |
download | hurrycurry-fd2c907274095031917e6279db436186d95d74fc.tar hurrycurry-fd2c907274095031917e6279db436186d95d74fc.tar.bz2 hurrycurry-fd2c907274095031917e6279db436186d95d74fc.tar.zst |
optionally persist messages
Diffstat (limited to 'server/src/state.rs')
-rw-r--r-- | server/src/state.rs | 32 |
1 files changed, 24 insertions, 8 deletions
diff --git a/server/src/state.rs b/server/src/state.rs index ae3388b6..da05f33a 100644 --- a/server/src/state.rs +++ b/server/src/state.rs @@ -21,6 +21,9 @@ enum Command { #[arg(default_value = "small-default-default")] spec: String, }, + Effect { + name: String, + }, End, } @@ -45,13 +48,17 @@ impl State { pub async fn packet_in(&mut self, player: PlayerID, packet: PacketS) -> Result<()> { match &packet { PacketS::Communicate { - message: Some(Message::Text(message)), - } if let Some(command) = message.strip_prefix("/") => { - self.handle_command(Command::try_parse_from( - shlex::split(command) - .ok_or(anyhow!("quoting invalid"))? - .into_iter(), - )?) + message: Some(Message::Text(text)), + persist: false, + } if let Some(command) = text.strip_prefix("/") => { + self.handle_command( + player, + Command::try_parse_from( + shlex::split(command) + .ok_or(anyhow!("quoting invalid"))? + .into_iter(), + )?, + ) .await?; return Ok(()); } @@ -61,7 +68,7 @@ impl State { Ok(()) } - async fn handle_command(&mut self, command: Command) -> Result<()> { + async fn handle_command(&mut self, player: PlayerID, command: Command) -> Result<()> { match command { Command::Start { spec } => { let data = self.index.generate(spec)?; @@ -71,6 +78,15 @@ impl State { self.game .load(self.index.generate("lobby-none-none".to_string())?); } + Command::Effect { name } => { + self.tx + .send(PacketC::Communicate { + player, + message: Some(Message::Effect(name)), + persist: false, + }) + .ok(); + } } Ok(()) } |