summaryrefslogtreecommitdiff
path: root/pixel-client/src
diff options
context:
space:
mode:
authormetamuffin <metamuffin@disroot.org>2024-07-25 12:07:27 +0200
committermetamuffin <metamuffin@disroot.org>2024-07-25 12:07:27 +0200
commite43289341eeeae0f775fecf1a97c49a29bc0edff (patch)
treef668176b9f5594c522d9600e4ab160479438abd2 /pixel-client/src
parentbd206205d15f59551c89dc8714efee05356b0333 (diff)
downloadhurrycurry-e43289341eeeae0f775fecf1a97c49a29bc0edff.tar
hurrycurry-e43289341eeeae0f775fecf1a97c49a29bc0edff.tar.bz2
hurrycurry-e43289341eeeae0f775fecf1a97c49a29bc0edff.tar.zst
pc: player collisions
Diffstat (limited to 'pixel-client/src')
-rw-r--r--pixel-client/src/game.rs11
-rw-r--r--pixel-client/src/main.rs1
2 files changed, 12 insertions, 0 deletions
diff --git a/pixel-client/src/game.rs b/pixel-client/src/game.rs
index 13ed1709..cc1645d9 100644
--- a/pixel-client/src/game.rs
+++ b/pixel-client/src/game.rs
@@ -155,6 +155,7 @@ impl Game {
let movement_packet = player
.movement
.update(&self.collision_map, direction, boost, dt);
+
if send_movement {
self.network.queue_out.push_back(movement_packet);
}
@@ -167,6 +168,16 @@ impl Game {
self.camera_center.exp_to(player.movement.position, dt * 5.);
}
+ for p1 in &self.player_ids {
+ for p2 in &self.player_ids {
+ if p1 != p2 {
+ if let Some([p1, p2]) = self.players.get_many_mut([p1, p2]) {
+ p1.movement.collide(&mut p2.movement, dt);
+ }
+ }
+ }
+ }
+
for player in self.players.values_mut() {
if let Some(item) = &mut player.item {
item.parent_position = player.movement.position;
diff --git a/pixel-client/src/main.rs b/pixel-client/src/main.rs
index 0ebe7b44..8c140fc5 100644
--- a/pixel-client/src/main.rs
+++ b/pixel-client/src/main.rs
@@ -15,6 +15,7 @@
along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
+#![feature(map_many_mut)]
use clap::{Parser, Subcommand};
use game::Game;
use hurrycurry_protocol::glam::Vec2;