diff options
Diffstat (limited to 'server/bot/src/algos/dishwasher.rs')
-rw-r--r-- | server/bot/src/algos/dishwasher.rs | 17 |
1 files changed, 10 insertions, 7 deletions
diff --git a/server/bot/src/algos/dishwasher.rs b/server/bot/src/algos/dishwasher.rs index 17698524..2bd1c9b2 100644 --- a/server/bot/src/algos/dishwasher.rs +++ b/server/bot/src/algos/dishwasher.rs @@ -95,16 +95,19 @@ impl State for DishWasher { impl Context<'_, DishWasher> { fn update(&mut self) -> LogicRes { - if let Some(pos) = self.find_item_on_map(self.state.dirty_plate.unwrap()) { - self.assert_tile_is_clear(pos)?; - } - if self.is_hand_item(self.state.dirty_plate.unwrap()) { - // TODO clear sink first but dont "steal" items from others working there - if let Some(sink) = self.find_empty_interactable_tile_by_name("sink") { + if let Some(sink) = self.find_empty_interactable_tile_by_name("sink") { + if let Some(pos) = self.find_item_on_map(self.state.dirty_plate.unwrap()) { + self.assert_tile_is_clear(pos)?; + } + if self.is_hand_item(self.state.dirty_plate.unwrap()) { + // TODO clear sink first but dont "steal" items from others working there self.interact_with(sink, 2.0)?; + } else { + self.assert_hand_is_clear()?; } + } else { + self.assert_hand_is_clear()?; } - self.assert_hand_is_clear()?; Ok(()) } } |