summaryrefslogtreecommitdiff
path: root/src/rules
diff options
context:
space:
mode:
Diffstat (limited to 'src/rules')
-rw-r--r--src/rules/ability_scores.rs24
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)
+ }
+}