summaryrefslogtreecommitdiff
path: root/server
diff options
context:
space:
mode:
Diffstat (limited to 'server')
-rw-r--r--server/protocol/src/lib.rs3
-rw-r--r--server/registry/src/lobby.rs1
-rw-r--r--server/src/entity/campaign.rs3
-rw-r--r--server/src/server.rs4
4 files changed, 8 insertions, 3 deletions
diff --git a/server/protocol/src/lib.rs b/server/protocol/src/lib.rs
index 4c2ff3f4..d26d8d18 100644
--- a/server/protocol/src/lib.rs
+++ b/server/protocol/src/lib.rs
@@ -28,7 +28,7 @@ pub use glam;
pub mod movement;
pub mod registry;
-pub const VERSION: (u32, u32) = (7, 2);
+pub const VERSION: (u32, u32) = (7, 3);
pub const BINCODE_CONFIG: Configuration<LittleEndian, Varint, Limit<4096>> =
standard().with_limit();
@@ -232,6 +232,7 @@ pub enum PacketC {
kind: Option<TileIndex>,
neighbors: [Option<TileIndex>; 4],
},
+ FlushMap,
Communicate {
player: PlayerID,
message: Option<Message>,
diff --git a/server/registry/src/lobby.rs b/server/registry/src/lobby.rs
index 886443f5..7f2387b8 100644
--- a/server/registry/src/lobby.rs
+++ b/server/registry/src/lobby.rs
@@ -90,6 +90,7 @@ async fn handle_conn(sock: TcpStream, addr: SocketAddr, entries: &[Entry]) -> Re
neighbors: [None, None, None, None],
});
}
+ out.push(PacketC::FlushMap);
out.push(PacketC::SetIngame {
state: true,
lobby: false, // very ironic
diff --git a/server/src/entity/campaign.rs b/server/src/entity/campaign.rs
index 5838d3ce..6683716d 100644
--- a/server/src/entity/campaign.rs
+++ b/server/src/entity/campaign.rs
@@ -68,7 +68,8 @@ impl Entity for Gate {
self.unlocked = self.condition.check(c.scoreboard);
if !self.unlocked {
c.game
- .set_tile(self.location, Some(self.blocker_tile), c.packet_out)
+ .set_tile(self.location, Some(self.blocker_tile), c.packet_out);
+ c.packet_out.push_back(PacketC::FlushMap); // TODO dont send too often
}
}
Ok(())
diff --git a/server/src/server.rs b/server/src/server.rs
index 8257a420..1d57a200 100644
--- a/server/src/server.rs
+++ b/server/src/server.rs
@@ -227,6 +227,7 @@ impl GameServerExt for Game {
}
}
}
+ out.push(PacketC::FlushMap);
out.push(PacketC::Score(self.score.clone()));
out.push(PacketC::SetIngame {
state: true,
@@ -272,6 +273,7 @@ impl GameServerExt for Game {
}
}
+ /// Dont forget to flush
fn set_tile(
&mut self,
tile: IVec2,
@@ -298,7 +300,7 @@ impl GameServerExt for Game {
self.tiles.get(&(tile + IVec2::Y)).map(|e| e.kind),
self.tiles.get(&(tile + IVec2::X)).map(|e| e.kind),
],
- })
+ });
}
}