diff options
Diffstat (limited to 'client/multiplayer.gd')
-rw-r--r-- | client/multiplayer.gd | 67 |
1 files changed, 34 insertions, 33 deletions
diff --git a/client/multiplayer.gd b/client/multiplayer.gd index 68c0c0f3..eae2a7f0 100644 --- a/client/multiplayer.gd +++ b/client/multiplayer.gd @@ -43,7 +43,9 @@ signal remove_player_item(player: int) signal set_progress(tile: Vector2i, progress: float, warn: bool) signal set_finished(tile: Vector2i, warn: bool) signal set_ingame(state: bool) -signal score(demands_failed: int, demands_completed: int, points: int) +signal score(demands_failed: int, demands_completed: int, points: int, time_remaining: float) +signal hide_score() +signal server_message(text: String) signal connection_closed(reason: String) @@ -71,7 +73,9 @@ func _process(_delta): elif state == WebSocketPeer.STATE_CLOSED: var code = socket.get_close_code() var reason = socket.get_close_reason() - emit_signal("connection_closed", "WebSocket closed with code: %d, reason %s. Clean: %s" % [code, reason, code != -1]) + connection_closed.emit( + "WebSocket closed with code: %d, reason %s. Clean: %s" % [code, reason, code != -1] + ) self.queue_free() func handle_packet(bytes: PackedByteArray): @@ -84,75 +88,65 @@ func handle_packet(bytes: PackedByteArray): match packet_type: "init": var player_id = decoded["id"] - emit_signal("init", player_id) + init.emit(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 - ) + data.emit(item_names, tile_names, tile_collide, tile_interact) "add_player": var id = decoded["id"] var player_name = decoded["name"] var pos = decoded["position"] var character = decoded["character"] - emit_signal("add_player", id, player_name, pos_to_vec2(pos), character) + add_player.emit(id, player_name, pos_to_vec2(pos), character) "remove_player": var id = decoded["id"] - emit_signal("remove_player", id) + remove_player.emit(id) "position": var player = decoded["player"] var pos = decoded["pos"] var rot = decoded["rot"] - emit_signal("position", player, pos_to_vec2(pos), rot) + position.emit(player, pos_to_vec2(pos), rot) "take_item": var tile = pos_to_vec2i(decoded["tile"]) var player = decoded["player"] - emit_signal("take_item", tile, player) + take_item.emit(tile, player) "put_item": var tile = pos_to_vec2i(decoded["tile"]) var player = decoded["player"] - emit_signal("put_item", tile, player) + put_item.emit(tile, player) "set_active": var tile = pos_to_vec2i(decoded["tile"]) var warn = decoded["warn"] var progress = decoded.get("progress") if progress != null: - emit_signal("set_progress", tile, decoded["progress"], warn) + set_progress.emit(tile, decoded["progress"], warn) else: - emit_signal("set_finished", tile, warn) + set_finished.emit(tile, warn) "set_tile_item": var tile = pos_to_vec2i(decoded["tile"]) var item = decoded.get("item") if item != null: - emit_signal("set_tile_item", tile, item) + set_tile_item.emit(tile, item) else: - emit_signal("remove_tile_item", tile) + remove_tile_item.emit(tile) "set_player_item": var player = decoded["player"] var item = decoded.get("item") if item != null: - emit_signal("set_player_item", player, decoded["item"]) + set_player_item.emit(player, decoded["item"]) else: - emit_signal("remove_player_item", player) + remove_player_item.emit(player) "update_map": var tile: Vector2i = pos_to_vec2i(decoded["tile"]) var kind = decoded.get("kind") var neighbors: Array = decoded["neighbors"] if kind != null: - emit_signal( - "set_tile", - tile, - kind, - neighbors, - ) + set_tile.emit(tile, kind, neighbors) else: - emit_signal("remove_tile", tile) + remove_tile.emit(tile) "communicate": var player: int = decoded["player"] var message = decoded.get("message") @@ -162,18 +156,18 @@ func handle_packet(bytes: PackedByteArray): var text = message.get("text") var effect = message.get("effect") if item != null: - emit_signal("item_message", player, item, persist) + item_message.emit(player, item, persist) elif text != null: - emit_signal("text_message", player, text, persist) + text_message.emit(player, text, persist) elif effect != null: - emit_signal("effect_message", player, effect, persist) + effect_message.emit(player, effect, persist) else: push_error("neither text, item nor effect provided") else: - emit_signal("clear_message", player) + clear_message.emit(player) "set_ingame": var state = decoded["state"] - emit_signal("set_ingame", state) + set_ingame.emit(state) "error": var message = decoded["message"] push_warning("server error: %s" % message) @@ -181,7 +175,14 @@ func handle_packet(bytes: PackedByteArray): var demands_failed: int = decoded["demands_failed"] var demands_completed: int = decoded["demands_completed"] var points: int = decoded["points"] - emit_signal("score", demands_failed, demands_completed, points) + var time_remaining = decoded.get("time_remaining") + if time_remaining != null: + score.emit(demands_failed, demands_completed, points, time_remaining) + else: + hide_score.emit() + "server_message": + var text = decoded["text"] + server_message.emit(text) _: push_error("Unrecognized packet type: %s" % packet_type) |