Skip to main content

steel_registry/
villager_profession.rs

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