basic_game_events/
player.rs1use crate::{commands::Commands, topic_ids::TopicIds};
2use pubsub_bus::*;
3
4pub struct Player {
5 pub id: u32,
6}
7
8impl Subscriber<Commands, TopicIds> for Player {
9 fn on_event(&mut self, event: &BusEvent<Commands, TopicIds>) {
10 let event_id = event.get_id();
11 let event_source_id = event.get_source_id();
12 match event.get_content() {
13 Commands::Move { dx, dy } => {
14 println!(
15 "[Player {}] Received event {} from ID{}: Move({}, {})",
16 self.id, event_id, event_source_id, dx, dy
17 );
18 }
19 Commands::Atack => {
20 println!(
21 "[Player {}] Received event {} from ID{}: Atack",
22 self.id, event_id, event_source_id
23 );
24 }
25 }
26 }
27
28 fn get_subscribed_topics(&self) -> Option<Vec<TopicIds>> {
29 if self.id == 1 {
30 return Some(vec![TopicIds::Player1]);
31 }
32 if self.id == 2 {
33 return Some(vec![TopicIds::Player2]);
34 }
35 None
36 }
37}