roguelike-game/src/map_indexing_system.rs

23 lines
586 B
Rust
Raw Normal View History

2021-10-29 11:11:17 -04:00
use super::{BlocksTile, Map, Position};
use specs::prelude::*;
pub struct MapIndexingSystem {}
impl<'a> System<'a> for MapIndexingSystem {
type SystemData = (
WriteExpect<'a, Map>,
ReadStorage<'a, Position>,
ReadStorage<'a, BlocksTile>,
);
fn run(&mut self, data: Self::SystemData) {
let (mut map, position, blockers) = data;
map.populate_blocked();
for (position, _blocks) in (&position, &blockers).join() {
let idx = map.xy_idx(position.x, position.y);
map.blocked[idx] = true;
}
}
}