Move some stats to PlayerStats
This commit is contained in:
parent
1a197618e1
commit
7db901c749
@ -421,8 +421,7 @@ impl Game {
|
|||||||
peer.broadcast_reliable(Package::SetReady(player.id(), true));
|
peer.broadcast_reliable(Package::SetReady(player.id(), true));
|
||||||
}
|
}
|
||||||
for player in &mut self.players {
|
for player in &mut self.players {
|
||||||
player.data.kills = 0;
|
player.stats = Default::default();
|
||||||
player.data.deaths = 0;
|
|
||||||
}
|
}
|
||||||
self.goals.clear();
|
self.goals.clear();
|
||||||
}
|
}
|
||||||
@ -569,9 +568,8 @@ impl Game {
|
|||||||
ping: 0,
|
ping: 0,
|
||||||
team: 0,
|
team: 0,
|
||||||
ready: false,
|
ready: false,
|
||||||
kills: 0,
|
|
||||||
deaths: 0,
|
|
||||||
},
|
},
|
||||||
|
stats: Default::default(),
|
||||||
killing_spree: 0,
|
killing_spree: 0,
|
||||||
killing_spree_cd: 0.,
|
killing_spree_cd: 0.,
|
||||||
character: None,
|
character: None,
|
||||||
@ -1079,7 +1077,7 @@ impl Game {
|
|||||||
.record_event(ReplayEvent::Death(source, player_id));
|
.record_event(ReplayEvent::Death(source, player_id));
|
||||||
}
|
}
|
||||||
|
|
||||||
let total_prev_kills: u16 = self.players.iter().map(|p| p.data.kills).sum();
|
let total_prev_kills: u16 = self.players.iter().map(|p| p.stats.kills).sum();
|
||||||
|
|
||||||
if let Some(chat) = &mut Chat::singleton() {
|
if let Some(chat) = &mut Chat::singleton() {
|
||||||
chat.bind_mut()
|
chat.bind_mut()
|
||||||
@ -1089,7 +1087,7 @@ impl Game {
|
|||||||
let killing_spree = if let DamageSource::Player(source_id) = source
|
let killing_spree = if let DamageSource::Player(source_id) = source
|
||||||
&& let Some(source_player) = self.find_player_mut(source_id)
|
&& let Some(source_player) = self.find_player_mut(source_id)
|
||||||
{
|
{
|
||||||
source_player.data.kills += 1;
|
source_player.stats.kills += 1;
|
||||||
source_player.killing_spree += 1;
|
source_player.killing_spree += 1;
|
||||||
source_player.killing_spree_cd = 10.;
|
source_player.killing_spree_cd = 10.;
|
||||||
source_player.killing_spree
|
source_player.killing_spree
|
||||||
@ -1100,7 +1098,7 @@ impl Game {
|
|||||||
if let Some(player) = self.find_player_mut(player_id) {
|
if let Some(player) = self.find_player_mut(player_id) {
|
||||||
player.killing_spree = 0;
|
player.killing_spree = 0;
|
||||||
player.killing_spree_cd = 0.;
|
player.killing_spree_cd = 0.;
|
||||||
player.data.deaths += 1;
|
player.stats.deaths += 1;
|
||||||
}
|
}
|
||||||
self.run_deferred(move |s| {
|
self.run_deferred(move |s| {
|
||||||
s.signals().on_player_killed().emit(player_id);
|
s.signals().on_player_killed().emit(player_id);
|
||||||
@ -1354,6 +1352,7 @@ impl Game {
|
|||||||
pub struct Player {
|
pub struct Player {
|
||||||
pub connection_addr: SocketAddr,
|
pub connection_addr: SocketAddr,
|
||||||
pub data: NetPlayer,
|
pub data: NetPlayer,
|
||||||
|
pub stats: PlayerStats,
|
||||||
pub character: Option<DynGd<CharacterBody3D, dyn IPlayer + 'static>>,
|
pub character: Option<DynGd<CharacterBody3D, dyn IPlayer + 'static>>,
|
||||||
pub killing_spree: u16,
|
pub killing_spree: u16,
|
||||||
pub killing_spree_cd: f64,
|
pub killing_spree_cd: f64,
|
||||||
@ -1495,6 +1494,16 @@ impl Player {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[derive(Debug, Default, Serialize, Deserialize, Clone)]
|
||||||
|
pub struct PlayerStats {
|
||||||
|
pub kills: u16,
|
||||||
|
pub deaths: u16,
|
||||||
|
pub goals: u16,
|
||||||
|
pub own_goals: u16,
|
||||||
|
pub friendly_kills: u16,
|
||||||
|
pub friendly_deaths: u16,
|
||||||
|
}
|
||||||
|
|
||||||
#[derive(Debug, Serialize, Deserialize, Clone)]
|
#[derive(Debug, Serialize, Deserialize, Clone)]
|
||||||
pub struct NetPlayer {
|
pub struct NetPlayer {
|
||||||
pub id: u16,
|
pub id: u16,
|
||||||
@ -1502,8 +1511,6 @@ pub struct NetPlayer {
|
|||||||
pub name: String,
|
pub name: String,
|
||||||
pub ping: u128,
|
pub ping: u128,
|
||||||
pub team: u8,
|
pub team: u8,
|
||||||
pub kills: u16,
|
|
||||||
pub deaths: u16,
|
|
||||||
}
|
}
|
||||||
|
|
||||||
impl From<NetPlayer> for Player {
|
impl From<NetPlayer> for Player {
|
||||||
@ -1511,6 +1518,7 @@ impl From<NetPlayer> for Player {
|
|||||||
Player {
|
Player {
|
||||||
connection_addr: SocketAddr::from(([0, 0, 0, 0], 0)),
|
connection_addr: SocketAddr::from(([0, 0, 0, 0], 0)),
|
||||||
data: value,
|
data: value,
|
||||||
|
stats: Default::default(),
|
||||||
character: None,
|
character: None,
|
||||||
killing_spree: 0,
|
killing_spree: 0,
|
||||||
killing_spree_cd: 0.,
|
killing_spree_cd: 0.,
|
||||||
|
|||||||
@ -9,7 +9,7 @@ use godot::{
|
|||||||
use serde::{Deserialize, Serialize};
|
use serde::{Deserialize, Serialize};
|
||||||
|
|
||||||
use crate::{
|
use crate::{
|
||||||
game::{Game, GameManager, Player},
|
game::{Game, GameManager, Player, PlayerStats},
|
||||||
game_settings::GameSettingsManager,
|
game_settings::GameSettingsManager,
|
||||||
map::Map,
|
map::Map,
|
||||||
net::{network_manager::BallSync, util::NetVector3},
|
net::{network_manager::BallSync, util::NetVector3},
|
||||||
@ -514,8 +514,7 @@ impl INode for ReplayRecorder {
|
|||||||
name: player.data.name.clone(),
|
name: player.data.name.clone(),
|
||||||
color: team.bind().color.into(),
|
color: team.bind().color.into(),
|
||||||
team: player.data.team,
|
team: player.data.team,
|
||||||
kills: 0,
|
stats: Default::default(),
|
||||||
deaths: 0,
|
|
||||||
},
|
},
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
@ -585,8 +584,7 @@ impl ReplayRecorder {
|
|||||||
player_data.insert(player.id(), state);
|
player_data.insert(player.id(), state);
|
||||||
}
|
}
|
||||||
if let Some(replay_player) = self.replay.players.get_mut(&player.id()) {
|
if let Some(replay_player) = self.replay.players.get_mut(&player.id()) {
|
||||||
replay_player.kills = player.data.kills;
|
replay_player.stats = player.stats.clone();
|
||||||
replay_player.deaths = player.data.deaths;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
ball_data = if let Some(ball) = &game.bind().world_ball {
|
ball_data = if let Some(ball) = &game.bind().world_ball {
|
||||||
@ -688,8 +686,7 @@ pub struct ReplayPlayer {
|
|||||||
pub name: String,
|
pub name: String,
|
||||||
pub color: ReplayColor,
|
pub color: ReplayColor,
|
||||||
pub team: u8,
|
pub team: u8,
|
||||||
pub kills: u16,
|
pub stats: PlayerStats,
|
||||||
pub deaths: u16,
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Debug, Clone, Serialize, Deserialize)]
|
#[derive(Debug, Clone, Serialize, Deserialize)]
|
||||||
@ -778,8 +775,8 @@ impl Player {
|
|||||||
.map(|w| w.dyn_bind().get_type())
|
.map(|w| w.dyn_bind().get_type())
|
||||||
.unwrap_or(WeaponType::Raygun),
|
.unwrap_or(WeaponType::Raygun),
|
||||||
is_dead: character.dyn_bind().is_dead(),
|
is_dead: character.dyn_bind().is_dead(),
|
||||||
kills: player.data.kills,
|
kills: player.stats.kills,
|
||||||
deaths: player.data.deaths,
|
deaths: player.stats.deaths,
|
||||||
health: character.dyn_bind().get_health(),
|
health: character.dyn_bind().get_health(),
|
||||||
buffs: character.dyn_bind().get_buffs().clone(),
|
buffs: character.dyn_bind().get_buffs().clone(),
|
||||||
})
|
})
|
||||||
|
|||||||
@ -70,10 +70,10 @@ impl PlayerListing {
|
|||||||
name_label.set_text(&player.data.name);
|
name_label.set_text(&player.data.name);
|
||||||
}
|
}
|
||||||
if let Some(kills_label) = &mut self.kills_label {
|
if let Some(kills_label) = &mut self.kills_label {
|
||||||
kills_label.set_text(&player.data.kills.to_string());
|
kills_label.set_text(&player.stats.kills.to_string());
|
||||||
}
|
}
|
||||||
if let Some(deaths_label) = &mut self.deaths_label {
|
if let Some(deaths_label) = &mut self.deaths_label {
|
||||||
deaths_label.set_text(&player.data.deaths.to_string());
|
deaths_label.set_text(&player.stats.deaths.to_string());
|
||||||
}
|
}
|
||||||
if let Some(ping_label) = &mut self.ping_label {
|
if let Some(ping_label) = &mut self.ping_label {
|
||||||
ping_label.set_text(&player.data.ping.to_string());
|
ping_label.set_text(&player.data.ping.to_string());
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user