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() |