diff options
Diffstat (limited to 'server/bot/src')
-rw-r--r-- | server/bot/src/algos/dishwasher.rs | 18 |
1 files changed, 15 insertions, 3 deletions
diff --git a/server/bot/src/algos/dishwasher.rs b/server/bot/src/algos/dishwasher.rs index bfa903e5..bfe57d0c 100644 --- a/server/bot/src/algos/dishwasher.rs +++ b/server/bot/src/algos/dishwasher.rs @@ -1,5 +1,6 @@ /* Hurry Curry! - a game about cooking + Copyright 2024 Miner34 Copyright 2024 metamuffin This program is free software: you can redistribute it and/or modify @@ -24,12 +25,20 @@ use hurrycurry_protocol::{glam::IVec2, ItemIndex, PlayerID}; pub struct DishWasher { path: Option<(Path, IVec2, f32)>, cooldown: f32, + dirty_plate: Option<ItemIndex>, } type LogicRes<Out = ()> = Result<Out, ()>; impl BotAlgo for DishWasher { fn tick(&mut self, me: PlayerID, game: &Game, dt: f32) -> BotInput { + if let None = self.dirty_plate { + self.dirty_plate = game.data.get_item_by_name("dirty-plate"); + if let None = self.dirty_plate { + return BotInput::default(); + } + } + let Some(player) = game.players.get(&me) else { return BotInput::default(); }; @@ -86,11 +95,14 @@ impl State for DishWasher { impl Context<'_, DishWasher> { fn update(&mut self) -> LogicRes { - if let Some(pos) = self.find_item_on_map(ItemIndex(0)) { + 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(ItemIndex(0)) { - self.interact_with(self.find_empty_interactable_tile_by_name("sink").unwrap(), 2.0)?; + if self.is_hand_item(self.state.dirty_plate.unwrap()) { + self.interact_with( + self.find_empty_interactable_tile_by_name("sink").unwrap(), + 2.0, + )?; } self.assert_hand_is_clear()?; Ok(()) |