1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
use crate::events::ApplicableEvent;
use crate::players::{Player, PlayerId};
use crate::universe_group::UniverseGroup;
use serde_derive::{Deserialize, Serialize};
#[derive(Debug, Serialize, Deserialize, Clone)]
pub struct PartialUpdatePlayerEvent {
pub id: PlayerId,
#[serde(rename = "pvpScore")]
pub pvp_score: f64,
pub deaths: u64,
pub collisions: u64,
pub kills: u64,
pub rank: i32,
}
impl ApplicableEvent<UniverseGroup> for PartialUpdatePlayerEvent {
fn apply(self, group: &mut UniverseGroup) {
let player = group.players[self.id.0].as_mut().unwrap();
self.apply(player);
}
}
impl ApplicableEvent<Player> for PartialUpdatePlayerEvent {
fn apply(self, player: &mut Player) {
player.pvp_score = self.pvp_score;
player.deaths = self.deaths;
player.collisions = self.collisions;
player.kills = self.kills;
player.rank = self.rank;
}
}