summaryrefslogtreecommitdiff
path: root/server/src/entity
diff options
context:
space:
mode:
authormetamuffin <metamuffin@disroot.org>2024-09-20 16:13:40 +0200
committermetamuffin <metamuffin@disroot.org>2024-09-20 16:13:45 +0200
commitb31d4b9fa1c8e1a17139e9aaf03d18c9c27e0c18 (patch)
tree61574c69286f482fcfbbb25b87f735524fa9d69a /server/src/entity
parent6b93fb43e858e1b979d8539b9b9cde3edfbfa195 (diff)
downloadhurrycurry-b31d4b9fa1c8e1a17139e9aaf03d18c9c27e0c18.tar
hurrycurry-b31d4b9fa1c8e1a17139e9aaf03d18c9c27e0c18.tar.bz2
hurrycurry-b31d4b9fa1c8e1a17139e9aaf03d18c9c27e0c18.tar.zst
find any recipe tile in tutorial; fixes #146
Diffstat (limited to 'server/src/entity')
-rw-r--r--server/src/entity/tutorial.rs16
1 files changed, 10 insertions, 6 deletions
diff --git a/server/src/entity/tutorial.rs b/server/src/entity/tutorial.rs
index 33a2397c..a49c5993 100644
--- a/server/src/entity/tutorial.rs
+++ b/server/src/entity/tutorial.rs
@@ -247,12 +247,14 @@ impl<'a> StepContext<'a> {
speed,
..
} => {
- if let Some(pos) = self.find_tile(*tile) {
- if let Some(item) = &self.ent.game.tiles.get(&pos).unwrap().item {
+ for (pos, tile) in self.ent.game.tiles.iter().filter(|(_, t)| t.kind == *tile) {
+ if let Some(item) = &tile.item {
if item.kind == *input {
- return Err((Some(pos), trm!("s.tutorial.hold_interact")));
+ return Err((Some(*pos), trm!("s.tutorial.hold_interact")));
}
}
+ }
+ if let Some(pos) = self.find_tile(*tile) {
self.aquire_item(*input)?;
return Err((
Some(pos),
@@ -265,12 +267,14 @@ impl<'a> StepContext<'a> {
input,
..
} => {
- if let Some(pos) = self.find_tile(*tile) {
- if let Some(item) = &self.ent.game.tiles.get(&pos).unwrap().item {
+ for (pos, tile) in self.ent.game.tiles.iter().filter(|(_, t)| t.kind == *tile) {
+ if let Some(item) = &tile.item {
if item.kind == *input {
- return Err((Some(pos), trm!("s.tutorial.wait_finish")));
+ return Err((Some(*pos), trm!("s.tutorial.wait_finish")));
}
}
+ }
+ if let Some(pos) = self.find_tile(*tile) {
self.aquire_item(*input)?;
return Err((Some(pos), trm!("s.tutorial.put_on", t = *tile)));
}