aboutsummaryrefslogtreecommitdiff
path: root/client/multiplayer.gd
diff options
context:
space:
mode:
Diffstat (limited to 'client/multiplayer.gd')
-rw-r--r--client/multiplayer.gd67
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)