aboutsummaryrefslogtreecommitdiff
path: root/src/client/map
diff options
context:
space:
mode:
Diffstat (limited to 'src/client/map')
-rw-r--r--src/client/map/mod.rs4
-rw-r--r--src/client/map/room_mark.rs6
2 files changed, 10 insertions, 0 deletions
diff --git a/src/client/map/mod.rs b/src/client/map/mod.rs
index 27cafc4..9589e59 100644
--- a/src/client/map/mod.rs
+++ b/src/client/map/mod.rs
@@ -166,6 +166,10 @@ impl Map {
pub fn rooms(&self) -> &StableVec<RoomMark> {
&self.rooms
}
+ /// Get a room with the given id mutably, in case it exists.
+ pub fn get_room_mut(&mut self, id: usize) -> Option<&mut RoomMark> {
+ self.rooms.get_mut(id)
+ }
/// Get the walls of this map.
pub fn walls(&self) -> &StableVec<WallMark> {
diff --git a/src/client/map/room_mark.rs b/src/client/map/room_mark.rs
index a9777fb..5c0ca98 100644
--- a/src/client/map/room_mark.rs
+++ b/src/client/map/room_mark.rs
@@ -29,6 +29,12 @@ impl RoomMark {
}
}
+ /// Replace the room this mark describes with the new room.
+ pub fn set_room(&mut self, room: Room) {
+ self.room = room;
+ self.retriangulate();
+ }
+
/* When the internal polygon changes, it must be retriangulated to be drawn on the screen
* properly, so this function must be called any time that happens.
*/