diff options
Diffstat (limited to 'src/rules/races.rs')
-rw-r--r-- | src/rules/races.rs | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/src/rules/races.rs b/src/rules/races.rs new file mode 100644 index 0000000..700c7ea --- /dev/null +++ b/src/rules/races.rs @@ -0,0 +1,23 @@ +use crate::rules::ability_scores::AbilityScore; +use lazy_static::lazy_static; +use serde::Deserialize; +use serde_yaml; +use std::collections::HashMap; +use std::string::String; + +#[derive(Deserialize)] +pub struct Race { + pub name: String, + pub ability_score_modifiers: HashMap<AbilityScore, i32>, + pub npc_ability_score_modifiers: HashMap<AbilityScore, i32>, +} + +lazy_static! { + pub static ref RACES: HashMap<String, Race> = load_races(); +} + +// TODO: Is this actually needed? Is there a real race condition this is avoiding? +fn load_races() -> HashMap<String, Race> { + let yaml_data = include_str!("../data/rules/races.yaml"); + serde_yaml::from_str(yaml_data).expect("Failed to parse races YAML") +} |