gui, inventory, symmetrical shadowcasting, bugfixes
This commit is contained in:
parent
5b7eac3165
commit
986adb6fce
10 changed files with 355 additions and 71 deletions
|
|
@ -1,5 +1,5 @@
|
|||
use super::{Map, Player, Position, Viewshed};
|
||||
use rltk::{field_of_view, Point};
|
||||
use rltk::{FieldOfViewAlg::SymmetricShadowcasting, Point};
|
||||
use specs::prelude::*;
|
||||
|
||||
pub struct VisibilitySystem {}
|
||||
|
|
@ -19,8 +19,11 @@ impl<'a> System<'a> for VisibilitySystem {
|
|||
for (ent, viewshed, pos) in (&entities, &mut viewshed, &pos).join() {
|
||||
if viewshed.dirty {
|
||||
viewshed.dirty = false;
|
||||
viewshed.visible_tiles.clear();
|
||||
viewshed.visible_tiles = field_of_view(Point::new(pos.x, pos.y), viewshed.range, &*map);
|
||||
// FIXME: SymmetricShadowcasting seems to be responsible for an infrequent crash --
|
||||
// but it could be unrelated to the FieldOfViewAlg being used. Needs some more testing!
|
||||
// Appeared first after switching, but can't seem to reproduce it.
|
||||
viewshed.visible_tiles =
|
||||
SymmetricShadowcasting.field_of_view(Point::new(pos.x, pos.y), viewshed.range, &*map);
|
||||
viewshed.visible_tiles.retain(|p| p.x >= 0 && p.x < map.width && p.y >= 0 && p.y < map.height);
|
||||
|
||||
// If this is the player, reveal what they can see
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue