draw_system.rs 753 B

1234567891011121314151617181920212223242526
  1. use crate::components::{Position, Renderable};
  2. use crate::map::Map;
  3. use rltk::{Console, Rltk};
  4. use specs::{Join, ReadExpect, ReadStorage, System};
  5. pub struct DrawRenderables<'r> {
  6. pub ctx: &'r mut Rltk,
  7. }
  8. impl<'a, 'r> System<'a> for DrawRenderables<'r> {
  9. type SystemData = (
  10. ReadStorage<'a, Position>,
  11. ReadStorage<'a, Renderable>,
  12. ReadExpect<'a, Map>,
  13. );
  14. fn run(&mut self, (positions, renderables, map): Self::SystemData) {
  15. for (pos, render) in (&positions, &renderables).join() {
  16. let idx = map.xy_idx(pos.x, pos.y);
  17. if map.visible_tiles[idx] {
  18. self.ctx
  19. .set(pos.x, pos.y, render.fg, render.bg, render.glyph);
  20. }
  21. }
  22. }
  23. }