summaryrefslogtreecommitdiff
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.rs34
1 files changed, 14 insertions, 20 deletions
diff --git a/server/src/entity/conveyor.rs b/server/src/entity/conveyor.rs
index 2d56c144..d1594ce7 100644
--- a/server/src/entity/conveyor.rs
+++ b/server/src/entity/conveyor.rs
@@ -16,13 +16,9 @@
*/
use super::EntityT;
-use crate::{
- data::Gamedata,
- game::{interact_effect, Tile},
-};
+use crate::game::{interact_effect, Game};
use anyhow::{anyhow, Result};
-use hurrycurry_protocol::{glam::IVec2, ItemIndex, ItemLocation, PacketC};
-use std::collections::{HashMap, VecDeque};
+use hurrycurry_protocol::{glam::IVec2, ItemIndex, ItemLocation};
#[derive(Debug, Clone)]
pub struct Conveyor {
@@ -35,21 +31,18 @@ pub struct Conveyor {
}
impl EntityT for Conveyor {
- fn tick(
- &mut self,
- data: &Gamedata,
- points: &mut i64,
- packet_out: &mut VecDeque<PacketC>,
- tiles: &mut HashMap<IVec2, Tile>,
- dt: f32,
- ) -> Result<()> {
- let from = tiles
+ fn tick(&mut self, game: &mut Game, dt: f32) -> Result<()> {
+ let from = 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 = tiles.get(t).ok_or(anyhow!("conveyor filter missing"))?;
+ let filter_tile = game
+ .tiles
+ .get(t)
+ .ok_or(anyhow!("conveyor filter missing"))?;
filter_tile.item.as_ref().map(|e| e.kind)
} else if let Some(i) = &self.filter_item {
Some(*i)
@@ -69,20 +62,21 @@ impl EntityT for Conveyor {
}
self.cooldown = 0.;
- let [from, to] = tiles
+ let [from, to] = game
+ .tiles
.get_many_mut([&self.from, &self.to])
.ok_or(anyhow!("conveyor does ends in itself"))?;
interact_effect(
- data,
+ &game.data,
true,
&mut to.item,
ItemLocation::Tile(self.to),
&mut from.item,
ItemLocation::Tile(self.from),
Some(to.kind),
- packet_out,
- points,
+ &mut game.packet_out,
+ &mut game.points,
true,
);
}