aboutsummaryrefslogtreecommitdiff
path: root/src/entities.rs
diff options
context:
space:
mode:
authorGuillaume Pasquet <dev@etenil.net>2020-01-02 17:28:15 +0000
committerGuillaume Pasquet <dev@etenil.net>2020-01-02 17:28:15 +0000
commit518ad5caf2cbf313cb784d9fd1a51632fe600fae (patch)
treedca06c8733f24550155af486d96846423f5ac657 /src/entities.rs
parentf14e0005f082b5d4cbca0f2e0d501ad15da3c856 (diff)
Fix for invisible enemies
- Don't double-count visibility - Set enemies visibility with LOS - Set dirty flag when enemies are revealed
Diffstat (limited to 'src/entities.rs')
-rw-r--r--src/entities.rs10
1 files changed, 5 insertions, 5 deletions
diff --git a/src/entities.rs b/src/entities.rs
index 430e37a..4a8cd7f 100644
--- a/src/entities.rs
+++ b/src/entities.rs
@@ -41,7 +41,6 @@ pub struct Character {
luck: i32,
xp: i32,
tile: Tile,
- visible: bool,
}
pub trait Enemy {
@@ -114,11 +113,14 @@ impl Entity for Character {
}
fn visibility(&mut self, visible: bool) {
- self.visible = visible;
+ if visible != self.is_visible() {
+ self.dirty = true;
+ }
+ self.tile.visibility(visible)
}
fn is_visible(&self) -> bool {
- self.visible
+ self.tile.is_visible()
}
}
@@ -146,7 +148,6 @@ impl Enemy for Character {
previous_location: location,
tile: Tile::from(TileType::Character(tile_str)),
dirty: false,
- visible: false,
}
}
@@ -181,7 +182,6 @@ impl Player for Character {
true, // player is visible by default
),
dirty: false,
- visible: true,
}
}