aboutsummaryrefslogtreecommitdiff
path: root/src/client/editor.rs
diff options
context:
space:
mode:
authorArne Dußin2021-02-03 23:00:09 +0100
committerArne Dußin2021-02-03 23:00:09 +0100
commit8d166e628ceb2072e045b9ff6b1dcc1002a34d8e (patch)
tree54ec6a5a6faee2ecb6a98fe308377c0f0e7ad786 /src/client/editor.rs
parent9ab689527b3ede7750579b1a926cf0cf88813463 (diff)
downloadgraf_karto-8d166e628ceb2072e045b9ff6b1dcc1002a34d8e.tar.gz
graf_karto-8d166e628ceb2072e045b9ff6b1dcc1002a34d8e.zip
Add most of the offline functionality back
Diffstat (limited to 'src/client/editor.rs')
-rw-r--r--src/client/editor.rs28
1 files changed, 24 insertions, 4 deletions
diff --git a/src/client/editor.rs b/src/client/editor.rs
index e416339..fb271d4 100644
--- a/src/client/editor.rs
+++ b/src/client/editor.rs
@@ -168,12 +168,32 @@ impl Editor {
fn poll_net(&mut self) {
while let Some(cargo) = self.server().next_packet() {
match cargo {
- Cargo::SetRoom((id, new_room)) => {
- if let Some(mark) = self.map.get_room_mut(id) {
- mark.set_room(new_room);
- } else {
+ Cargo::SetRoom((id, new_room)) => match self.map.get_room_mut(id) {
+ Some(mark) => mark.set_room(new_room),
+ None => {
self.map.add_room(id, new_room);
}
+ },
+ Cargo::SetIcon((id, new_icon)) => match self.map.get_icon_mut(id) {
+ Some(mark) => mark.set_icon(new_icon),
+ None => {
+ self.map.add_icon(id, new_icon);
+ }
+ },
+ Cargo::SetWall((id, new_wall)) => match self.map.get_wall_mut(id) {
+ Some(mark) => mark.set_wall(new_wall),
+ None => {
+ self.map.add_wall(id, new_wall);
+ }
+ },
+ Cargo::ClearAll => self.map.clear(),
+ Cargo::Remove(id) => {
+ self.map.remove(id);
+ }
+ Cargo::AddMapData(_) => unimplemented!(),
+ Cargo::UpdateMapData(_) => unimplemented!(),
+ Cargo::AddIcon(_) | Cargo::AddRoom(_) | Cargo::AddWall(_) => {
+ error!("Packet is only valid in Client -> Server direction")
}
other => error!("Unknown packet received: {:?}", other),
}