From 5265682c5310ddb89cd976b59f817f9f6d90e0ef Mon Sep 17 00:00:00 2001 From: Joachim Lusiardi Date: Sun, 14 Jan 2024 12:17:23 +0100 Subject: [PATCH] Show last message on death --- src/game.rs | 10 +++++----- src/level.rs | 8 ++++++-- src/main.rs | 4 ++-- 3 files changed, 13 insertions(+), 9 deletions(-) diff --git a/src/game.rs b/src/game.rs index 017125f..34495d4 100644 --- a/src/game.rs +++ b/src/game.rs @@ -130,14 +130,14 @@ impl Game { (dx, dy) = (0, 0); let (next_level, x, y) = self.next_start(); player_level = next_level; - self.messages.insert(0, format!("you climb down to level {}.", next_level)); + self.messages.insert(0, format!("You climb down to level {}.", next_level)); self.get_mutable_player().get_position().set(next_level, x, y); } StructureElement::StairUp => { (dx, dy) = (0, 0); let (next_level, x, y) = self.prev_end(); player_level = next_level; - self.messages.insert(0, format!("you climb up to level {}.", next_level)); + self.messages.insert(0, format!("You climb up to level {}.", next_level)); self.get_mutable_player().get_position().set(next_level, x, y); } _ => {} @@ -167,15 +167,15 @@ impl Game { if defense.0 { damage = damage.saturating_sub(defense.1); } - self.messages.insert(0, format!("attack on {} successful with {} damage.", m.get_name(), damage).to_string()); + self.messages.insert(0, format!("Attack on {} successful with {} damage.", m.get_name(), damage).to_string()); m.decrease_life(damage as usize); } else { - self.messages.insert(0, format!("attack on {} failed.", m.get_name()).to_string()); + self.messages.insert(0, format!("Attack on {} failed.", m.get_name()).to_string()); } // monster died, player gains experience if m.is_dead() { self.player.gain_experience(m.get_experience_gain()); - self.messages.insert(0, format!("you killed the {}..", m.get_name()).to_string()); + self.messages.insert(0, format!("You killed the {}.", m.get_name()).to_string()); } return m.is_dead(); } diff --git a/src/level.rs b/src/level.rs index 6ddc42b..05fb81e 100644 --- a/src/level.rs +++ b/src/level.rs @@ -141,10 +141,14 @@ impl Level { if defense.0 { damage = damage.saturating_sub(defense.1); } - messages.insert(0, format!("attack from {} successful with {} damage.", self.monsters[index].get_name(), damage).to_string()); player.decrease_life(damage); + if player.is_dead() { + messages.insert(0, format!("Attack from {} killed you.", self.monsters[index].get_name()).to_string()); + } else { + messages.insert(0, format!("Attack from {} successful with {} damage.", self.monsters[index].get_name(), damage).to_string()); + } } else { - messages.insert(0, format!("attack from {} failed.", self.monsters[index].get_name()).to_string()); + messages.insert(0, format!("Attack from {} failed.", self.monsters[index].get_name()).to_string()); } if !player.is_dead() { self.monsters[index].get_position().change(-dx, -dy); diff --git a/src/main.rs b/src/main.rs index 71cbf6d..88e0d48 100644 --- a/src/main.rs +++ b/src/main.rs @@ -184,13 +184,13 @@ fn main() -> Result<()> { "Quitting is for cowards! You'll better try again!".to_string() } GameState::LOST => { - "Sorry, you died in the dungeon. Better luck next time!".to_string() + format!("Sorry, you died in the dungeon. Better luck next time!\nLast message:\n{}", game.messages[0]).to_string() } GameState::WON => { "Congratulation! You mastered your way through the dungeon and won the game.".to_string() } }; - text += format!("\nYou gained {} experience.", game.get_player().get_experience()).as_str(); + text += format!("\n\nYou gained {} experience.", game.get_player().get_experience()).as_str(); text += format!("\nYou collected {} gold.", game.get_player().get_gold()).as_str(); text += format!("\nYou played {} seconds.", playtime.as_secs()).as_str(); let paragraph = Paragraph::new(text).block(block).wrap(Wrap { trim: true });