steel_registry/
villager_profession.rs1use 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);