diff options
Diffstat (limited to 'server/src/entity/item_portal.rs')
| -rw-r--r-- | server/src/entity/item_portal.rs | 25 | 
1 files changed, 10 insertions, 15 deletions
| diff --git a/server/src/entity/item_portal.rs b/server/src/entity/item_portal.rs index f63ff274..be6acd06 100644 --- a/server/src/entity/item_portal.rs +++ b/server/src/entity/item_portal.rs @@ -15,11 +15,10 @@      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, ItemLocation, PacketC}; -use std::collections::VecDeque; +use hurrycurry_protocol::{glam::IVec2, ItemLocation};  #[derive(Debug, Default, Clone)]  pub struct ItemPortal { @@ -28,29 +27,25 @@ pub struct ItemPortal {  }  impl EntityT for ItemPortal { -    fn tick( -        &mut self, -        game: &mut Game, -        packet_out: &mut VecDeque<PacketC>, -        _dt: f32, -    ) -> Result<()> { -        let [from, to] = game +    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 from.item.is_some() {              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,              );          } | 
