Compare commits

..

No commits in common. "a7195b9c3dd48010d903f87969b02faba320b2ba" and "32fffd492df11233c8bc6544599271357ffbd4c7" have entirely different histories.

4 changed files with 12 additions and 28 deletions

View File

@ -199,13 +199,11 @@ impl Game {
} }
} }
/// updates the player's current level. This will remove collected artifacts and dead monsters. /// updates the player's current level. This will remove collected artifacts and dead monsters.
/// ticks is measuring the progress of the game even if the player is not moving, player_moved pub fn update_level(&mut self, ticks: u128) {
/// indicates the player moved
pub fn update_level(&mut self, ticks: u128, player_moved: bool) {
let player_pos = &self.player.get_immutable_position(); let player_pos = &self.player.get_immutable_position();
let player_level = player_pos.get_level(); let player_level = player_pos.get_level();
let level = &mut self.levels[player_level]; let level = &mut self.levels[player_level];
level.update(ticks, player_moved, &mut self.player, &mut self.messages); level.update(ticks, &mut self.player, &mut self.messages);
} }
} }

View File

@ -109,7 +109,7 @@ impl Level {
} }
} }
} }
pub fn update(&mut self, ticks: u128, player_moved: bool, player: &mut Player, messages: &mut Vec<String>) { pub fn update(&mut self, ticks: u128, player: &mut Player, messages: &mut Vec<String>) {
for (index, a) in &mut self.artifacts.iter().enumerate() { for (index, a) in &mut self.artifacts.iter().enumerate() {
if a.was_collected() { if a.was_collected() {
self.artifacts.remove(index); self.artifacts.remove(index);
@ -120,8 +120,7 @@ impl Level {
if self.monsters[index].is_dead() { if self.monsters[index].is_dead() {
continue; continue;
} }
// if the player moved, the monsters move as well all the time if ticks % self.monsters[index].get_ticks_between_steps() != 0 {
if !player_moved && ticks % self.monsters[index].get_ticks_between_steps() != 0 {
continue; continue;
} }
loop { loop {

View File

@ -132,7 +132,6 @@ fn main() -> Result<()> {
messages_area, messages_area,
); );
})?; })?;
let mut player_moved = false;
if event::poll(std::time::Duration::from_millis(FRAME_LENGTH))? { if event::poll(std::time::Duration::from_millis(FRAME_LENGTH))? {
if let event::Event::Key(key) = event::read()? { if let event::Event::Key(key) = event::read()? {
if key.kind == KeyEventKind::Press && key.code == KeyCode::Char('v') { if key.kind == KeyEventKind::Press && key.code == KeyCode::Char('v') {
@ -150,22 +149,10 @@ fn main() -> Result<()> {
} }
if key.kind == KeyEventKind::Press { if key.kind == KeyEventKind::Press {
let new_pos = match key.code { let new_pos = match key.code {
KeyCode::Left => { KeyCode::Left => { game.move_player(-1, 0) }
player_moved = true; KeyCode::Right => { game.move_player(1, 0) }
game.move_player(-1, 0) KeyCode::Up => { game.move_player(0, -1) }
} KeyCode::Down => { game.move_player(0, 1) }
KeyCode::Right => {
player_moved = true;
game.move_player(1, 0)
}
KeyCode::Up => {
player_moved = true;
game.move_player(0, -1)
}
KeyCode::Down => {
player_moved = true;
game.move_player(0, 1)
}
_ => { (0, 0) } _ => { (0, 0) }
}; };
if !game.player_fights_monster() { if !game.player_fights_monster() {
@ -176,7 +163,7 @@ fn main() -> Result<()> {
} }
} }
} }
game.update_level(ticks, player_moved); game.update_level(ticks);
if game.get_game_state() != GameState::RUNNING { if game.get_game_state() != GameState::RUNNING {
break; break;
} }

View File

@ -93,7 +93,7 @@ impl crate::monster::LowerDaemon {
symbol: String::from("d"), symbol: String::from("d"),
color: Color::Black, color: Color::Black,
experience_gain: 104, experience_gain: 104,
ticks_between_steps: 30, ticks_between_steps: 5,
monster_stats, monster_stats,
} }
} }
@ -156,7 +156,7 @@ impl Rat {
symbol: String::from("R"), symbol: String::from("R"),
color: Color::Black, color: Color::Black,
experience_gain: 26, experience_gain: 26,
ticks_between_steps: 25, ticks_between_steps: 5,
monster_stats, monster_stats,
} }
} }
@ -214,7 +214,7 @@ impl Orc {
symbol: String::from("O"), symbol: String::from("O"),
color: Color::DarkGray, color: Color::DarkGray,
experience_gain: 63, experience_gain: 63,
ticks_between_steps: 50, ticks_between_steps: 10,
monster_stats, monster_stats,
} }
} }