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