Show last message on death
This commit is contained in:
parent
efe531f6ce
commit
9bd2f48b2e
10
src/game.rs
10
src/game.rs
|
@ -130,14 +130,14 @@ impl Game {
|
||||||
(dx, dy) = (0, 0);
|
(dx, dy) = (0, 0);
|
||||||
let (next_level, x, y) = self.next_start();
|
let (next_level, x, y) = self.next_start();
|
||||||
player_level = next_level;
|
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);
|
self.get_mutable_player().get_position().set(next_level, x, y);
|
||||||
}
|
}
|
||||||
StructureElement::StairUp => {
|
StructureElement::StairUp => {
|
||||||
(dx, dy) = (0, 0);
|
(dx, dy) = (0, 0);
|
||||||
let (next_level, x, y) = self.prev_end();
|
let (next_level, x, y) = self.prev_end();
|
||||||
player_level = next_level;
|
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);
|
self.get_mutable_player().get_position().set(next_level, x, y);
|
||||||
}
|
}
|
||||||
_ => {}
|
_ => {}
|
||||||
|
@ -167,15 +167,15 @@ impl Game {
|
||||||
if defense.0 {
|
if defense.0 {
|
||||||
damage = damage.saturating_sub(defense.1);
|
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);
|
m.decrease_life(damage as usize);
|
||||||
} else {
|
} 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
|
// monster died, player gains experience
|
||||||
if m.is_dead() {
|
if m.is_dead() {
|
||||||
self.player.gain_experience(m.get_experience_gain());
|
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();
|
return m.is_dead();
|
||||||
}
|
}
|
||||||
|
|
|
@ -141,10 +141,14 @@ impl Level {
|
||||||
if defense.0 {
|
if defense.0 {
|
||||||
damage = damage.saturating_sub(defense.1);
|
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);
|
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 {
|
} 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() {
|
if !player.is_dead() {
|
||||||
self.monsters[index].get_position().change(-dx, -dy);
|
self.monsters[index].get_position().change(-dx, -dy);
|
||||||
|
|
|
@ -184,13 +184,13 @@ fn main() -> Result<()> {
|
||||||
"Quitting is for cowards! You'll better try again!".to_string()
|
"Quitting is for cowards! You'll better try again!".to_string()
|
||||||
}
|
}
|
||||||
GameState::LOST => {
|
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 => {
|
GameState::WON => {
|
||||||
"Congratulation! You mastered your way through the dungeon and won the game.".to_string()
|
"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 collected {} gold.", game.get_player().get_gold()).as_str();
|
||||||
text += format!("\nYou played {} seconds.", playtime.as_secs()).as_str();
|
text += format!("\nYou played {} seconds.", playtime.as_secs()).as_str();
|
||||||
let paragraph = Paragraph::new(text).block(block).wrap(Wrap { trim: true });
|
let paragraph = Paragraph::new(text).block(block).wrap(Wrap { trim: true });
|
||||||
|
|
Loading…
Reference in New Issue