diff options
author | nokoe <nokoe@mailbox.org> | 2024-06-25 22:31:17 +0200 |
---|---|---|
committer | nokoe <nokoe@mailbox.org> | 2024-06-25 23:39:19 +0200 |
commit | 8bb065604fbd12b14a7605cfa265ebf38890f628 (patch) | |
tree | 811866aec6093924694605155d9962261c57cb17 /client/multiplayer.gd | |
parent | ab6279e726ac7e10a4c5211a3d3827471fd35ccf (diff) | |
download | hurrycurry-8bb065604fbd12b14a7605cfa265ebf38890f628.tar hurrycurry-8bb065604fbd12b14a7605cfa265ebf38890f628.tar.bz2 hurrycurry-8bb065604fbd12b14a7605cfa265ebf38890f628.tar.zst |
multiplayer refactor
Diffstat (limited to 'client/multiplayer.gd')
-rw-r--r-- | client/multiplayer.gd | 62 |
1 files changed, 31 insertions, 31 deletions
diff --git a/client/multiplayer.gd b/client/multiplayer.gd index b9242a41..db891562 100644 --- a/client/multiplayer.gd +++ b/client/multiplayer.gd @@ -19,7 +19,14 @@ class_name Multiplayer extends Node signal init(player_id: int) -signal update_map(tile: int, pos: Array, neighbors: Array) +signal data( + item_names: Array, + tile_names: Array, + tile_collide: Array, + tile_interact: Array +) +signal set_tile(tile: Vector2i, kind: int, neighbors: Array) +signal remove_tile(tile: Vector2i) signal clear_message(player: int) signal text_message(player: int, text: String) signal item_message(player: int, item: int) @@ -40,15 +47,6 @@ signal connection_closed(reason: String) var connected := false var socket := WebSocketPeer.new() -var item_names = [] -var tile_names = [] -var tile_collide = [] -var tile_interact = [] -var item_idx_from_name: Dictionary = {} -var player_id = -1 - -var tileid_by_pos: Dictionary = {} - func _ready(): print("Multiplayer connect"); socket.connect_to_url(Global.server_url) @@ -82,14 +80,19 @@ func handle_packet(bytes: PackedByteArray): var packet_type: String = decoded["type"] match packet_type: "init": - player_id = decoded["id"] - item_names = decoded["data"]["item_names"] - tile_names = decoded["data"]["tile_names"] - tile_collide = decoded["data"]["tile_collide"] - tile_interact = decoded["data"]["tile_interact"] - for i in range(item_names.size()): - item_idx_from_name[item_names[i]] = i + var player_id = decoded["id"] emit_signal("init", player_id) + "data": + var item_names = decoded["data"]["item_names"] + var tile_names = decoded["data"]["tile_names"] + var tile_collide = decoded["data"]["tile_collide"] + var tile_interact = decoded["data"]["tile_interact"] + emit_signal("data", + item_names, + tile_names, + tile_collide, + tile_interact + ) "add_player": var id = decoded["id"] var player_name = decoded["name"] @@ -135,11 +138,18 @@ func handle_packet(bytes: PackedByteArray): else: emit_signal("remove_player_item", player) "update_map": - var tile: int = decoded["tile"] - var pos: Array = decoded["pos"] + var tile: Vector2i = pos_to_vec2i(decoded["tile"]) + var kind = decoded.get("kind") var neighbors: Array = decoded["neighbors"] - tileid_by_pos[str(Vector2i(pos[0],pos[1]))] = tile - emit_signal("update_map", pos, tile_names[tile], neighbors.map(func (x): return tile_names[x] if x != null else null)) + if kind != null: + emit_signal( + "set_tile", + tile, + kind, + neighbors, + ) + else: + emit_signal("remove_tile", tile) "communicate": var player = decoded["player"] var message = decoded.get("message") @@ -200,13 +210,3 @@ func pos_to_vec2(pos: Array) -> Vector2: func pos_to_vec2i(pos: Array) -> Vector2i: return Vector2i(pos[0], pos[1]) - -func get_tile_collision(pos: Vector2i) -> bool: - var t = tileid_by_pos.get(str(pos)) - if t == null: return false - else: return tile_collide[t] - -func get_tile_interactive(pos: Vector2i) -> bool: - var t = tileid_by_pos.get(str(pos)) - if t == null: return false - else: return tile_interact[t] |