|
@@ -17,8 +17,7 @@ impl<'a> System<'a> for VisibilitySystem {
|
|
let (mut map, entities, mut viewshed, pos, player) = data;
|
|
let (mut map, entities, mut viewshed, pos, player) = data;
|
|
|
|
|
|
for (ent,viewshed,pos) in (&entities, &mut viewshed, &pos).join() {
|
|
for (ent,viewshed,pos) in (&entities, &mut viewshed, &pos).join() {
|
|
- if viewshed.dirty {
|
|
|
|
- for t in map.visible_tiles.iter_mut() { *t = false };
|
|
|
|
|
|
+ if viewshed.dirty {
|
|
viewshed.dirty = false;
|
|
viewshed.dirty = false;
|
|
viewshed.visible_tiles.clear();
|
|
viewshed.visible_tiles.clear();
|
|
viewshed.visible_tiles = field_of_view(Point::new(pos.x, pos.y), viewshed.range, &*map);
|
|
viewshed.visible_tiles = field_of_view(Point::new(pos.x, pos.y), viewshed.range, &*map);
|
|
@@ -26,6 +25,7 @@ impl<'a> System<'a> for VisibilitySystem {
|
|
// If this is the player, reveal what they can see
|
|
// If this is the player, reveal what they can see
|
|
let _p : Option<&Player> = player.get(ent);
|
|
let _p : Option<&Player> = player.get(ent);
|
|
if let Some(_p) = _p {
|
|
if let Some(_p) = _p {
|
|
|
|
+ for t in map.visible_tiles.iter_mut() { *t = false };
|
|
for vis in viewshed.visible_tiles.iter() {
|
|
for vis in viewshed.visible_tiles.iter() {
|
|
let idx = map.xy_idx(vis.x, vis.y);
|
|
let idx = map.xy_idx(vis.x, vis.y);
|
|
map.revealed_tiles[idx] = true;
|
|
map.revealed_tiles[idx] = true;
|