diff options
author | David Gay <eapoems@riseup.net> | 2023-10-07 01:49:49 -0400 |
---|---|---|
committer | David Gay <eapoems@riseup.net> | 2023-10-07 01:49:49 -0400 |
commit | 31974e9bc08799fc36570c1927c7fb59e84d8903 (patch) | |
tree | abb95db44134e0670f20a9ed0352b6f27c6d2be9 | |
parent | c0b927e3ee7c5d119e2b1ec942a65918d3b6b1a1 (diff) |
Add AbilityScoreCollection
-rw-r--r-- | src/rules/ability_scores.rs | 24 |
1 files changed, 23 insertions, 1 deletions
diff --git a/src/rules/ability_scores.rs b/src/rules/ability_scores.rs index a0da9d9..f255d4f 100644 --- a/src/rules/ability_scores.rs +++ b/src/rules/ability_scores.rs @@ -1,6 +1,7 @@ use serde::Deserialize; +use std::collections::HashMap; -#[derive(Debug, Deserialize, PartialEq, Clone, Copy)] +#[derive(Debug, Deserialize, Eq, Hash, PartialEq, Clone, Copy)] pub enum AbilityScore { Strength, Intelligence, @@ -22,3 +23,24 @@ impl AbilityScore { } } } + +#[derive(Debug)] +pub struct AbilityScoreCollection { + scores: HashMap<AbilityScore, Vec<u32>>, +} + +impl AbilityScoreCollection { + pub fn new() -> Self { + AbilityScoreCollection { + scores: HashMap::new(), + } + } + + pub fn add_score(&mut self, ability_score: AbilityScore, bonus: u32) { + self.scores.entry(ability_score).or_insert_with(Vec::new).push(bonus); + } + + pub fn get_score(&self, ability_score: AbilityScore) -> Option<&Vec<u32>> { + self.scores.get(&ability_score) + } +} |