diff options
Diffstat (limited to 'client/scripts/multiplayer.gd')
-rw-r--r-- | client/scripts/multiplayer.gd | 53 |
1 files changed, 34 insertions, 19 deletions
diff --git a/client/scripts/multiplayer.gd b/client/scripts/multiplayer.gd index 4dbce890..3d360cf8 100644 --- a/client/scripts/multiplayer.gd +++ b/client/scripts/multiplayer.gd @@ -25,7 +25,6 @@ var tile_interact = [] var item_idx_from_name: Dictionary = {} var player_id = -1 -var other_players = {} var tileid_by_pos: Dictionary = {} func connectClient(url: String): @@ -71,39 +70,46 @@ func handle_packet(bytes: PackedByteArray): var id = decoded["id"] var player_name = decoded["name"] 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) + var character = decoded["character"] + emit_signal("add_player", id, player_name, pos_to_vec2(pos), character) "remove_player": var id = decoded["id"] - other_players.erase(id) emit_signal("remove_player", id) "position": - var id = decoded["player"] + var player = decoded["player"] var pos = decoded["pos"] var rot = decoded["rot"] - emit_signal("position", id, pos_to_vec2(pos), rot) + emit_signal("position", player, pos_to_vec2(pos), rot) "take_item": var tile = pos_to_vec2i(decoded["tile"]) - var player_id = decoded["player"] - emit_signal("take_item", tile, player_id) + var player = decoded["player"] + emit_signal("take_item", tile, player) "put_item": var tile = pos_to_vec2i(decoded["tile"]) var player_id = decoded["player"] emit_signal("take_item", tile, player_id) - "set_progress": + "set_active": var tile = pos_to_vec2i(decoded["tile"]) var warn = decoded["warn"] - if decoded.has("progress")&&decoded["progress"] != null: + var progress = decoded.get("progress") + if progress != null: emit_signal("set_progress", tile, decoded["progress"], warn) else: emit_signal("set_finished", tile, warn) "set_tile_item": var tile = pos_to_vec2i(decoded["tile"]) - if decoded.has("item")&&decoded["item"] != null: - emit_signal("set_tile_item", tile, decoded["item"]) + var item = decoded.get("item") + if item != null: + emit_signal("set_tile_item", tile, item) else: - emit_signal("remove_tile_name", tile) + emit_signal("remove_tile_item", tile) + "set_player_item": + var player = decoded["player"] + var item = decoded.get("item") + if item != null: + emit_signal("set_player_item", player, decoded["item"]) + else: + emit_signal("remove_player_item", player) "update_map": var tile: int = decoded["tile"] var pos: Array = decoded["pos"] @@ -112,12 +118,16 @@ func handle_packet(bytes: PackedByteArray): emit_signal("update_map", pos, tile_names[tile], neighbors) "communicate": var player = decoded["player"] - if decoded.has("message"): - var message: Dictionary = decoded["message"] - if message.has("item"): - emit_signal("item_message", player, message["item"]) + var message = decoded.get("message") + if message != null: + var item = message.get("item") + var text = message.get("text") + if item != null: + emit_signal("item_message", player, item) + elif text != null: + emit_signal("text_message", player, text) else: - emit_signal("text_message", player, message["text"]) + push_error("neither text nor item provided") else: emit_signal("clear_message", player) _: @@ -168,3 +178,8 @@ func get_tile_collision(pos: Vector2i) -> bool: var t = tileid_by_pos[str(pos)] if t == null: return false else: return tile_collide[t] + +func get_tile_interactive(pos: Vector2i) -> bool: + var t = tileid_by_pos[str(pos)] + if t == null: return false + else: return tile_interact[t] |