diff options
Diffstat (limited to 'client/scripts')
| -rw-r--r-- | client/scripts/game.gd | 3 | ||||
| -rw-r--r-- | client/scripts/multiplayer.gd | 36 | ||||
| -rw-r--r-- | client/scripts/player.gd | 21 | ||||
| -rw-r--r-- | client/scripts/tiles/full_tile.gd | 11 | 
4 files changed, 55 insertions, 16 deletions
| diff --git a/client/scripts/game.gd b/client/scripts/game.gd index 48457f9c..0403e7c4 100644 --- a/client/scripts/game.gd +++ b/client/scripts/game.gd @@ -28,12 +28,11 @@ func _ready():  			player_instance.update_position(position, rotation)  	) -	Multiplayer.connect("remove_playern", func(id: int): +	Multiplayer.connect("remove_player", func(id: int):  		var player = players.get(id)  		if player != null:  			players.erase(id)  			player.queue_free() -  	)  	Multiplayer.send_join("Blub", 1) diff --git a/client/scripts/multiplayer.gd b/client/scripts/multiplayer.gd index 6ac05699..3386d99b 100644 --- a/client/scripts/multiplayer.gd +++ b/client/scripts/multiplayer.gd @@ -8,6 +8,12 @@ signal item_message(player: int, item: int)  signal add_player(player: int, name: String, pos: Vector2, character: int)  signal remove_player(player: int)  signal position(player: int, position: Vector2, rotation: float) +signal take_item(tile: Vector2i, player: int) +signal put_item(tile: Vector2i, player: int) +signal set_tile_item(tile: Vector2i, item: int) +signal remove_tile_item(tile: Vector2i) +signal set_progress(tile: Vector2i, progress: float, warn: bool) +signal set_finished(tile: Vector2i, warn: bool)  var connected := false  var socket := WebSocketPeer.new() @@ -77,19 +83,26 @@ func handle_packet(bytes: PackedByteArray):  			var rot = decoded["rot"]  			emit_signal("position", id, pos_to_vec2(pos), rot)  		"take_item": -			var tile = decoded["tile"] +			var tile = pos_to_vec2i(decoded["tile"])  			var player_id = decoded["player"] +			emit_signal("take_item", tile, player_id)  		"put_item": -			var tile = decoded["tile"] +			var tile = pos_to_vec2i(decoded["tile"])  			var player_id = decoded["player"] -		"produce_item": -			var tile = decoded["tile"] -			var item = decoded["item"] -		"consume_item": -			var tile = decoded["tile"] -		"set_active": -			var tile = decoded["tile"] -			var progress = decoded["progress"] +			emit_signal("take_item", tile, player_id) +		"set_progress": +			var tile = pos_to_vec2i(decoded["tile"]) +			var warn = decoded["warn"] +			if decoded.has("progress"): +				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"): +				emit_signal("set_tile_item", tile, decoded["tile"]) +			else: +				emit_signal("remove_tile_name", tile)  		"update_map":  			var tile: int = decoded["tile"]  			var pos: Array = decoded["pos"] @@ -145,3 +158,6 @@ func decode_packet(bytes: PackedByteArray):  func pos_to_vec2(pos: Array) -> Vector2:  	return Vector2(pos[0], pos[1]) + +func pos_to_vec2i(pos: Array) -> Vector2i: +	return Vector2i(pos[0], pos[1]) diff --git a/client/scripts/player.gd b/client/scripts/player.gd index 8f53b790..6e07c3aa 100644 --- a/client/scripts/player.gd +++ b/client/scripts/player.gd @@ -9,7 +9,9 @@ var position_ = Vector2(0, 0)  var mesh = preload("res://scenes/player.tscn").instantiate() -func _init(id: int, new_name: String, pos: Vector2, _character: int, new_game: Game): +var hand: Node3D = null + +func _init(id: int, new_name: String, pos: Vector2, _character: int):  	add_child(mesh)  	position_ = pos  	name = new_name @@ -19,6 +21,17 @@ func update_position(new_position: Vector2, new_rotation: float):  	position_ = new_position  	rotation.y = new_rotation -func _process(delta): -	position.x = position_.x -	position.z = position_.y +func take_item(tile: FullTile): +	if hand != null: +		push_error("already holding an item") +	var i = tile.take_item() +	if i == null: +		push_error("tile is null") +	hand = i + +func put_item(tile: FullTile): +	var i = hand +	if i == null: +		push_error("holding nothing") +	i = null +	tile.put_item(hand) diff --git a/client/scripts/tiles/full_tile.gd b/client/scripts/tiles/full_tile.gd index 7ee1e1fc..bdcca61c 100644 --- a/client/scripts/tiles/full_tile.gd +++ b/client/scripts/tiles/full_tile.gd @@ -2,6 +2,7 @@ class_name FullTile  extends Floor  var static_body = StaticBody3D.new() +var item: Node3D = null  func _init(rename: String, neighbors: Array):  	super(rename, neighbors) @@ -21,3 +22,13 @@ static func interact_target() -> Vector3:  # actions when interacting, e.g. animations  func interact():  	pass + +func put_item(i: Node3D): +	if item != null: +		push_error("already holding an item") +	item = i + +func take_item() -> Node3D: +	var i = item +	item = null +	return i | 
