diff options
author | nokoe <nokoe@mailbox.org> | 2024-06-21 15:20:17 +0200 |
---|---|---|
committer | metamuffin <metamuffin@disroot.org> | 2024-06-23 19:27:04 +0200 |
commit | d6a0899e9641c68b96463669bd655629eb430311 (patch) | |
tree | f51fbedad2a303035a414d446b4222b1d997fa6d /client/scripts/multiplayer.gd | |
parent | 68a671883983252edcc28fced0279eb37e6ba297 (diff) | |
download | hurrycurry-d6a0899e9641c68b96463669bd655629eb430311.tar hurrycurry-d6a0899e9641c68b96463669bd655629eb430311.tar.bz2 hurrycurry-d6a0899e9641c68b96463669bd655629eb430311.tar.zst |
multiplayer movement
Diffstat (limited to 'client/scripts/multiplayer.gd')
-rw-r--r-- | client/scripts/multiplayer.gd | 18 |
1 files changed, 15 insertions, 3 deletions
diff --git a/client/scripts/multiplayer.gd b/client/scripts/multiplayer.gd index d7dd9d1b..79c5df76 100644 --- a/client/scripts/multiplayer.gd +++ b/client/scripts/multiplayer.gd @@ -1,9 +1,13 @@ extends Node +signal init(player_id: int) signal update_map(tile: int, pos: Array, neighbors: Array) signal clear_message(player: int) signal text_message(player: int, text: String) signal item_message(player: int, item: int) +signal add_player(player: int, name: String, pos: Vector2, character: int) +signal remove_player(player: int) +signal position(player: int, position: Vector2, rotation: float) var connected := false var socket := WebSocketPeer.new() @@ -48,20 +52,24 @@ func handle_packet(bytes: PackedByteArray): player_id = decoded["id"] item_names = decoded["data"]["item_names"] tile_names = decoded["data"]["tile_names"] + emit_signal("init", player_id) "add_player": var id = decoded["id"] var player_name = decoded["name"] - #var item = decoded["item"] var pos = decoded["position"] var char = decoded["character"] + other_players[id] = [player_name, char] + emit_signal("add_player", id, player_name, pos_to_vec2(pos), char) "remove_player": var id = decoded["id"] other_players.erase(id) + emit_signal("remove_player", id) "position": var id = decoded["player"] var pos = decoded["pos"] var rot = decoded["rot"] + emit_signal("position", id, pos_to_vec2(pos), rot) "take_item": var tile = decoded["tile"] var player_id = decoded["player"] @@ -94,10 +102,11 @@ func handle_packet(bytes: PackedByteArray): _: push_error("Unrecognized packet type: %s" % packet_type) -func send_join(player_name: String): +func send_join(player_name: String, character: int): send_packet({ "type": "join", - "name": player_name + "name": player_name, + "character": character }) func send_position(pos: Vector2, rotation: float): @@ -127,3 +136,6 @@ func decode_packet(bytes: PackedByteArray): else: print("Decode of packet failed: %s in %s" % [json.get_error_message(), in_str]) return null + +func pos_to_vec2(pos: Array) -> Vector2: + return Vector2(pos[0], pos[1]) |