23 lines
586 B
Rust
23 lines
586 B
Rust
|
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;
|
||
|
}
|
||
|
}
|
||
|
}
|