Compare commits

..

5 Commits

4 changed files with 28 additions and 5 deletions

View File

@ -52,3 +52,4 @@ stream = ExtResource("1_uh1ab")
[node name="walk" type="AudioStreamPlayer3D" parent="." unique_id=1589803505] [node name="walk" type="AudioStreamPlayer3D" parent="." unique_id=1589803505]
stream = SubResource("AudioStreamRandomizer_uh1ab") stream = SubResource("AudioStreamRandomizer_uh1ab")
max_distance = 20.0

View File

@ -46,4 +46,11 @@ impl PlayerEffects {
} }
self.walk_sfx_cd_remaining = self.walk_sfx_cd; self.walk_sfx_cd_remaining = self.walk_sfx_cd;
} }
pub fn jump(&mut self) {
if let Some(walk) = &mut self.walk_sound {
walk.play();
}
self.walk_sfx_cd_remaining = 0.;
}
} }

View File

@ -275,6 +275,9 @@ impl IPlayer for LocalPlayer {
fn jump(&mut self) { fn jump(&mut self) {
if self.try_jump() { if self.try_jump() {
if let Some(effects) = &mut self.effects {
effects.bind_mut().jump();
}
if let Some(peer) = &mut NetworkManager::singleton().bind_mut().peer { if let Some(peer) = &mut NetworkManager::singleton().bind_mut().peer {
match peer { match peer {
PeerKind::Client(peer, addr) => peer.send_reliable(&addr, Jump(0)), PeerKind::Client(peer, addr) => peer.send_reliable(&addr, Jump(0)),
@ -542,7 +545,7 @@ impl ICharacterBody3D for LocalPlayer {
scoreboard.set_visible(Input::singleton().is_action_pressed("scoreboard")); scoreboard.set_visible(Input::singleton().is_action_pressed("scoreboard"));
} }
if self.movement_dir.length_squared() > 0. { if self.movement_dir.length_squared() > 0. && self.base().is_on_floor() {
if let Some(effects) = &mut self.effects { if let Some(effects) = &mut self.effects {
effects.bind_mut().walk(); effects.bind_mut().walk();
} }
@ -556,8 +559,11 @@ impl ICharacterBody3D for LocalPlayer {
} else { } else {
(0., 0.) (0., 0.)
}; };
let done_cd_percent = let done_cd_percent = if weapon.dyn_bind().get_max_cd() > 0. {
1. - (weapon.dyn_bind().get_remaining_cd() / weapon.dyn_bind().get_max_cd()); 1. - (weapon.dyn_bind().get_remaining_cd() / weapon.dyn_bind().get_max_cd())
} else {
1.
};
let new_weapon_rot = weapon let new_weapon_rot = weapon
.get_rotation() .get_rotation()
.lerp(Vector3::ZERO, 0.03 * done_cd_percent as f32); .lerp(Vector3::ZERO, 0.03 * done_cd_percent as f32);
@ -841,7 +847,11 @@ impl IPlayer for RemotePlayer {
} }
fn jump(&mut self) { fn jump(&mut self) {
self.try_jump(); if self.try_jump() {
if let Some(effects) = &mut self.effects {
effects.bind_mut().jump();
}
}
} }
fn get_look_up(&self) -> f32 { fn get_look_up(&self) -> f32 {
@ -870,8 +880,8 @@ impl IPlayer for RemotePlayer {
rid, rid,
self.player_id.unwrap_or(0), self.player_id.unwrap_or(0),
camera_origin.get_global_position(), camera_origin.get_global_position(),
camera_origin.get_basis().col_b(),
to, to,
camera_origin.get_basis().col_b(),
deal_damage, deal_damage,
) )
} else { } else {
@ -992,6 +1002,7 @@ impl ICharacterBody3D for RemotePlayer {
} }
if self.movement_dir.length_squared() > 0. if self.movement_dir.length_squared() > 0.
&& self.base().is_on_floor()
&& let Some(effects) = &mut self.effects && let Some(effects) = &mut self.effects
{ {
effects.bind_mut().walk(); effects.bind_mut().walk();

View File

@ -104,6 +104,7 @@ impl ChatBox {
} }
pub fn on_submit(&mut self, message: GString) { pub fn on_submit(&mut self, message: GString) {
let message = message.to_string().trim().to_owned();
if let Some(line_edit) = &mut self.line_edit { if let Some(line_edit) = &mut self.line_edit {
line_edit.clear(); line_edit.clear();
if self.in_game { if self.in_game {
@ -111,6 +112,9 @@ impl ChatBox {
} }
} }
self.signals().on_closed().emit(); self.signals().on_closed().emit();
if message.is_empty() {
return;
}
if let Some(peer) = &mut NetworkManager::singleton().bind_mut().peer { if let Some(peer) = &mut NetworkManager::singleton().bind_mut().peer {
match peer { match peer {
PeerKind::Client(peer, socket_addr) => { PeerKind::Client(peer, socket_addr) => {