diff options
| author | nokoe <nokoe@mailbox.org> | 2024-06-23 13:06:22 +0200 | 
|---|---|---|
| committer | metamuffin <metamuffin@disroot.org> | 2024-06-23 19:32:37 +0200 | 
| commit | b9804603ca520fad268060ac802cec6f27d60782 (patch) | |
| tree | 162c5a68db4f394c458fc82926ce376653ad8e87 /client/scripts/multiplayer.gd | |
| parent | dfa843547f6e12309854269ac3fe552afe0054ca (diff) | |
| download | hurrycurry-b9804603ca520fad268060ac802cec6f27d60782.tar hurrycurry-b9804603ca520fad268060ac802cec6f27d60782.tar.bz2 hurrycurry-b9804603ca520fad268060ac802cec6f27d60782.tar.zst | |
indicate interactive with marker
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] | 
