diff options
| author | nokoe <nokoe@mailbox.org> | 2024-06-23 22:22:10 +0200 | 
|---|---|---|
| committer | nokoe <nokoe@mailbox.org> | 2024-06-23 22:22:44 +0200 | 
| commit | a81020eb81a0fa44f6641f47bd1eeda786cc8f71 (patch) | |
| tree | b9e49d33d3025c9ab43a85866b2c614268a4cf65 /client | |
| parent | 485ca41108d22be82755151c1a3e596789eafbeb (diff) | |
| download | hurrycurry-a81020eb81a0fa44f6641f47bd1eeda786cc8f71.tar hurrycurry-a81020eb81a0fa44f6641f47bd1eeda786cc8f71.tar.bz2 hurrycurry-a81020eb81a0fa44f6641f47bd1eeda786cc8f71.tar.zst | |
fix scripts
Diffstat (limited to 'client')
| -rw-r--r-- | client/game.gd | 1 | ||||
| -rw-r--r-- | client/map/item.gd | 2 | ||||
| -rw-r--r-- | client/map/map.gd | 4 | ||||
| -rw-r--r-- | client/map/tiles/counter.gd | 49 | ||||
| -rw-r--r-- | client/map/tiles/counter_base.gd | 6 | ||||
| -rw-r--r-- | client/map/tiles/cutting_board.gd | 2 | ||||
| -rw-r--r-- | client/map/tiles/door.gd | 2 | ||||
| -rw-r--r-- | client/map/tiles/floor.gd | 2 | ||||
| -rw-r--r-- | client/map/tiles/flour_counter.gd | 12 | ||||
| -rw-r--r-- | client/map/tiles/full_tile.gd | 8 | ||||
| -rw-r--r-- | client/map/tiles/oven.gd | 2 | ||||
| -rw-r--r-- | client/map/tiles/raw_steak_crate.gd | 2 | ||||
| -rw-r--r-- | client/map/tiles/sink.gd | 6 | ||||
| -rw-r--r-- | client/map/tiles/stove.gd | 2 | ||||
| -rw-r--r-- | client/map/tiles/table.gd | 2 | ||||
| -rw-r--r-- | client/map/tiles/tomato_crate.gd | 2 | ||||
| -rw-r--r-- | client/map/tiles/trash.gd | 2 | ||||
| -rw-r--r-- | client/map/tiles/wall.gd | 8 | ||||
| -rw-r--r-- | client/map/tiles/wall_tile.gd | 57 | ||||
| -rw-r--r-- | client/map/tiles/window.gd | 4 | ||||
| -rw-r--r-- | client/menu/credits_menu.gd | 2 | ||||
| -rw-r--r-- | client/menu/main_menu.gd | 7 | ||||
| -rw-r--r-- | client/multiplayer.gd | 9 | ||||
| -rw-r--r-- | client/player/controllable_player.gd | 6 | ||||
| -rw-r--r-- | client/player/marker.gd | 2 | ||||
| -rw-r--r-- | client/player/player.gd | 15 | 
26 files changed, 97 insertions, 119 deletions
| diff --git a/client/game.gd b/client/game.gd index eb338eaa..52856898 100644 --- a/client/game.gd +++ b/client/game.gd @@ -25,6 +25,7 @@ var marker_target = Vector3(0,0,0)  var players := {}  # Called when the node enters the scene tree for the first time.  func _ready(): +	Multiplayer.connect_client()  	await Multiplayer.init  	if Multiplayer.player_id == -1:  		push_error("multiplayer has not been initialized") diff --git a/client/map/item.gd b/client/map/item.gd index 757019c9..fd00f9fa 100644 --- a/client/map/item.gd +++ b/client/map/item.gd @@ -26,7 +26,7 @@ func _init(idx: int, owned_by_: Node3D):  	progress_instance.visible = false  	match Multiplayer.item_names[idx]:  		var t: -			add_child(load("res://models/prefabs/map/bag.tscn").instantiate()) +			#add_child(load("res://models/prefabs/map/bag.tscn").instantiate())  			var mesh = MeshInstance3D.new()  			var text = TextMesh.new()  			var mat = StandardMaterial3D.new() diff --git a/client/map/map.gd b/client/map/map.gd index 1155a70c..c027fd4a 100644 --- a/client/map/map.gd +++ b/client/map/map.gd @@ -15,13 +15,15 @@  # You should have received a copy of the GNU Affero General Public License  # along with this program.  If not, see <https://www.gnu.org/licenses/>.  #  +@tool  class_name Map  extends Node3D  var tile_by_pos: Dictionary = {}  func _ready(): -	Multiplayer.connect("update_map", update) +	if !Engine.is_editor_hint(): +		Multiplayer.connect("update_map", update)  func update(pos, tile_name, neighbors):  	var instance: Floor diff --git a/client/map/tiles/counter.gd b/client/map/tiles/counter.gd index c3032e4f..6783d486 100644 --- a/client/map/tiles/counter.gd +++ b/client/map/tiles/counter.gd @@ -16,7 +16,7 @@  class_name Counter  extends FullTile -var counters = [ +const counters: Array = [  	"counter",  	"pan",  	"sink", @@ -36,41 +36,30 @@ static func interact_target() -> Vector3:  func _init(rename: String, neighbors: Array):  	super(rename, neighbors) -	var facing = 0 -	var edges = neighbors.duplicate() -	for i in range(4): -		var i_name = tile_name(edges[i]) -		if Counter.is_counter(i_name): -			edges[i] = "counter" -		else: -			edges[i] = tile_name(edges[i]) - -	var series: int = 0 -	var last_series: int = 0 -	var adj: Array = [] -	for i in range(4): -		if edges[i] == "floor": -			last_series += 1 -			adj.append(i) -			if last_series > series: -				series = last_series -		else: -			last_series = 0 - -	var count = 4 - adj.size() +	var facing: int = 0 +	var max_series: int = 0 +	var max_idx: int = 0 +	for start in range(4): +		var series = 0 +		for i in range(4): +			if tile_name(neighbors[(start + i) % 4]) == "floor": +				series += 1 +			else: +				break +		if series > max_series: +			max_series = series +			max_idx = start  	# we can neither find out whether it is an inner corner nor an outer corner  	# backsplash -	if series == 1&&count == 3: -		facing = adj[0] % 4 - -		if edges[(adj[0] + 2) % 4] == "wall": +	facing = max_idx +	if max_series == 1: +		if WallTile.is_wall(tile_name(neighbors[(max_idx + 2) % 4])):  			kind = CounterKind.STRAIGHT_BACKSPLASH  		else:  			kind = CounterKind.STRAIGHT -	elif series == 2&&count == 2: -		facing = (adj[0] + 1) % 4 +	elif max_series == 2:  		kind = CounterKind.OUTER_CORNER  	turn_facing(facing) @@ -78,4 +67,4 @@ func _init(rename: String, neighbors: Array):  static func is_counter(tile_name_t) -> bool:  	if tile_name_t == null:  		return false -	return tile_name_t.ends_with("crate")||counters.has(tile_name_t) +	return tile_name_t.ends_with("crate") or counters.has(tile_name_t) diff --git a/client/map/tiles/counter_base.gd b/client/map/tiles/counter_base.gd index ebeebb3b..a4eb6864 100644 --- a/client/map/tiles/counter_base.gd +++ b/client/map/tiles/counter_base.gd @@ -20,8 +20,8 @@ func _init(rename: String, neighbors: Array):  	super(rename, neighbors)  	match kind:  		CounterKind.OUTER_CORNER: -			base.add_child(load("res://models/prefabs/map/kitchencounter_outercorner.tscn").instantiate()) +			base.add_child(load("res://map/tiles/counter_outer_corner.res").instantiate())  		CounterKind.STRAIGHT: -			base.add_child(load("res://models/prefabs/map/kitchencounter_straight_A.tscn").instantiate()) +			base.add_child(load("res://map/tiles/counter_straight.res").instantiate())  		CounterKind.STRAIGHT_BACKSPLASH: -			base.add_child(load("res://models/prefabs/map/kitchencounter_straight_A_backsplash.tscn").instantiate()) +			base.add_child(load("res://tiles/counter_straight_backsplash.tscn").instantiate()) diff --git a/client/map/tiles/cutting_board.gd b/client/map/tiles/cutting_board.gd index 944a7a9f..098cc06c 100644 --- a/client/map/tiles/cutting_board.gd +++ b/client/map/tiles/cutting_board.gd @@ -18,4 +18,4 @@ extends CounterBase  func _init(rename: String, neighbors: Array):  	super(rename, neighbors) -	base.add_child(load("res://models/prefabs/map/cuttingboard.tscn").instantiate()) +	base.add_child(load("res://map/cutting_board.tscn").instantiate()) diff --git a/client/map/tiles/door.gd b/client/map/tiles/door.gd index cfba08b7..d3f977ad 100644 --- a/client/map/tiles/door.gd +++ b/client/map/tiles/door.gd @@ -23,5 +23,5 @@ func _init(rename: String, neighbors: Array):  	for i in range(4):  		if tile_name(neighbors[i]) == "door":  			facing = i % 4 -	base.add_child(load("res://models/prefabs/map/door.tscn").instantiate()) +	base.add_child(load("res://map/door.tscn").instantiate())  	turn_facing(facing) diff --git a/client/map/tiles/floor.gd b/client/map/tiles/floor.gd index fec68cbd..69a347db 100644 --- a/client/map/tiles/floor.gd +++ b/client/map/tiles/floor.gd @@ -28,7 +28,7 @@ enum Facing {  }  func _init(rename: String, _neighbors: Array): -	var floor_tile = load("res://models/prefabs/map/floor_kitchen_small.tscn").instantiate() +	var floor_tile = load("res://map/floor.tscn").instantiate()  	floor_tile.position += Vector3(0.5, 0, 0.5)  	add_child(floor_tile)  	base.name = "Base" diff --git a/client/map/tiles/flour_counter.gd b/client/map/tiles/flour_counter.gd index 4bf2b1f3..237d0c66 100644 --- a/client/map/tiles/flour_counter.gd +++ b/client/map/tiles/flour_counter.gd @@ -18,9 +18,9 @@ extends CounterBase  func _init(rename: String, neighbors: Array):  	super(rename, neighbors) -	var bag = load("res://models/prefabs/map/bag.tscn").instantiate() -	# this is supposed to be overridden -	@warning_ignore("static_called_on_instance") -	bag.position = interact_target() -	bag.rotation_degrees.y = 45 -	base.add_child(bag) +	# var bag = load("res://models/prefabs/map/bag.tscn").instantiate() +	# # this is supposed to be overridden +	# @warning_ignore("static_called_on_instance") +	# bag.position = interact_target() +	# bag.rotation_degrees.y = 45 +	# base.add_child(bag) diff --git a/client/map/tiles/full_tile.gd b/client/map/tiles/full_tile.gd index cc2b887b..3155913e 100644 --- a/client/map/tiles/full_tile.gd +++ b/client/map/tiles/full_tile.gd @@ -28,11 +28,3 @@ func _init(rename: String, neighbors: Array):  	static_body.add_child(shape)  	static_body.name = "Body"  	base.add_child(static_body) - -# defines where items go when interacting -static func interact_target() -> Vector3: -	return Vector3(0, 0, 0) - -# actions when interacting, e.g. animations -func interact(): -	pass diff --git a/client/map/tiles/oven.gd b/client/map/tiles/oven.gd index 88da3adb..e68e809c 100644 --- a/client/map/tiles/oven.gd +++ b/client/map/tiles/oven.gd @@ -18,4 +18,4 @@ extends Counter  func _init(rename: String, neighbors: Array):  	super(rename, neighbors) -	base.add_child(load("res://models/prefabs/map/oven.tscn").instantiate()) +	base.add_child(load("res://map/oven.tscn").instantiate()) diff --git a/client/map/tiles/raw_steak_crate.gd b/client/map/tiles/raw_steak_crate.gd index 8ff93d6b..6287271b 100644 --- a/client/map/tiles/raw_steak_crate.gd +++ b/client/map/tiles/raw_steak_crate.gd @@ -18,4 +18,4 @@ extends Crate  func _init(rename: String, neighbors: Array):  	super(rename, neighbors) -	base.add_child(load("res://models/prefabs/map/crate_steak.tscn").instantiate()) +	base.add_child(load("res://map/raw_steak_crate.tscn").instantiate()) diff --git a/client/map/tiles/sink.gd b/client/map/tiles/sink.gd index e4eaff60..145c97c9 100644 --- a/client/map/tiles/sink.gd +++ b/client/map/tiles/sink.gd @@ -20,8 +20,8 @@ func _init(rename: String, neighbors: Array):  	super(rename, neighbors)  	match kind:  		CounterKind.STRAIGHT: -			base.add_child(load("res://models/prefabs/map/kitchencounter_sink.tscn").instantiate()) +			base.add_child(load("res://map/sink.tscn").instantiate())  		CounterKind.STRAIGHT_BACKSPLASH: -			base.add_child(load("res://models/prefabs/map/kitchencounter_sink_backsplash.tscn").instantiate()) +			base.add_child(load("res://map/sink_backsplash.tscn").instantiate())  		_: -			base.add_child(load("res://models/prefabs/map/kitchencounter_sink.tscn").instantiate()) +			base.add_child(load("res://map/sink.tscn").instantiate()) diff --git a/client/map/tiles/stove.gd b/client/map/tiles/stove.gd index 93fad5a3..45204964 100644 --- a/client/map/tiles/stove.gd +++ b/client/map/tiles/stove.gd @@ -18,4 +18,4 @@ extends Counter  func _init(rename: String, neighbors: Array):  	super(rename, neighbors) -	base.add_child(load("res://models/prefabs/map/stove_single.tscn").instantiate()) +	base.add_child(load("res://map/stove.tscn").instantiate()) diff --git a/client/map/tiles/table.gd b/client/map/tiles/table.gd index 533223a4..3446991d 100644 --- a/client/map/tiles/table.gd +++ b/client/map/tiles/table.gd @@ -18,4 +18,4 @@ extends FullTile  func _init(rename: String, neighbors: Array):  	super(rename, neighbors) -	base.add_child(load("res://models/prefabs/map/table_round_A_small.tscn").instantiate()) +	base.add_child(load("res://map/table.tscn").instantiate()) diff --git a/client/map/tiles/tomato_crate.gd b/client/map/tiles/tomato_crate.gd index 078d0ba2..876588da 100644 --- a/client/map/tiles/tomato_crate.gd +++ b/client/map/tiles/tomato_crate.gd @@ -18,4 +18,4 @@ extends Crate  func _init(rename: String, neighbors: Array):  	super(rename, neighbors) -	base.add_child(load("res://models/prefabs/map/crate_tomatoes.tscn").instantiate()) +	base.add_child(load("res://map/tomato_crate.tscn").instantiate()) diff --git a/client/map/tiles/trash.gd b/client/map/tiles/trash.gd index fed1a502..b156c366 100644 --- a/client/map/tiles/trash.gd +++ b/client/map/tiles/trash.gd @@ -18,4 +18,4 @@ extends Crate  func _init(rename: String, neighbors: Array):  	super(rename, neighbors) -	base.add_child(load("res://models/prefabs/map/crate_trash.tscn").instantiate()) +	base.add_child(load("res://models/prefabs/map/trash.tscn").instantiate()) diff --git a/client/map/tiles/wall.gd b/client/map/tiles/wall.gd index 0201d4d6..21e28843 100644 --- a/client/map/tiles/wall.gd +++ b/client/map/tiles/wall.gd @@ -20,10 +20,10 @@ func _init(rename: String, neighbors: Array):  	super(rename, neighbors)  	match kind:  		WallKind.STRAIGHT: -			base.add_child(load("res://models/prefabs/map/wall_straight.tscn").instantiate()) +			base.add_child(load("res://map/wall_straight.tscn").instantiate())  		WallKind.OUTER_CORNER: -			base.add_child(load("res://models/prefabs/map/wall_corner.tscn").instantiate()) +			base.add_child(load("res://map/wall_corner.tscn").instantiate())  		WallKind.T: -			base.add_child(load("res://models/prefabs/map/wall_t.tscn").instantiate()) +			base.add_child(load("res://map/wall_t.tscn").instantiate())  		WallKind.CROSS: -			base.add_child(load("res://models/prefabs/map/wall_cross.tscn").instantiate()) +			base.add_child(load("res://map/wall_cross.tscn").instantiate()) diff --git a/client/map/tiles/wall_tile.gd b/client/map/tiles/wall_tile.gd index 6cc5253a..85e3e6ff 100644 --- a/client/map/tiles/wall_tile.gd +++ b/client/map/tiles/wall_tile.gd @@ -35,44 +35,33 @@ var facing: int = 0  func _init(rename: String, neighbors: Array):  	super(rename, neighbors) -	var edges = neighbors.duplicate() +	var max_series: int = 0 +	var max_idx: int = 0 +	for start in range(4): +		var series = 0 +		for i in range(4): +			var i_name = tile_name(neighbors[(start + i) % 4]) +			if is_wall(i_name): +				series += 1 +			else: +				break +		if series > max_series: +			max_series = series +			max_idx = start -	var series: int = 0 -	var last_series: int = 0 -	var adj: Array = [] - -	for i in range(4): -		var i_name = tile_name(edges[i]) -		if is_wall(i_name): -			edges[i] = "wall" -		else: -			edges[i] = tile_name(edges[i]) - -	for i in range(4): -		if edges[i] != "wall": -			last_series += 1 -			adj.append(i) -			if last_series > series: -				series = last_series -		else: -			last_series = 0 - -	var count = 4 - adj.size() - -	if series == 1&&count == 2: -		facing = adj[0] +	if max_series == 1: +		facing = max_idx  		kind = WallKind.STRAIGHT -	elif series == 2&&count == 2: -		facing = adj[0] +	elif max_series == 2: +		facing = max_idx  		kind = WallKind.OUTER_CORNER -	elif series == 1&&count == 3: -		facing = adj[0] +	elif max_series == 3: +		facing = max_idx  		kind = WallKind.T -	elif series == 0&&count == 4: -		facing = adj[0] +	elif max_series == 4: +		facing = max_idx  		kind = WallKind.CROSS  	turn_facing(facing) -func is_wall(_s: String): -	return false # TODO - +static func is_wall(tile_name_t) -> bool: +	return WALLS.has(tile_name_t) diff --git a/client/map/tiles/window.gd b/client/map/tiles/window.gd index b2926080..7747bbcd 100644 --- a/client/map/tiles/window.gd +++ b/client/map/tiles/window.gd @@ -23,7 +23,7 @@ func _init(rename: String, neighbors: Array):  	super(rename, neighbors)  	match kind:  		WallKind.STRAIGHT: -			base.add_child(load("res://models/prefabs/map/window.tscn").instantiate()) +			base.add_child(load("res://map/window.tscn").instantiate())  		WallKind.OUTER_CORNER:  			push_warning("There is no corner window!") -			base.add_child(load("res://models/prefabs/map/window.tscn").instantiate()) +			base.add_child(load("res://map/window.tscn").instantiate()) diff --git a/client/menu/credits_menu.gd b/client/menu/credits_menu.gd index a48d5461..3949b5c0 100644 --- a/client/menu/credits_menu.gd +++ b/client/menu/credits_menu.gd @@ -16,4 +16,4 @@  extends Control  func _on_back_pressed(): -	$SceneTransition.transition_to("res://scenes/main_menu.tscn") +	$SceneTransition.transition_to("res://menu/main_menu.tscn") diff --git a/client/menu/main_menu.gd b/client/menu/main_menu.gd index df09cf7f..cb32f175 100644 --- a/client/menu/main_menu.gd +++ b/client/menu/main_menu.gd @@ -16,9 +16,6 @@  #   extends Control -@onready var quick_connect = $side/margin/options/quick_connect -@onready var quit_button = $side/margin/options/quit -  func _ready():  	quick_connect.grab_focus()  	if OS.has_feature("web"): @@ -28,7 +25,7 @@ func _on_quit_pressed():  	get_tree().quit()  func _on_credits_pressed(): -	$SceneTransition.transition_to("res://scenes/credits_menu.tscn") +	$SceneTransition.transition_to("res://menu/credits_menu.tscn")  func _on_connect_pressed():  	connect_to($side/options/connect/uri.text) @@ -46,4 +43,4 @@ func _on_quick_connect_pressed():  func connect_to(url):  	print("Connecting to %s" % url)  	Multiplayer.url = url -	$SceneTransition.transition_to("res://scenes/game.tscn") +	$SceneTransition.transition_to("res://game.tscn") diff --git a/client/multiplayer.gd b/client/multiplayer.gd index 534ef663..7ccfd377 100644 --- a/client/multiplayer.gd +++ b/client/multiplayer.gd @@ -29,6 +29,8 @@ 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_player_item(player: int, item: int) +signal remove_player_item(player: int)  signal set_progress(tile: Vector2i, progress: float, warn: bool)  signal set_finished(tile: Vector2i, warn: bool) @@ -44,7 +46,8 @@ var player_id = -1  var tileid_by_pos: Dictionary = {} -func connectClient(url: String): +var url = "" +func connect_client():  	socket.connect_to_url(url)  	connected = true @@ -103,8 +106,8 @@ func handle_packet(bytes: PackedByteArray):  			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) +			var player = decoded["player"] +			emit_signal("put_item", tile, player)  		"set_active":  			var tile = pos_to_vec2i(decoded["tile"])  			var warn = decoded["warn"] diff --git a/client/player/controllable_player.gd b/client/player/controllable_player.gd index 4c157349..bb9c75e8 100644 --- a/client/player/controllable_player.gd +++ b/client/player/controllable_player.gd @@ -32,7 +32,7 @@ func _ready():  	add_child(timer)  	timer.start()  	timer.connect("timeout", func(): -		Multiplayer.send_position(Vector2(position.x, position.z), rotation.y) +		Multiplayer.send_position(position_, rotation_)  	)  func _process(delta): @@ -53,7 +53,7 @@ func _process(delta):  func update(dt: float, input: Vector2):  	var direction = input.limit_length(1.); -	rotation.y = atan2(self.facing.x, self.facing.y); +	rotation_ = atan2(self.facing.x, self.facing.y);  	if direction.length() > 0.1:  		self.facing = direction + (self.facing - direction) * exp(-dt * 10.);  	self.velocity_ += direction * dt * PLAYER_SPEED; @@ -76,7 +76,7 @@ func collide(dt: float):  			self.position_ += (PLAYER_SIZE - d) * grad;  			self.velocity_ -= grad * grad.dot(self.velocity_) -	 +  	for player: Player in game.players.values():  		var diff = self.position_ - player.position_  		var d = diff.length() diff --git a/client/player/marker.gd b/client/player/marker.gd index fa11ff98..6e3e6ffa 100644 --- a/client/player/marker.gd +++ b/client/player/marker.gd @@ -16,7 +16,7 @@  class_name Marker  extends Node3D -@onready var _cube: MeshInstance3D = $Cubew +@onready var _cube: MeshInstance3D = $Cube  func set_interactive(val: bool):  	var mat: ShaderMaterial = _cube.get_active_material(0) diff --git a/client/player/player.gd b/client/player/player.gd index 423855e9..b8982aa7 100644 --- a/client/player/player.gd +++ b/client/player/player.gd @@ -22,11 +22,15 @@ const PLAYER_SIZE: float = 0.4  const SPEED: float = 25.  var game: Game +var rotation_ = 0. +var rotation_anim = 0.  var position_ = Vector2(0, 0) +var position_anim = Vector2(0, 0) -var mesh = preload("res://scenes/player.tscn").instantiate() +var mesh = preload("res://player/player.tscn").instantiate() -var hand: Node3D = null +var hand: Item = null +var hand_base: Node3D = Node3D.new()  var _anim_angle: float = 0.0 @@ -40,6 +44,9 @@ func _init(_id: int, new_name: String, pos: Vector2, _character: int, new_game:  	name = new_name  	game = new_game +	hand_base.position = HAND_BASE_POSITION +	add_child(hand_base) +  func update_position(new_position: Vector2, new_rotation: float):  	position_ = new_position  	rotation_ = new_rotation @@ -63,9 +70,7 @@ func take_item(tile: Floor):  	if hand != null:  		push_error("already holding an item")  	var i = tile.take_item() -	if i == null: -		push_error("tile is null") -	hand = i +	set_item(i)  func put_item(tile: Floor):  	var i = remove_item() | 
