diff options
-rw-r--r-- | client/map/tile_factory.gd | 8 | ||||
-rw-r--r-- | data/maps/debug.yaml | 12 | ||||
-rw-r--r-- | pixel-client/src/game.rs | 11 | ||||
-rw-r--r-- | pixel-client/src/main.rs | 1 |
4 files changed, 22 insertions, 10 deletions
diff --git a/client/map/tile_factory.gd b/client/map/tile_factory.gd index b43a568a..36204b3e 100644 --- a/client/map/tile_factory.gd +++ b/client/map/tile_factory.gd @@ -66,13 +66,13 @@ static func produce(tile_name: String, node_name: String, neighbors: Array) -> T return Book.new(node_name, neighbors) "conveyor": return Conveyor.new(node_name, neighbors) - "item-portal-in": + "black-hole-counter": return ItemPortal.new(node_name, neighbors, false) - "item-portal-out": + "white-hole-counter": return ItemPortal.new(node_name, neighbors, true) - "player-portal-in": + "black-hole": return PlayerPortal.new(node_name, neighbors, false) - "player-portal-out": + "white-hole": return PlayerPortal.new(node_name, neighbors, true) var t: push_warning("tile %s unknown" % t) diff --git a/data/maps/debug.yaml b/data/maps/debug.yaml index 8be2bda4..d571dc13 100644 --- a/data/maps/debug.yaml +++ b/data/maps/debug.yaml @@ -54,10 +54,10 @@ tiles: "7": fish-crate "X": trash - "¹": item-portal-in - "²": item-portal-out - "³": player-portal-in - "⁴": player-portal-out + "¹": black-hole-counter + "²": white-hole-counter + "³": black-hole + "⁴": white-hole "c": chair "~": floor ".": floor @@ -115,8 +115,8 @@ walkable: - chair - grass - path - - player-portal-in - - player-portal-out + - black-hole + - white-hole collider: - wall 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; |