Make Ability a trait
All checks were successful
continuous-integration/drone/push Build is passing

This commit is contained in:
2022-11-27 17:47:51 +01:00
parent 996a35ffa4
commit e04f61d9e6
9 changed files with 50 additions and 31 deletions

View File

@@ -12,7 +12,7 @@ pub struct AbilityLibrary {
/// A unique identifier so we know what value this is.
identifier: ValueIdentifier,
/// The underlying map for the library.
map: IndexMap<StringKey, Arc<Ability>>,
map: IndexMap<StringKey, Arc<dyn Ability>>,
}
impl AbilityLibrary {
@@ -25,11 +25,11 @@ impl AbilityLibrary {
}
}
impl DataLibrary<Ability> for AbilityLibrary {
fn map(&self) -> &IndexMap<StringKey, Arc<Ability>> {
impl DataLibrary<dyn Ability> for AbilityLibrary {
fn map(&self) -> &IndexMap<StringKey, Arc<dyn Ability>> {
&self.map
}
fn get_modify(&mut self) -> &mut IndexMap<StringKey, Arc<Ability>> {
fn get_modify(&mut self) -> &mut IndexMap<StringKey, Arc<dyn Ability>> {
&mut self.map
}
}
@@ -42,7 +42,7 @@ impl ValueIdentifiable for AbilityLibrary {
#[cfg(test)]
pub mod tests {
use crate::static_data::Ability;
use crate::static_data::AbilityImpl;
use crate::static_data::AbilityLibrary;
use crate::static_data::DataLibrary;
use crate::StringKey;
@@ -52,7 +52,11 @@ pub mod tests {
let mut lib = AbilityLibrary::new(1);
lib.add(
&StringKey::new("test_ability"),
Arc::new(Ability::new(&"test_ability".into(), &"test_ability".into(), Vec::new())),
Arc::new(AbilityImpl::new(
&"test_ability".into(),
&"test_ability".into(),
Vec::new(),
)),
);
lib
}