diff options
Diffstat (limited to 'server/src/game.rs')
-rw-r--r-- | server/src/game.rs | 16 |
1 files changed, 7 insertions, 9 deletions
diff --git a/server/src/game.rs b/server/src/game.rs index 7609b965..e8d307db 100644 --- a/server/src/game.rs +++ b/server/src/game.rs @@ -18,7 +18,7 @@ use crate::{ customer::DemandState, data::Gamedata, - entity::{construct_entity, DynEntity}, + entity::{Entity, EntityT}, interaction::{interact, tick_slot, InteractEffect, TickEffect}, protocol::{ ItemIndex, ItemLocation, Message, PacketC, PacketS, PlayerID, RecipeIndex, TileIndex, @@ -69,7 +69,7 @@ pub struct Game { packet_out: VecDeque<PacketC>, demand: Option<DemandState>, pub points: i64, - entities: Vec<DynEntity>, + entities: Vec<Entity>, end: Option<Instant>, } @@ -117,12 +117,7 @@ impl Game { self.data = gamedata.into(); self.points = 0; self.end = timer.map(|dur| Instant::now() + dur); - self.entities = self - .data - .entities - .iter() - .map(|decl| construct_entity(decl)) - .collect(); + self.entities = self.data.entities.clone(); for (&p, (tile, item)) in &self.data.initial_map { self.tiles.insert( @@ -364,6 +359,7 @@ impl Game { None, &mut self.packet_out, &mut self.points, + false, ) } else { let player = self @@ -381,6 +377,7 @@ impl Game { Some(tile.kind), &mut self.packet_out, &mut self.points, + false, ) } } @@ -523,11 +520,12 @@ pub fn interact_effect( this_tile_kind: Option<TileIndex>, packet_out: &mut VecDeque<PacketC>, points: &mut i64, + automated: bool, ) { let this_had_item = this.is_some(); let other_had_item = other.is_some(); - if let Some(effect) = interact(&data, edge, this_tile_kind, this, other, points) { + if let Some(effect) = interact(&data, edge, this_tile_kind, this, other, points, automated) { match effect { InteractEffect::Put => packet_out.push_back(PacketC::MoveItem { from: other_loc, |