Skip to main content

steel_registry/
villager_type.rs

1use rustc_hash::FxHashMap;
2use steel_utils::Identifier;
3
4#[derive(Debug)]
5pub struct VillagerType {
6    pub key: Identifier,
7}
8
9pub type VillagerTypeRef = &'static VillagerType;
10
11pub struct VillagerTypeRegistry {
12    villager_types_by_id: Vec<VillagerTypeRef>,
13    villager_types_by_key: FxHashMap<Identifier, usize>,
14    allows_registering: bool,
15}
16
17impl VillagerTypeRegistry {
18    #[must_use]
19    pub fn new() -> Self {
20        Self {
21            villager_types_by_id: Vec::new(),
22            villager_types_by_key: FxHashMap::default(),
23            allows_registering: true,
24        }
25    }
26}
27
28crate::impl_standard_methods!(
29    VillagerTypeRegistry,
30    VillagerTypeRef,
31    villager_types_by_id,
32    villager_types_by_key,
33    allows_registering
34);
35
36crate::impl_registry!(
37    VillagerTypeRegistry,
38    VillagerType,
39    villager_types_by_id,
40    villager_types_by_key,
41    villager_types
42);