Record taking damage in replay
This commit is contained in:
parent
c0e746a8e2
commit
8abcd9ec68
@ -1123,6 +1123,12 @@ impl Game {
|
||||
|
||||
// Handle taking damage, from server to client
|
||||
pub fn handle_take_damage(&mut self, source: DamageSource, player_id: u16, damage: i32) {
|
||||
if let Some(recorder) = &mut self.replay_recorder {
|
||||
recorder
|
||||
.bind_mut()
|
||||
.record_event(ReplayEvent::TakeDamage(player_id, source, damage));
|
||||
}
|
||||
|
||||
if let Some(player) = self.find_player_mut(player_id) {
|
||||
if let Some(character) = &mut player.character {
|
||||
character.dyn_bind_mut().take_damage(source, damage, false);
|
||||
@ -1142,6 +1148,14 @@ impl Game {
|
||||
|
||||
// Called whenever a player takes damage on the server-side
|
||||
pub fn on_take_damage(&mut self, source: DamageSource, target_player_id: u16, damage: i32) {
|
||||
if let Some(recorder) = &mut self.replay_recorder {
|
||||
recorder.bind_mut().record_event(ReplayEvent::TakeDamage(
|
||||
target_player_id,
|
||||
source,
|
||||
damage,
|
||||
));
|
||||
}
|
||||
|
||||
if let Some(peer) = &mut NetworkManager::singleton().bind_mut().peer {
|
||||
if let PeerKind::Server(peer, _) = peer {
|
||||
peer.broadcast_reliable(TakeDamage(source, target_player_id, damage));
|
||||
|
||||
@ -119,6 +119,13 @@ impl INode for ReplayPlayback {
|
||||
character.bind_mut().try_punch(*to, false);
|
||||
}
|
||||
}
|
||||
ReplayEvent::TakeDamage(player_id, damage_source, damage) => {
|
||||
if let Some(character) = self.player_characters.get_mut(player_id) {
|
||||
character
|
||||
.bind_mut()
|
||||
.take_damage(*damage_source, *damage, false);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -282,6 +289,7 @@ pub enum ReplayEvent {
|
||||
Respawn(u16, ReplayPlayerState),
|
||||
Jump(u16),
|
||||
Punch(u16, Vector3),
|
||||
TakeDamage(u16, DamageSource, i32),
|
||||
}
|
||||
|
||||
#[derive(Debug, Clone, Default)]
|
||||
|
||||
Loading…
Reference in New Issue
Block a user