From 07cc6d8919193c38cc13b2567ede5a510938db18 Mon Sep 17 00:00:00 2001 From: troido Date: Fri, 21 Feb 2020 17:49:50 +0100 Subject: players can now go to different rooms --- src/systems/migrate.rs | 37 +++++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) create mode 100644 src/systems/migrate.rs (limited to 'src/systems/migrate.rs') diff --git a/src/systems/migrate.rs b/src/systems/migrate.rs new file mode 100644 index 0000000..aecffd0 --- /dev/null +++ b/src/systems/migrate.rs @@ -0,0 +1,37 @@ + +use specs::{ + ReadStorage, + Read, + Write, + System, + Join +}; + +use crate::components::{Player, Position, Moved, RoomExit}; +use crate::resources::{Emigration, Ground}; + + +pub struct Migrate; +impl <'a> System<'a> for Migrate { + type SystemData = ( + Write<'a, Emigration>, + Read<'a, Ground>, + ReadStorage<'a, Player>, + ReadStorage<'a, Position>, + ReadStorage<'a, Moved>, + ReadStorage<'a, RoomExit>, + + ); + fn run(&mut self, (mut emigration, ground, players, positions, moved, exits): Self::SystemData) { + + for (player, position, _moved) in (&players, &positions, &moved).join() { + for ent in ground.cells.get(&position.pos).unwrap() { + if let Some(exit) = exits.get(*ent) { + emigration.emigrants.push((player.id.clone(), exit.destination.clone())); + break; + } + } + } + } +} + -- cgit