diff options
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] | 
