Skip to main content

steel_registry/
villager_type.rs

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