use crate::loader::SkillEntry;
#[derive(Debug, Default)]
pub struct SkillRegistry {
entries: Vec<SkillEntry>,
}
impl SkillRegistry {
pub const fn new() -> Self {
Self {
entries: Vec::new(),
}
}
pub fn register(&mut self, entry: SkillEntry) {
self.entries.push(entry);
}
pub fn find_by_name(&self, name: &str) -> Option<&SkillEntry> {
self.entries.iter().find(|e| e.manifest.name == name)
}
pub fn list_names_and_descriptions(&self) -> Vec<(&str, &str)> {
self.entries
.iter()
.map(|e| (e.manifest.name.as_str(), e.manifest.description.as_str()))
.collect()
}
pub fn get_full_body(&self, name: &str) -> Option<&str> {
self.find_by_name(name).map(|e| e.body.as_str())
}
}