aboutsummaryrefslogtreecommitdiff
path: root/server/src/entity/conveyor.rs
diff options
context:
space:
mode:
Diffstat (limited to 'server/src/entity/conveyor.rs')
-rw-r--r--server/src/entity/conveyor.rs29
1 files changed, 15 insertions, 14 deletions
diff --git a/server/src/entity/conveyor.rs b/server/src/entity/conveyor.rs
index b370356c..f7f091c7 100644
--- a/server/src/entity/conveyor.rs
+++ b/server/src/entity/conveyor.rs
@@ -1,5 +1,3 @@
-use std::collections::VecDeque;
-
/*
Hurry Curry! - a game about cooking
Copyright 2024 metamuffin
@@ -17,10 +15,10 @@ use std::collections::VecDeque;
along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
-use super::EntityT;
-use crate::game::{interact_effect, Game};
+use super::{EntityContext, EntityT};
+use crate::server::interact_effect;
use anyhow::{anyhow, Result};
-use hurrycurry_protocol::{glam::IVec2, ItemIndex, ItemLocation, PacketC};
+use hurrycurry_protocol::{glam::IVec2, ItemIndex, ItemLocation};
#[derive(Debug, Clone)]
pub struct Conveyor {
@@ -33,15 +31,17 @@ pub struct Conveyor {
}
impl EntityT for Conveyor {
- fn tick(&mut self, game: &mut Game, packet_out: &mut VecDeque<PacketC>, dt: f32) -> Result<()> {
- let from = game
+ fn tick(&mut self, c: EntityContext) -> Result<()> {
+ let from = c
+ .game
.tiles
.get(&self.from)
.ok_or(anyhow!("conveyor from missing"))?;
if let Some(from_item) = from.item.as_ref() {
let filter = if let Some(t) = &self.filter_tile {
- let filter_tile = game
+ let filter_tile = c
+ .game
.tiles
.get(t)
.ok_or(anyhow!("conveyor filter missing"))?;
@@ -56,28 +56,29 @@ impl EntityT for Conveyor {
}
}
- self.cooldown += dt;
+ self.cooldown += c.dt;
if self.cooldown < self.max_cooldown {
return Ok(());
}
self.cooldown = 0.;
- let [from, to] = game
+ let [from, to] = c
+ .game
.tiles
.get_many_mut([&self.from, &self.to])
.ok_or(anyhow!("conveyor does ends in itself"))?;
interact_effect(
- &game.data,
+ &c.game.data,
true,
&mut to.item,
ItemLocation::Tile(self.to),
&mut from.item,
ItemLocation::Tile(self.from),
Some(to.kind),
- packet_out,
- &mut game.score,
- &mut game.score_changed,
+ c.packet_out,
+ &mut c.game.score,
+ c.score_changed,
true,
);
}