From 31974e9bc08799fc36570c1927c7fb59e84d8903 Mon Sep 17 00:00:00 2001 From: David Gay Date: Sat, 7 Oct 2023 01:49:49 -0400 Subject: Add AbilityScoreCollection --- src/rules/ability_scores.rs | 24 +++++++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) 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>, +} + +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> { + self.scores.get(&ability_score) + } +} -- cgit v1.2.3