aboutsummaryrefslogtreecommitdiff
path: root/server/src/entity/item_portal.rs
diff options
context:
space:
mode:
Diffstat (limited to 'server/src/entity/item_portal.rs')
-rw-r--r--server/src/entity/item_portal.rs13
1 files changed, 7 insertions, 6 deletions
diff --git a/server/src/entity/item_portal.rs b/server/src/entity/item_portal.rs
index 8eda7a3c..3ea33fa6 100644
--- a/server/src/entity/item_portal.rs
+++ b/server/src/entity/item_portal.rs
@@ -17,7 +17,7 @@
*/
use super::{Entity, EntityContext};
use crate::interaction::interact;
-use anyhow::{anyhow, Result};
+use anyhow::{bail, Result};
use hurrycurry_protocol::{glam::IVec2, ItemLocation};
#[derive(Debug, Default, Clone)]
@@ -28,11 +28,12 @@ pub struct ItemPortal {
impl Entity for ItemPortal {
fn tick(&mut self, c: EntityContext) -> Result<()> {
- let [from, to] = c
- .game
- .tiles
- .get_many_mut([&self.from, &self.to])
- .ok_or(anyhow!("conveyor does ends in itself"))?;
+ if self.from == self.to {
+ bail!("item portal ends in itself")
+ }
+ let [Some(from), Some(to)] = c.game.tiles.get_many_mut([&self.from, &self.to]) else {
+ bail!("at least one item portal end not on map");
+ };
if from.item.is_some() {
interact(