use super::item_category::{BattleItemCategory, ItemCategory}; use crate::StringKey; use hashbrown::HashSet; #[derive(Debug)] pub struct Item { name: StringKey, category: ItemCategory, battle_category: BattleItemCategory, price: i32, flags: HashSet, } impl Item { pub fn new( name: &StringKey, category: ItemCategory, battle_category: BattleItemCategory, price: i32, flags: HashSet, ) -> Item { Item { name: name.clone(), category, battle_category, price, flags, } } pub fn name(&self) -> &StringKey { &self.name } pub fn category(&self) -> ItemCategory { self.category } pub fn battle_category(&self) -> BattleItemCategory { self.battle_category } pub fn price(&self) -> i32 { self.price } pub fn flags(&self) -> &HashSet { &self.flags } pub fn has_flag(&self, key: &StringKey) -> bool { self.flags.contains(key) } }