Skip to main content

steel_registry/
game_events.rs

1use rustc_hash::FxHashMap;
2use steel_utils::Identifier;
3
4#[derive(Debug, Clone)]
5pub struct GameEvent {
6    pub key: Identifier,
7    pub notification_radius: i32,
8}
9
10pub type GameEventRef = &'static GameEvent;
11
12pub struct GameEventRegistry {
13    game_events_by_id: Vec<GameEventRef>,
14    game_events_by_key: FxHashMap<Identifier, usize>,
15    allows_registering: bool,
16}
17
18// TODO: GameEventListenerRegistry per Chunk Section
19
20impl GameEventRegistry {
21    #[must_use]
22    pub fn new() -> Self {
23        Self {
24            game_events_by_id: Vec::new(),
25            game_events_by_key: FxHashMap::default(),
26            allows_registering: true,
27        }
28    }
29}
30
31crate::impl_standard_methods!(
32    GameEventRegistry,
33    GameEventRef,
34    game_events_by_id,
35    game_events_by_key,
36    allows_registering
37);
38
39crate::impl_registry!(
40    GameEventRegistry,
41    GameEvent,
42    game_events_by_id,
43    game_events_by_key,
44    game_events
45);