for changes to add messages
This commit is contained in:
@@ -9,7 +9,7 @@ pub trait Artifact {
|
||||
/// get the position of the artifact in the level
|
||||
fn get_immutable_position(&self) -> &Position;
|
||||
/// call to apply the effects of the artifact to the player
|
||||
fn collect(&mut self, player: &mut Player);
|
||||
fn collect(&mut self, player: &mut Player, messages: &mut Vec<String>);
|
||||
/// returns if the artifact was collected and can be removed from the level
|
||||
fn was_collected(&self) -> bool;
|
||||
}
|
||||
@@ -37,8 +37,9 @@ impl Artifact for Chest {
|
||||
}
|
||||
|
||||
fn get_immutable_position(&self) -> &Position { &self.position }
|
||||
fn collect(&mut self, player: &mut Player) {
|
||||
fn collect(&mut self, player: &mut Player, messages: &mut Vec<String>) {
|
||||
player.retrieve_gold(self.gold);
|
||||
messages.insert(0, format!("opened chest and collected {} gold.", self.gold).to_string());
|
||||
self.gold = 0;
|
||||
}
|
||||
|
||||
@@ -67,11 +68,16 @@ impl Artifact for Potion {
|
||||
("P", Color::Green)
|
||||
}
|
||||
fn get_immutable_position(&self) -> &Position { &self.position }
|
||||
fn collect(&mut self, player: &mut Player) {
|
||||
fn collect(&mut self, player: &mut Player, messages: &mut Vec<String>) {
|
||||
// only consume potion of the player can gain at least one health point
|
||||
if !player.is_healthy() {
|
||||
let old = player.get_life();
|
||||
player.change_life(self.health.try_into().unwrap());
|
||||
let new = player.get_life();
|
||||
messages.insert(0, format!("picked up potion and gained {} hp.", new - old).to_string());
|
||||
self.health = 0;
|
||||
} else {
|
||||
messages.insert(0, "not using the potion because you're healthy.".to_string());
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user