steel_registry/
game_events.rs1use 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
12impl PartialEq for GameEventRef {
13 #[expect(clippy::disallowed_methods)] fn eq(&self, other: &Self) -> bool {
15 std::ptr::eq(*self, *other)
16 }
17}
18
19pub struct GameEventRegistry {
20 game_events_by_id: Vec<GameEventRef>,
21 game_events_by_key: FxHashMap<Identifier, usize>,
22 allows_registering: bool,
23}
24
25impl GameEventRegistry {
28 pub fn new() -> Self {
29 Self {
30 game_events_by_id: Vec::new(),
31 game_events_by_key: FxHashMap::default(),
32 allows_registering: true,
33 }
34 }
35}
36
37crate::impl_standard_methods!(
38 GameEventRegistry,
39 GameEventRef,
40 game_events_by_id,
41 game_events_by_key,
42 allows_registering
43);
44
45crate::impl_registry!(
46 GameEventRegistry,
47 GameEvent,
48 game_events_by_id,
49 game_events_by_key,
50 game_events
51);