diff options
Diffstat (limited to 'client')
-rw-r--r-- | client/game.gd | 5 | ||||
-rw-r--r-- | client/menu/ingame.gd | 4 | ||||
-rw-r--r-- | client/menu/lobby.gd | 2 | ||||
-rw-r--r-- | client/multiplayer.gd | 20 | ||||
-rw-r--r-- | client/player/controllable_player.gd | 8 |
5 files changed, 21 insertions, 18 deletions
diff --git a/client/game.gd b/client/game.gd index 8f23fbed..fee3b390 100644 --- a/client/game.gd +++ b/client/game.gd @@ -61,7 +61,7 @@ func _ready(): get_parent().replace_menu("res://menu/error.tscn") ) - mp.init.connect(func(player_id_: int): player_id = player_id_) + mp.joined.connect(func(player_id_: int): player_id = player_id_) mp.data.connect(func( item_names_: Array, @@ -85,7 +85,6 @@ func _ready(): data_updated.emit() ) - await mp.init if player_id == -1: push_error("multiplayer has not been initialized") @@ -269,7 +268,7 @@ func join(): func leave(): join_sent = false - mp.send_leave() + mp.send_leave(player_id) func _process(delta): update_center() diff --git a/client/menu/ingame.gd b/client/menu/ingame.gd index 4e8eac0c..78cb45aa 100644 --- a/client/menu/ingame.gd +++ b/client/menu/ingame.gd @@ -58,12 +58,12 @@ func _on_quit_pressed(): quit() func _on_lobby_pressed(): - game.mp.send_chat("/end") + game.mp.send_chat(game.player_id, "/end") exit() func _on_leave_pressed(): if game.is_joined: - game.mp.send_leave() + game.mp.send_leave(game.player_id) elif not game.join_sent: leave_button.disabled = true game.join() diff --git a/client/menu/lobby.gd b/client/menu/lobby.gd index 9991fbbf..1d4674cd 100644 --- a/client/menu/lobby.gd +++ b/client/menu/lobby.gd @@ -96,7 +96,7 @@ func _on_right_pressed(): func _on_controller_button_pressed(): if selected_map_name != null: - game.mp.send_chat("/start %s" % selected_map_name) + game.mp.send_chat(game.player_id, "/start %s" % selected_map_name) Sound.play_music("stop") # TODO: Game music enter func _on_join_spectate_pressed(): diff --git a/client/multiplayer.gd b/client/multiplayer.gd index dad4464d..02cf21e0 100644 --- a/client/multiplayer.gd +++ b/client/multiplayer.gd @@ -18,7 +18,7 @@ class_name Multiplayer extends Node -signal init(player_id: int) +signal joined(player_id: int) signal data( item_names: Array[String], tile_names: Array[String], @@ -98,9 +98,9 @@ func handle_packet(bytes: PackedByteArray): var packet_type: String = decoded["type"] match packet_type: - "init": + "joined": var player_id = decoded["id"] - init.emit(player_id) + joined.emit(player_id) "version": var major = decoded["major"] var minor = decoded["minor"] @@ -279,26 +279,29 @@ func send_join(player_name: String, character: int): "character": character }) -func send_movement(pos: Vector2, direction: Vector2, boosting: bool): +func send_movement(player: int, pos: Vector2, direction: Vector2, boosting: bool): send_packet({ "type": "movement", + "player": player, "pos": [pos.x, pos.y], "direction": [direction.x, direction.y], "boosting": boosting }) -func send_tile_interact(pos: Vector2i, edge: bool): +func send_tile_interact(player:int, pos: Vector2i, edge: bool): send_packet({ "type": "interact", + "player": player, "pos": [pos.x, pos.y] if edge else null, }) -func set_player_interact(_player: int, _edge: bool): +func send_player_interact(_player: int, _edge: bool): push_error("not yet implemented") -func send_chat(message: String): +func send_chat(player: int, message: String): send_packet({ "type": "communicate", + "player": player, "persist": false, "message": { "text": message @@ -311,9 +314,10 @@ func send_replay_tick(dt: float): "dt": dt }) -func send_leave(): +func send_leave(player: int): send_packet({ "type": "leave", + "player": player, }) func send_packet(packet): diff --git a/client/player/controllable_player.gd b/client/player/controllable_player.gd index 79c73246..b05b2103 100644 --- a/client/player/controllable_player.gd +++ b/client/player/controllable_player.gd @@ -43,7 +43,7 @@ func _ready(): timer.start() timer.connect("timeout", func(): if game.mp != null: - game.mp.send_movement(position_, direction, boosting) + game.mp.send_movement(game.player_id, position_, direction, boosting) ) add_child(onscreen_controls) super() @@ -147,7 +147,7 @@ func update_position(_new_position: Vector2, _new_rotation: float, _new_boosting pass func submit_message(text: String): - game.mp.send_chat(text) + game.mp.send_chat(game.player_id, text) func progress(p: float, warn: bool): super(p, warn) @@ -169,11 +169,11 @@ func interact(): marker.visible = true marker_target = tile.item_base.global_position if Input.is_action_just_pressed("interact"): - game.mp.send_tile_interact(target, true) + game.mp.send_tile_interact(game.player_id, target, true) tile.interact() marker.set_interacting(true) elif Input.is_action_just_released("interact"): - game.mp.send_tile_interact(target, false) + game.mp.send_tile_interact(game.player_id, target, false) marker.set_interacting(false) else: marker.visible = false |