Implement a few player pickups

This commit is contained in:
Alex Page 2022-02-03 01:16:41 -05:00
parent c138aeb228
commit 616a4d580a
5 changed files with 154 additions and 28 deletions

View file

@ -10,18 +10,65 @@ pub struct Stats {
type PlayerSurvived = bool;
impl Stats {
pub fn take_gems(&mut self, num_gems: u32) -> PlayerSurvived {
let new_num_gems = self.gems as i64 - num_gems as i64;
if new_num_gems <= 0 {
self.gems = 0;
false
} else {
self.gems = new_num_gems as u32;
true
}
}
pub fn add_score(&mut self, score: u32) {
self.score += score;
}
pub fn take_score(&mut self, score: u32) {
if let Some(result) = self.score.checked_sub(score) {
self.score = result;
} else {
self.score = 0;
}
}
pub fn give_gems(&mut self, num_gems: u32) {
self.gems += num_gems;
}
pub fn take_gems(&mut self, num_gems: u32) -> PlayerSurvived {
if let Some(result) = self.gems.checked_sub(num_gems) {
self.gems = result;
true
} else {
self.gems = 0;
false
}
}
pub fn give_whips(&mut self, num_whips: u32) {
self.whips += num_whips;
}
pub fn take_whips(&mut self, num_whips: u32) {
if let Some(result) = self.whips.checked_sub(num_whips) {
self.whips = result;
} else {
self.whips = 0;
}
}
pub fn give_teleports(&mut self, num_teleports: u32) {
self.teleports += num_teleports;
}
pub fn take_teleports(&mut self, num_teleports: u32) {
if let Some(result) = self.teleports.checked_sub(num_teleports) {
self.teleports = result;
} else {
self.teleports = 0;
}
}
pub fn give_keys(&mut self, num_keys: u32) {
self.keys += num_keys;
}
pub fn take_keys(&mut self, num_keys: u32) {
if let Some(result) = self.keys.checked_sub(num_keys) {
self.keys = result;
} else {
self.keys = 0;
}
}
}