ygopro_data/message/
all_in_one.rs1use crate::message::client_to_server;
7use crate::message::server_to_client;
8use crate::message::game_message;
9
10#[derive(Clone, Copy, Debug)]
11pub enum Direction {
12 CTOS,
13 STOC,
14 Other(&'static str)
15}
16
17#[derive(Copy, Clone, Eq, PartialEq, Ord, PartialOrd, Debug, Hash)]
18pub enum MessageType {
19 STOC(server_to_client::MessageType),
20 CTOS(client_to_server::MessageType),
21 GM(game_message::MessageType),
22 Other(&'static str, u8)
23}
24
25#[derive(Debug)]
26pub enum Message {
27 STOC(server_to_client::Message),
28 CTOS(client_to_server::Message),
29 Other((&'static str, Box<dyn std::any::Any + Send + Sync>))
30}
31
32impl From<server_to_client::MessageType> for MessageType {
33 fn from(value: server_to_client::MessageType) -> Self {
34 Self::STOC(value)
35 }
36}
37impl From<client_to_server::MessageType> for MessageType {
38 fn from(value: client_to_server::MessageType) -> Self {
39 Self::CTOS(value)
40 }
41}
42
43impl From<game_message::MessageType> for MessageType {
44 fn from(value: game_message::MessageType) -> Self {
45 Self::GM(value)
46 }
47}
48
49impl From<MessageType> for u8 {
50 fn from(value: MessageType) -> Self {
51 match value {
52 MessageType::STOC(message_type) => message_type.into(),
53 MessageType::CTOS(message_type) => message_type.into(),
54 MessageType::GM(message_type) => u8::from(message_type),
55 MessageType::Other(_, code) => code,
56 }
57 }
58}
59
60#[macro_export]
61macro_rules! every_message {
62 ($ident: path) => {
63 ygopro_data::every_client_to_server_message!($ident);
64 ygopro_data::every_server_to_client_message!($ident);
65 ygopro_data::every_game_message_message!($ident);
66 };
67}
68
69