diff options
| author | metamuffin <metamuffin@disroot.org> | 2024-06-17 02:25:55 +0200 | 
|---|---|---|
| committer | metamuffin <metamuffin@disroot.org> | 2024-06-17 02:25:55 +0200 | 
| commit | b8f7115ef39ff8e855f3452e087241f974745438 (patch) | |
| tree | f910caf244338c0e23bd6cdb31254bda8feb9ce9 /server/src/main.rs | |
| parent | b65849bce3fe8ff8d6baebf29728868d4f164827 (diff) | |
| download | hurrycurry-b8f7115ef39ff8e855f3452e087241f974745438.tar hurrycurry-b8f7115ef39ff8e855f3452e087241f974745438.tar.bz2 hurrycurry-b8f7115ef39ff8e855f3452e087241f974745438.tar.zst | |
prime clients and tile rendering
Diffstat (limited to 'server/src/main.rs')
| -rw-r--r-- | server/src/main.rs | 26 | 
1 files changed, 17 insertions, 9 deletions
| diff --git a/server/src/main.rs b/server/src/main.rs index 477595d0..7426e27e 100644 --- a/server/src/main.rs +++ b/server/src/main.rs @@ -53,11 +53,14 @@ async fn main() -> Result<()> {                  let game = game.clone();                  let mut rx = rx.resubscribe();                  info!("{addr} connected"); +                let init = game.write().await.prime_client(id);                  spawn(async move { -                    write -                        .write_all(serde_json::to_string(&PacketC::Joined { id }).unwrap().as_bytes()) -                        .await?; -                    write.write_all(b"\n").await?; +                    for p in init { +                        write +                            .write_all(serde_json::to_string(&p).unwrap().as_bytes()) +                            .await?; +                        write.write_all(b"\n").await?; +                    }                      while let Ok(packet) = rx.recv().await {                          write                              .write_all(serde_json::to_string(&packet).unwrap().as_bytes()) @@ -78,6 +81,7 @@ async fn main() -> Result<()> {                              warn!("client error: {e}");                          }                      } +                    let _ = game.write().await.packet_in(id, PacketS::Leave);                  });              }              r = ws_listener.accept() => { @@ -87,12 +91,15 @@ async fn main() -> Result<()> {                  let game = game.clone();                  let mut rx = rx.resubscribe();                  info!("{addr} connected via ws"); +                let init = game.write().await.prime_client(id);                  spawn(async move { -                    if let Err(e) = write.send(tokio_tungstenite::tungstenite::Message::Text( -                        serde_json::to_string(&PacketC::Joined { id }).unwrap(), -                    )).await { -                        warn!("ws error on init: {e}"); -                        return; +                    for p in init { +                        if let Err(e) = write.send(tokio_tungstenite::tungstenite::Message::Text( +                            serde_json::to_string(&p).unwrap(), +                        )).await { +                            warn!("ws error on init: {e}"); +                            return; +                        }                      }                      while let Ok(packet) = rx.recv().await {                          if let Err(e) = write.send(tokio_tungstenite::tungstenite::Message::Text( @@ -120,6 +127,7 @@ async fn main() -> Result<()> {                              _ => (),                          }                      } +                    let _ = game.write().await.packet_in(id, PacketS::Leave);                  });              }          } | 
