team04_server/messages/
game_end.rs1use std::collections::HashMap;
2
3use crate::lobby::state::clients::PlayerId;
4
5use super::*;
6
7pub struct GameEnd {
8 pub winner: PlayerId,
9 pub global_stats: Vec<GlobalStat>,
10 pub player_stats: Vec<PlayerStat>,
11}
12
13#[derive(Serialize)]
14#[serde(rename_all = "camelCase")]
15pub struct GlobalStat {
16 pub display_name: String,
17 pub display_value: String,
18}
19
20#[derive(Serialize)]
21#[serde(rename_all = "camelCase")]
22pub struct PlayerStat {
23 pub display_name: String,
24 pub display_value: HashMap<PlayerId, String>,
25}
26
27impl MessageTx for GameEnd {
28 fn serialize(&self) -> String {
29 #[derive(Serialize)]
30 #[serde(rename_all = "camelCase")]
31 struct GameEnd<'a> {
32 #[serde(rename = "messageType")]
33 message_type: &'static str,
34 pub global_stats: &'a [GlobalStat],
35 pub player_stats: &'a [PlayerStat],
36 }
37
38 let message = GameEnd {
39 message_type: "GAME_END",
40 global_stats: &self.global_stats,
41 player_stats: &self.player_stats,
42 };
43
44 serialize(&message)
45 }
46}