diff options
| author | metamuffin <metamuffin@disroot.org> | 2024-06-23 20:05:28 +0200 | 
|---|---|---|
| committer | metamuffin <metamuffin@disroot.org> | 2024-06-23 20:05:28 +0200 | 
| commit | 3885cbfae528608350804f704dba9c82fdbfd027 (patch) | |
| tree | 384a37820cf43d1868493600a8e0566c78b9ab4a /client/scripts | |
| parent | 93221433e704e1c98cc84c55caefddb85c2d5717 (diff) | |
| download | hurrycurry-3885cbfae528608350804f704dba9c82fdbfd027.tar hurrycurry-3885cbfae528608350804f704dba9c82fdbfd027.tar.bz2 hurrycurry-3885cbfae528608350804f704dba9c82fdbfd027.tar.zst | |
move files around
Diffstat (limited to 'client/scripts')
36 files changed, 0 insertions, 1646 deletions
| diff --git a/client/scripts/character.gd b/client/scripts/character.gd deleted file mode 100644 index 847bd7b6..00000000 --- a/client/scripts/character.gd +++ /dev/null @@ -1,28 +0,0 @@ -# Undercooked - a game about cooking -# Copyright 2024 tpart -#  -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU Affero General Public License as published by -# the Free Software Foundation, version 3 of the License only. -#  -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the -# GNU Affero General Public License for more details. -#  -# 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/>. -#  -extends Node3D -class_name Character - -@onready var hand_animations = $HandAnimations - -func _ready(): -	play_animation("idle") - -func play_animation(name_: String): -	hand_animations.play(name_) - -func _on_hand_animations_animation_finished(name_): -	hand_animations.play(name_) diff --git a/client/scripts/controllable_player.gd b/client/scripts/controllable_player.gd deleted file mode 100644 index 4c157349..00000000 --- a/client/scripts/controllable_player.gd +++ /dev/null @@ -1,110 +0,0 @@ -# Undercooked - a game about cooking -# Copyright 2024 nokoe -# Copyright 2024 metamuffin -#  -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU Affero General Public License as published by -# the Free Software Foundation, version 3 of the License only. -#  -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the -# GNU Affero General Public License for more details. -#  -# 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/>. -#  -class_name ControllablePlayer -extends Player - - -const PLAYER_SPEED: float = 25.; - -var facing = Vector2(1, 0) -var velocity_ = Vector2(0, 0) - -var target: Vector2i = Vector2i(0, 0) - -func _ready(): -	var timer = Timer.new() -	timer.one_shot = false -	timer.wait_time = 1. / 25. -	add_child(timer) -	timer.start() -	timer.connect("timeout", func(): -		Multiplayer.send_position(Vector2(position.x, position.z), rotation.y) -	) - -func _process(delta): -	var input = Vector2(Input.get_axis("left", "right"), Input.get_axis("forward", "backwards")).normalized() -	input = input.rotated(-game.camera.angle_target) -	position_anim = position_ -	rotation_anim = rotation_ -	if Input.is_action_pressed("interact") or Input.is_action_just_released("interact"): -		input *= 0 -	else: -		target = Vector2i( -			int(floor(position.x + sin(rotation.y))), -			int(floor(position.z + cos(rotation.y))) -		) -	interact() -	update(delta, input) -	super(delta) - -func update(dt: float, input: Vector2): -	var direction = input.limit_length(1.); -	rotation.y = 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; -	self.position_ += self.velocity_ * dt; -	self.velocity_ = self.velocity_ * exp(-dt * 5.); -	collide(dt); - -func collide(dt: float): -	for xo in range(-1,2): -		for yo in range(-1,2): -			var tile = Vector2i(xo, yo) + Vector2i(self.position_); -			if !Multiplayer.get_tile_collision(tile): continue -			tile = Vector2(tile) -			var d = aabb_point_distance(tile, tile + Vector2.ONE, self.position_); -			if d > PLAYER_SIZE: continue -			var h = 0.01; -			var d_sample_x = aabb_point_distance(tile, tile + Vector2.ONE, self.position_ + Vector2(h, 0)); -			var d_sample_y = aabb_point_distance(tile, tile + Vector2.ONE, self.position_ + Vector2(0, h)); -			var grad = (Vector2(d_sample_x - d, d_sample_y - d)) / h; - -			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() -		if d < 0.01: continue -		if d >= PLAYER_SIZE * 2: continue -		var norm = diff.normalized(); -		var f = 100 / (1 + d) -		self.velocity_.x += norm.x * f * dt -		self.velocity_.y += norm.y * f * dt - -func aabb_point_distance(mi: Vector2, ma: Vector2, p: Vector2) -> float: -	return (p - p.clamp(mi, ma)).length() - -func update_position(new_position: Vector2, _new_rotation: float): -	if (new_position - position_).length() > 3.: -		position_ = new_position - -func interact(): -	var tile_idx = str(target) -	var t: Floor = game.map.tile_by_pos.get(tile_idx) -	if t != null: -		game.marker.set_interactive(Multiplayer.get_tile_interactive(target)) -		game.marker.visible = true -		game.marker_target = t.item_base.global_position -		if Input.is_action_just_pressed("interact"): -			Multiplayer.send_interact(target, true) -			t.interact() -		elif Input.is_action_just_released("interact"): -			Multiplayer.send_interact(target, false) -	else: -		game.marker.visible = false diff --git a/client/scripts/credits_menu.gd b/client/scripts/credits_menu.gd deleted file mode 100644 index a48d5461..00000000 --- a/client/scripts/credits_menu.gd +++ /dev/null @@ -1,19 +0,0 @@ -# Undercooked - a game about cooking -# Copyright 2024 metamuffin -#  -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU Affero General Public License as published by -# the Free Software Foundation, version 3 of the License only. -#  -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the -# GNU Affero General Public License for more details. -#  -# 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/>. -#  -extends Control - -func _on_back_pressed(): -	$SceneTransition.transition_to("res://scenes/main_menu.tscn") diff --git a/client/scripts/follow_camera.gd b/client/scripts/follow_camera.gd deleted file mode 100644 index 74355688..00000000 --- a/client/scripts/follow_camera.gd +++ /dev/null @@ -1,65 +0,0 @@ -# Undercooked - a game about cooking -# Copyright 2024 nokoe -# Copyright 2024 metamuffin -#  -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU Affero General Public License as published by -# the Free Software Foundation, version 3 of the License only. -#  -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the -# GNU Affero General Public License for more details. -#  -# 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/>. -#  -class_name FollowCamera -extends Camera3D - -const ROTATE_SPEED: float = 1.5 -const ROTATE_WEIGHT: float = 8.0 -const ROTATE_UP_SPEED: float = 0.7 -const ROTATE_UP_WEIGHT: float = 4.0 -const ANGLE_UP_MIN: float = 0.5 -const ANGLE_UP_MAX: float = 1.2 -const LOOK_WEIGHT: float = 8.0 -const MOVE_WEIGHT: float = 2.0 -const CAMERA_DISTANCE: float = 10 - -@export var target: Node3D - -var angle_target: float = 0 -var angle: float = 0 -var angle_up_target: float = 1 -var angle_up: float = 1 -var ground: Vector3 - -func _ready(): -	if target == null: -		push_warning("target is not set") -	else: -		ground = target.position - -func _process(delta): -	if target != null: -		follow(delta) - -func follow(delta): -	var new_transform = transform.looking_at(target.position) - -	transform.basis = Basis.from_euler(Vector3( -		lerp_angle(transform.basis.get_euler().x, new_transform.basis.get_euler().x, delta * LOOK_WEIGHT), -		lerp_angle(transform.basis.get_euler().y, new_transform.basis.get_euler().y, delta * LOOK_WEIGHT), -		lerp_angle(transform.basis.get_euler().z, new_transform.basis.get_euler().z, delta * LOOK_WEIGHT) -	)) - -	angle_target += Input.get_axis("rotate_left", "rotate_right") * ROTATE_SPEED * delta -	angle = lerp_angle(angle, angle_target, delta * ROTATE_WEIGHT) - -	angle_up_target += Input.get_axis("rotate_down", "rotate_up") * ROTATE_UP_SPEED * delta -	angle_up_target = clamp(angle_up_target, ANGLE_UP_MIN, ANGLE_UP_MAX) -	angle_up = lerp_angle(angle_up, angle_up_target, delta * ROTATE_UP_WEIGHT) - -	ground = ground.lerp(target.position, delta * MOVE_WEIGHT) -	position = ground + Vector3(0, sin(angle_up) * CAMERA_DISTANCE, cos(angle_up) * CAMERA_DISTANCE).rotated(Vector3.UP, angle) diff --git a/client/scripts/game.gd b/client/scripts/game.gd deleted file mode 100644 index eb338eaa..00000000 --- a/client/scripts/game.gd +++ /dev/null @@ -1,110 +0,0 @@ -# Undercooked - a game about cooking -# Copyright 2024 nokoe -# Copyright 2024 metamuffin -#  -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU Affero General Public License as published by -# the Free Software Foundation, version 3 of the License only. -#  -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the -# GNU Affero General Public License for more details. -#  -# 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/>. -#  -class_name Game -extends Node3D - -@onready var camera: FollowCamera = $FollowCamera -@onready var map: Map = $Map -@onready var marker: Marker = $Marker -var marker_target = Vector3(0,0,0) - -var players := {} -# Called when the node enters the scene tree for the first time. -func _ready(): -	await Multiplayer.init -	if Multiplayer.player_id == -1: -		push_error("multiplayer has not been initialized") -	Multiplayer.connect("add_player", -		func(player: int, player_name: String, pos: Vector2, character: int): -			var player_instance: Player -			if player == Multiplayer.player_id: -				player_instance = ControllablePlayer.new(player, player_name, pos, character, self) -				camera.target = player_instance -			else: -				player_instance = Player.new(player, player_name, pos, character, self) -			players[player] = player_instance -			add_child(player_instance) -	) - -	Multiplayer.connect("position", -		func(player: int, pos: Vector2, rot: float): -			var player_instance: Player = players[player] -			player_instance.update_position(pos, rot) -	) - -	Multiplayer.connect("remove_player", func(id: int): -		var player: Player = players.get(id) -		if player != null: -			if player.hand != null: -				player.hand.queue_free() -			players.erase(id) -			player.queue_free() -	) - -	Multiplayer.connect("set_tile_item", func(tile: Vector2i, item: int): -		var t: Floor = map.tile_by_pos[str(tile)] -		var i = Item.new(item, t.item_base) -		add_child(i) -		i.name = Multiplayer.item_names[item] -		t.set_item(i) -	) - -	Multiplayer.connect("remove_tile_item", func(tile: Vector2i): -		var t: Floor = map.tile_by_pos[str(tile)] -		t.take_item().queue_free() -	) - -	Multiplayer.connect("set_player_item", func(player: int, item: int): -		var p: Player = players[player] -		var i = Item.new(item, p.hand_base) -		add_child(i) -		i.name = Multiplayer.item_names[item] -		p.set_item(i) -	) - -	Multiplayer.connect("remove_player_item", func(player: int): -		var p: Player = players[player] -		p.remove_item().queue_free() -	) - -	Multiplayer.connect("take_item", func(tile: Vector2i, player: int): -		var t: Floor = map.tile_by_pos[str(tile)] -		var p: Player = players[player] -		p.take_item(t) -	) - -	Multiplayer.connect("put_item", func(tile: Vector2i, player: int): -		var t: FullTile = map.tile_by_pos[str(tile)] -		var p: Player = players[player] -		p.put_item(t) -	) - -	Multiplayer.connect("set_progress", func(tile: Vector2i, progress: float, warn: bool): -		var t: FullTile = map.tile_by_pos[str(tile)] -		t.progress(progress, warn) -	) - -	Multiplayer.connect("set_finished", func(tile: Vector2i, warn: bool): -		var t: FullTile = map.tile_by_pos[str(tile)] -		t.finish(warn) -	) - -	Multiplayer.send_join("Blub", 1) - - -func _process(delta): -	marker.position = lerp(marker.position, marker_target, delta * 40.0) diff --git a/client/scripts/item.gd b/client/scripts/item.gd deleted file mode 100644 index 74e08c48..00000000 --- a/client/scripts/item.gd +++ /dev/null @@ -1,56 +0,0 @@ -# Undercooked - a game about cooking -# Copyright 2024 nokoe -#  -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU Affero General Public License as published by -# the Free Software Foundation, version 3 of the License only. -#  -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the -# GNU Affero General Public License for more details. -#  -# 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/>. -#  -class_name Item -extends Node3D - -var owned_by: Node3D - -var progress_instance: ProgressBar3D = preload("res://scenes/progress.tscn").instantiate() - -func _init(idx: int, owned_by_: Node3D): -	progress_instance.position.y = 2. -	add_child(progress_instance) -	progress_instance.visible = false -	match Multiplayer.item_names[idx]: -		var t: -			add_child(load("res://models/prefabs/map/bag.tscn").instantiate()) -			var mesh = MeshInstance3D.new() -			var text = TextMesh.new() -			var mat = StandardMaterial3D.new() -			text.text = t -			text.font = SystemFont.new() -			text.depth = 0 -			mesh.mesh = text -			mesh.position.y = 0.5 -			mesh.scale = Vector3(3, 3, 3) -			mat.billboard_mode = mat.BILLBOARD_ENABLED -			mat.shading_mode = BaseMaterial3D.SHADING_MODE_UNSHADED -			text.material = mat -			add_child(mesh) -	owned_by = owned_by_ - -func _ready(): -	position = owned_by.global_position - -func _process(delta): -	position = lerp(position, owned_by.global_position, delta * 30.0) - -func progress(p: float, warn: bool): -	progress_instance.visible = true -	progress_instance.set_progress(p, warn) - -func finish(_warn: bool): -	progress_instance.visible = false diff --git a/client/scripts/main_menu.gd b/client/scripts/main_menu.gd deleted file mode 100644 index df09cf7f..00000000 --- a/client/scripts/main_menu.gd +++ /dev/null @@ -1,49 +0,0 @@ -# Undercooked - a game about cooking -# Copyright 2024 metamuffin -# Copyright 2024 tpart -#  -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU Affero General Public License as published by -# the Free Software Foundation, version 3 of the License only. -#  -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the -# GNU Affero General Public License for more details. -#  -# 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/>. -#  -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"): -		quit_button.hide() - -func _on_quit_pressed(): -	get_tree().quit() - -func _on_credits_pressed(): -	$SceneTransition.transition_to("res://scenes/credits_menu.tscn") - -func _on_connect_pressed(): -	connect_to($side/options/connect/uri.text) - -func _on_quick_connect_pressed(): -	if OS.has_feature("JavaScript"): -		connect_to(JavaScriptBridge.eval(""" -			window.location.protocol.endsWith("s:") -			? `wss://${window.location.host}/` -			: `ws://${window.location.hostname}:27032/` -		""")) -	else: -		connect_to("wss://undercooked.metamuffin.org/") - -func connect_to(url): -	print("Connecting to %s" % url) -	Multiplayer.url = url -	$SceneTransition.transition_to("res://scenes/game.tscn") diff --git a/client/scripts/map.gd b/client/scripts/map.gd deleted file mode 100644 index b5e519a6..00000000 --- a/client/scripts/map.gd +++ /dev/null @@ -1,77 +0,0 @@ -# Undercooked - a game about cooking -# Copyright 2024 nokoe -# Copyright 2024 tpart -# Copyright 2024 metamuffin -#  -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU Affero General Public License as published by -# the Free Software Foundation, version 3 of the License only. -#  -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the -# GNU Affero General Public License for more details. -#  -# 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) - -func update(pos, tile_name, neighbors): -	var instance: Floor -	var node_name = str(pos) - -	if has_node(node_name): -		queue_free_rename(get_node(node_name)) - -	match tile_name: -		"trash": -			instance = Trash.new(node_name, neighbors) -		"tomato-crate": -			instance = TomatoCrate.new(node_name, neighbors) -		"cuttingboard": -			instance = CuttingBoard.new(node_name, neighbors) -		"counter": -			instance = CounterBase.new(node_name, neighbors) -		"flour-crate": -			instance = FlourCounter.new(node_name, neighbors) -		"oven": -			instance = Oven.new(node_name, neighbors) -		"raw-steak-crate": -			instance = RawSteakCrate.new(node_name, neighbors) -		"stove": -			instance = Stove.new(node_name, neighbors) -		"sink": -			instance = Sink.new(node_name, neighbors) -		"dirty-plate-crate": -			instance = CounterBase.new(node_name, neighbors) -		"wall": -			instance = Wall.new(node_name, neighbors) -		"chair": -			instance = Chair.new(node_name, neighbors) -		"table": -			instance = Table.new(node_name, neighbors) -		"floor": -			instance = Floor.new(node_name, neighbors) -		"window": -			instance = WallWindow.new(node_name, neighbors) -		"door": -			instance = Door.new(node_name, neighbors) -		var t: -			push_warning("tile tile %s unknown" % t) -			instance = GenericTile.new(node_name, neighbors, t) - -	instance.position = Vector3(pos[0], 0, pos[1]) -	tile_by_pos[str(Vector2i(pos[0],pos[1]))] = instance -	add_child(instance) - -func queue_free_rename(node: Node) -> void: -	node.name += "_queued_free" -	node.queue_free() diff --git a/client/scripts/marker.gd b/client/scripts/marker.gd deleted file mode 100644 index 6e3e6ffa..00000000 --- a/client/scripts/marker.gd +++ /dev/null @@ -1,23 +0,0 @@ -# Undercooked - a game about cooking -# Copyright 2024 nokoe -#  -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU Affero General Public License as published by -# the Free Software Foundation, version 3 of the License only. -#  -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the -# GNU Affero General Public License for more details. -#  -# 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/>. -#  -class_name Marker -extends Node3D - -@onready var _cube: MeshInstance3D = $Cube - -func set_interactive(val: bool): -	var mat: ShaderMaterial = _cube.get_active_material(0) -	mat.set_shader_parameter("interactive", val) diff --git a/client/scripts/menu_background.gd b/client/scripts/menu_background.gd deleted file mode 100644 index e5b8ac31..00000000 --- a/client/scripts/menu_background.gd +++ /dev/null @@ -1,35 +0,0 @@ -# Undercooked - a game about cooking -# Copyright 2024 metamuffin -# Copyright 2024 tpart -#  -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU Affero General Public License as published by -# the Free Software Foundation, version 3 of the License only. -#  -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the -# GNU Affero General Public License for more details. -#  -# 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 -extends Node3D - -@onready var map = $map -@onready var voxel_gi: VoxelGI = $VoxelGI - -const NULLS = [null,null,null,null] -const BUCKETS = [[], ["floor","floor","floor","floor","tomato-crate", "raw-steak-crate"], ["table", "chair", "counter"], ["sink", "stove"]] - -func _ready(): -	for x in range(-10,11): -		for y in range(-10,11): -			var w = exp(-sqrt(x*x+y*y) * 0.15) -			var k = randf() * w -			var bucket = BUCKETS[int(floor(k * BUCKETS.size())) % BUCKETS.size()] -			if bucket.size() == 0: continue -			var tile = bucket[randi() % bucket.size()] -			map.update([x,y], tile, NULLS) -	voxel_gi.bake() diff --git a/client/scripts/mirror.gd b/client/scripts/mirror.gd deleted file mode 100644 index ccec0e65..00000000 --- a/client/scripts/mirror.gd +++ /dev/null @@ -1,31 +0,0 @@ -# Undercooked - a game about cooking -# Copyright 2024 tpart -#  -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU Affero General Public License as published by -# the Free Software Foundation, version 3 of the License only. -#  -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the -# GNU Affero General Public License for more details. -#  -# 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 - -# Hand mirror helper script, useful for animating characters - -extends Node3D - -@export var enabled := true - -@onready var hand_right = $Main/HandRight -@onready var hand_left = $Main/HandLeft - - -func _process(delta): -	if enabled: -		hand_right.position = hand_left.position * Vector3(-1,1,1) -		hand_right.rotation = hand_left.rotation * Vector3(1, -1, -1) - Vector3(0.2 * PI, 0, 0) diff --git a/client/scripts/multiplayer.gd b/client/scripts/multiplayer.gd deleted file mode 100644 index 534ef663..00000000 --- a/client/scripts/multiplayer.gd +++ /dev/null @@ -1,205 +0,0 @@ -# Undercooked - a game about cooking -# Copyright 2024 nokoe -# Copyright 2024 metamuffin -# Copyright 2024 tpart -#  -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU Affero General Public License as published by -# the Free Software Foundation, version 3 of the License only. -#  -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the -# GNU Affero General Public License for more details. -#  -# 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/>. -#  -extends Node - -signal init(player_id: int) -signal update_map(tile: int, pos: Array, neighbors: Array) -signal clear_message(player: int) -signal text_message(player: int, text: String) -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() - -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 connectClient(url: String): -	socket.connect_to_url(url) -	connected = true - -func _process(_delta): -	if connected: -		socket.poll() -		var state = socket.get_ready_state() -		if state == WebSocketPeer.STATE_OPEN: -			while socket.get_available_packet_count(): -				handle_packet(socket.get_packet()) -		elif state == WebSocketPeer.STATE_CONNECTING: -			print("connecting") -		elif state == WebSocketPeer.STATE_CLOSING: -			# Keep polling to achieve proper close. -			print("closing") -			pass -		elif state == WebSocketPeer.STATE_CLOSED: -			var code = socket.get_close_code() -			var reason = socket.get_close_reason() -			print("WebSocket closed with code: %d, reason %s. Clean: %s" % [code, reason, code != - 1]) - -func handle_packet(bytes: PackedByteArray): -	var decoded = decode_packet(bytes) - -	if decoded == null: -		return - -	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 -			emit_signal("init", player_id) -		"add_player": -			var id = decoded["id"] -			var player_name = decoded["name"] -			var pos = decoded["position"] -			var character = decoded["character"] -			emit_signal("add_player", id, player_name, pos_to_vec2(pos), character) -		"remove_player": -			var id = decoded["id"] -			emit_signal("remove_player", id) -		"position": -			var player = decoded["player"] -			var pos = decoded["pos"] -			var rot = decoded["rot"] -			emit_signal("position", player, pos_to_vec2(pos), rot) -		"take_item": -			var tile = pos_to_vec2i(decoded["tile"]) -			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_active": -			var tile = pos_to_vec2i(decoded["tile"]) -			var warn = decoded["warn"] -			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"]) -			var item = decoded.get("item") -			if item != null: -				emit_signal("set_tile_item", tile, item) -			else: -				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"] -			var neighbors: Array = decoded["neighbors"] -			tileid_by_pos[str(Vector2i(pos[0],pos[1]))] = tile -			emit_signal("update_map", pos, tile_names[tile], neighbors) -		"communicate": -			var player = decoded["player"] -			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: -					push_error("neither text nor item provided") -			else: -				emit_signal("clear_message", player) -		"error": -			var message = decoded["message"] -			push_warning("server error: %s" % message) -		_: -			push_error("Unrecognized packet type: %s" % packet_type) - -func send_join(player_name: String, character: int): -	send_packet({ -		"type": "join", -		"name": player_name, -		"character": character -	}) - -func send_position(pos: Vector2, rotation: float): -	send_packet({ -		"type": "position", -		"pos": [pos.x, pos.y], -		"rot": rotation -	}) - -func send_interact(pos: Vector2i, edge: bool): -	send_packet({ -		"type": "interact", -		"pos": [pos.x, pos.y], -		"edge": edge -	}) - -func send_packet(packet): -	var json = JSON.stringify(packet) -	socket.send_text(json) - -func decode_packet(bytes: PackedByteArray): -	var json = JSON.new() -	var in_str = bytes.get_string_from_utf8() -	var error = json.parse(in_str) -	if error == OK: -		return json.data -	else: -		print("Decode of packet failed: %s in %s" % [json.get_error_message(), in_str]) -		return null - -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]) - -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] diff --git a/client/scripts/player.gd b/client/scripts/player.gd deleted file mode 100644 index 423855e9..00000000 --- a/client/scripts/player.gd +++ /dev/null @@ -1,81 +0,0 @@ -# Undercooked - a game about cooking -# Copyright 2024 nokoe -# Copyright 2024 metamuffin -# Copyright 2024 tpart -#  -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU Affero General Public License as published by -# the Free Software Foundation, version 3 of the License only. -#  -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the -# GNU Affero General Public License for more details. -#  -# 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/>. -#  -class_name Player -extends Node3D - -const PLAYER_SIZE: float = 0.4 -const SPEED: float = 25. - -var game: Game -var position_ = Vector2(0, 0) - -var mesh = preload("res://scenes/player.tscn").instantiate() - -var hand: Node3D = null - -var _anim_angle: float = 0.0 - -const HAND_BASE_POSITION: Vector3 = Vector3(0, .25, .4) - -@onready var character: Character = $Player/Character - -func _init(_id: int, new_name: String, pos: Vector2, _character: int, new_game: Game): -	add_child(mesh) -	position_ = pos -	name = new_name -	game = new_game - -func update_position(new_position: Vector2, new_rotation: float): -	position_ = new_position -	rotation_ = new_rotation - -func set_item(i: Item): -	i.owned_by = hand_base -	if i == null: -		push_error("tile is null") -	hand = i -	character.play_animation("hold") - -func remove_item() -> Item: -	var i = hand -	if i == null: -		push_error("holding nothing") -	hand = null -	character.play_animation("idle") -	return i - -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 - -func put_item(tile: Floor): -	var i = remove_item() -	tile.put_item(i) - -func _process(delta): -	_anim_angle = fmod(_anim_angle + delta, TAU) -	hand_base.position.y = HAND_BASE_POSITION.y + 0.05 * sin(_anim_angle * 3) -	position_anim = lerp(position_anim, position_, delta * 10) -	rotation_anim = lerp_angle(rotation_anim, rotation_, delta * 10) -	position.x = position_anim.x -	position.z = position_anim.y -	rotation.y = rotation_anim diff --git a/client/scripts/progress.gd b/client/scripts/progress.gd deleted file mode 100644 index 4d6494f6..00000000 --- a/client/scripts/progress.gd +++ /dev/null @@ -1,22 +0,0 @@ -# Undercooked - a game about cooking -# Copyright 2024 nokoe -#  -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU Affero General Public License as published by -# the Free Software Foundation, version 3 of the License only. -#  -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the -# GNU Affero General Public License for more details. -#  -# 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/>. -#  -class_name ProgressBar3D -extends MeshInstance3D - -func set_progress(progress: float, bad: bool): -	var mat: ShaderMaterial = self.get_active_material(0) -	mat.set_shader_parameter("progress", progress) -	mat.set_shader_parameter("bad", bad) diff --git a/client/scripts/scene_transition.gd b/client/scripts/scene_transition.gd deleted file mode 100644 index b5c89579..00000000 --- a/client/scripts/scene_transition.gd +++ /dev/null @@ -1,28 +0,0 @@ -# Undercooked - a game about cooking -# Copyright 2024 metamuffin -#  -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU Affero General Public License as published by -# the Free Software Foundation, version 3 of the License only. -#  -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the -# GNU Affero General Public License for more details. -#  -# 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/>. -#  -class_name SceneTransition -extends ColorRect - - -@onready var anim = $animation - -func _ready(): -	anim.play("fade_in") - -func transition_to(path: String): -	anim.play("fade_out") -	await anim.animation_finished -	get_tree().change_scene_to_file(path) diff --git a/client/scripts/socket_test.gd b/client/scripts/socket_test.gd deleted file mode 100644 index 853dd981..00000000 --- a/client/scripts/socket_test.gd +++ /dev/null @@ -1,22 +0,0 @@ -# Undercooked - a game about cooking -# Copyright 2024 tpart -#  -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU Affero General Public License as published by -# the Free Software Foundation, version 3 of the License only. -#  -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the -# GNU Affero General Public License for more details. -#  -# 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/>. -#  -extends Control - -@onready var address = $VBoxContainer/LineEdit - -func _on_button_pressed(): -	Multiplayer.connectClient(address.text) -	get_tree().change_scene_to_file("res://scenes/game.tscn") diff --git a/client/scripts/tiles/chair.gd b/client/scripts/tiles/chair.gd deleted file mode 100644 index 34735fda..00000000 --- a/client/scripts/tiles/chair.gd +++ /dev/null @@ -1,28 +0,0 @@ -# Undercooked - a game about cooking -# Copyright 2024 nokoe -#  -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU Affero General Public License as published by -# the Free Software Foundation, version 3 of the License only. -#  -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the -# GNU Affero General Public License for more details. -#  -# 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/>. -#  -class_name Chair -extends Floor - -func _init(rename: String, neighbors: Array): -	super(rename, neighbors) -	var chair = load("res://models/prefabs/map/chair_A.tscn").instantiate() -	var facing = 0; -	for i in range(4): -		if tile_name(neighbors[i]) == "table": -			facing = i -			break -	base.add_child(chair) -	turn_facing(facing) diff --git a/client/scripts/tiles/counter.gd b/client/scripts/tiles/counter.gd deleted file mode 100644 index c3032e4f..00000000 --- a/client/scripts/tiles/counter.gd +++ /dev/null @@ -1,81 +0,0 @@ -# Undercooked - a game about cooking -# Copyright 2024 nokoe -#  -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU Affero General Public License as published by -# the Free Software Foundation, version 3 of the License only. -#  -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the -# GNU Affero General Public License for more details. -#  -# 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/>. -#  -class_name Counter -extends FullTile - -var counters = [ -	"counter", -	"pan", -	"sink", -	"oven", -] - -enum CounterKind { -	OUTER_CORNER, -	STRAIGHT, -	STRAIGHT_BACKSPLASH -} - -var kind: CounterKind = CounterKind.STRAIGHT - -static func interact_target() -> Vector3: -	return Vector3(0, 0.5, 0) - -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() - -	# 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": -			kind = CounterKind.STRAIGHT_BACKSPLASH -		else: -			kind = CounterKind.STRAIGHT -	elif series == 2&&count == 2: -		facing = (adj[0] + 1) % 4 -		kind = CounterKind.OUTER_CORNER - -	turn_facing(facing) - -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) diff --git a/client/scripts/tiles/counter_base.gd b/client/scripts/tiles/counter_base.gd deleted file mode 100644 index ebeebb3b..00000000 --- a/client/scripts/tiles/counter_base.gd +++ /dev/null @@ -1,27 +0,0 @@ -# Undercooked - a game about cooking -# Copyright 2024 nokoe -#  -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU Affero General Public License as published by -# the Free Software Foundation, version 3 of the License only. -#  -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the -# GNU Affero General Public License for more details. -#  -# 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/>. -#  -class_name CounterBase -extends Counter - -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()) -		CounterKind.STRAIGHT: -			base.add_child(load("res://models/prefabs/map/kitchencounter_straight_A.tscn").instantiate()) -		CounterKind.STRAIGHT_BACKSPLASH: -			base.add_child(load("res://models/prefabs/map/kitchencounter_straight_A_backsplash.tscn").instantiate()) diff --git a/client/scripts/tiles/crate.gd b/client/scripts/tiles/crate.gd deleted file mode 100644 index 21fae60b..00000000 --- a/client/scripts/tiles/crate.gd +++ /dev/null @@ -1,23 +0,0 @@ -# Undercooked - a game about cooking -# Copyright 2024 nokoe -#  -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU Affero General Public License as published by -# the Free Software Foundation, version 3 of the License only. -#  -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the -# GNU Affero General Public License for more details. -#  -# 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/>. -#  -class_name Crate -extends Counter - -static func interact_target() -> Vector3: -	return Vector3(0, 0.25, 0) - -func _init(rename: String, neighbors: Array): -	super(rename, neighbors) diff --git a/client/scripts/tiles/cutting_board.gd b/client/scripts/tiles/cutting_board.gd deleted file mode 100644 index 944a7a9f..00000000 --- a/client/scripts/tiles/cutting_board.gd +++ /dev/null @@ -1,21 +0,0 @@ -# Undercooked - a game about cooking -# Copyright 2024 nokoe -#  -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU Affero General Public License as published by -# the Free Software Foundation, version 3 of the License only. -#  -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the -# GNU Affero General Public License for more details. -#  -# 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/>. -#  -class_name CuttingBoard -extends CounterBase - -func _init(rename: String, neighbors: Array): -	super(rename, neighbors) -	base.add_child(load("res://models/prefabs/map/cuttingboard.tscn").instantiate()) diff --git a/client/scripts/tiles/door.gd b/client/scripts/tiles/door.gd deleted file mode 100644 index cfba08b7..00000000 --- a/client/scripts/tiles/door.gd +++ /dev/null @@ -1,27 +0,0 @@ -# Undercooked - a game about cooking -# Copyright 2024 nokoe -#  -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU Affero General Public License as published by -# the Free Software Foundation, version 3 of the License only. -#  -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the -# GNU Affero General Public License for more details. -#  -# 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/>. -#  -class_name Door -extends Floor - -func _init(rename: String, neighbors: Array): -	super(rename, neighbors) - -	var facing = 0 -	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()) -	turn_facing(facing) diff --git a/client/scripts/tiles/floor.gd b/client/scripts/tiles/floor.gd deleted file mode 100644 index fec68cbd..00000000 --- a/client/scripts/tiles/floor.gd +++ /dev/null @@ -1,85 +0,0 @@ -# Undercooked - a game about cooking -# Copyright 2024 nokoe -#  -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU Affero General Public License as published by -# the Free Software Foundation, version 3 of the License only. -#  -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the -# GNU Affero General Public License for more details. -#  -# 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/>. -#  -class_name Floor -extends Node3D - -var base = Node3D.new() -var item: Item = null -var item_base: Node3D - -enum Facing { -	NEG_Y = 0, -	NEG_X = 1, -	Y = 2, -	X = 3, -} - -func _init(rename: String, _neighbors: Array): -	var floor_tile = load("res://models/prefabs/map/floor_kitchen_small.tscn").instantiate() -	floor_tile.position += Vector3(0.5, 0, 0.5) -	add_child(floor_tile) -	base.name = "Base" -	base.position += Vector3(0.5, 0, 0.5) -	add_child(base) -	self.name = rename -	var item_base_ = Node3D.new() -	# this method is supposed to be overriden -	@warning_ignore("static_called_on_instance") -	item_base_.position = interact_target() -	item_base_.name = "ItemBase" -	base.add_child(item_base_) -	item_base = item_base_ - -func turn_facing(facing: Facing): -	base.rotate_y(facing * 0.5 * PI + PI) - -func tile_name(idx): -	if idx == null: -		return null -	return Multiplayer.tile_names[idx] - - -# 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 - -func progress(p: float, warn: bool): -	if item != null: -		item.progress(p, warn) - -func finish(warn: bool): -	if item != null: -		item.finish(warn) - -func put_item(i: Item): -	if item != null: -		push_error("already holding an item") -	set_item(i) - -func set_item(i: Item): -	if item != null: -		item.queue_free() -	item = i -	i.owned_by = item_base - -func take_item() -> Item: -	var i = item -	item = null -	return i diff --git a/client/scripts/tiles/flour_counter.gd b/client/scripts/tiles/flour_counter.gd deleted file mode 100644 index 4bf2b1f3..00000000 --- a/client/scripts/tiles/flour_counter.gd +++ /dev/null @@ -1,26 +0,0 @@ -# Undercooked - a game about cooking -# Copyright 2024 nokoe -#  -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU Affero General Public License as published by -# the Free Software Foundation, version 3 of the License only. -#  -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the -# GNU Affero General Public License for more details. -#  -# 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/>. -#  -class_name FlourCounter -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) diff --git a/client/scripts/tiles/full_tile.gd b/client/scripts/tiles/full_tile.gd deleted file mode 100644 index 2da54237..00000000 --- a/client/scripts/tiles/full_tile.gd +++ /dev/null @@ -1,49 +0,0 @@ -# Undercooked - a game about cooking -# Copyright 2024 nokoe -#  -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU Affero General Public License as published by -# the Free Software Foundation, version 3 of the License only. -#  -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the -# GNU Affero General Public License for more details. -#  -# 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/>. -#  -class_name FullTile -extends Floor - -var static_body = StaticBody3D.new() -var item: Node3D = null - -func _init(rename: String, neighbors: Array): -	super(rename, neighbors) -	var shape = CollisionShape3D.new() -	var box = BoxShape3D.new() -	shape.position.y += .5 -	shape.shape = box -	shape.name = "Box" -	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 - -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 diff --git a/client/scripts/tiles/generic_tile.gd b/client/scripts/tiles/generic_tile.gd deleted file mode 100644 index f7d1b4a7..00000000 --- a/client/scripts/tiles/generic_tile.gd +++ /dev/null @@ -1,33 +0,0 @@ -# Undercooked - a game about cooking -# Copyright 2024 nokoe -#  -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU Affero General Public License as published by -# the Free Software Foundation, version 3 of the License only. -#  -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the -# GNU Affero General Public License for more details. -#  -# 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/>. -#  -class_name GenericTile -extends Floor - -func _init(rename: String, neighbors: Array, kind: String): -	super(rename, neighbors) -	var mesh = MeshInstance3D.new() -	var text = TextMesh.new() -	var mat = StandardMaterial3D.new() -	text.text = kind -	text.font = SystemFont.new() -	text.depth = 0 -	mesh.mesh = text -	mesh.position.y = 1 -	mesh.scale = Vector3(3, 3, 3) -	mat.billboard_mode = mat.BILLBOARD_ENABLED -	mat.shading_mode = BaseMaterial3D.SHADING_MODE_UNSHADED -	text.material = mat -	item_base.add_child(mesh) diff --git a/client/scripts/tiles/oven.gd b/client/scripts/tiles/oven.gd deleted file mode 100644 index 88da3adb..00000000 --- a/client/scripts/tiles/oven.gd +++ /dev/null @@ -1,21 +0,0 @@ -# Undercooked - a game about cooking -# Copyright 2024 nokoe -#  -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU Affero General Public License as published by -# the Free Software Foundation, version 3 of the License only. -#  -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the -# GNU Affero General Public License for more details. -#  -# 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/>. -#  -class_name Oven -extends Counter - -func _init(rename: String, neighbors: Array): -	super(rename, neighbors) -	base.add_child(load("res://models/prefabs/map/oven.tscn").instantiate()) diff --git a/client/scripts/tiles/raw_steak_crate.gd b/client/scripts/tiles/raw_steak_crate.gd deleted file mode 100644 index 8ff93d6b..00000000 --- a/client/scripts/tiles/raw_steak_crate.gd +++ /dev/null @@ -1,21 +0,0 @@ -# Undercooked - a game about cooking -# Copyright 2024 nokoe -#  -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU Affero General Public License as published by -# the Free Software Foundation, version 3 of the License only. -#  -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the -# GNU Affero General Public License for more details. -#  -# 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/>. -#  -class_name RawSteakCrate -extends Crate - -func _init(rename: String, neighbors: Array): -	super(rename, neighbors) -	base.add_child(load("res://models/prefabs/map/crate_steak.tscn").instantiate()) diff --git a/client/scripts/tiles/sink.gd b/client/scripts/tiles/sink.gd deleted file mode 100644 index e4eaff60..00000000 --- a/client/scripts/tiles/sink.gd +++ /dev/null @@ -1,27 +0,0 @@ -# Undercooked - a game about cooking -# Copyright 2024 nokoe -#  -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU Affero General Public License as published by -# the Free Software Foundation, version 3 of the License only. -#  -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the -# GNU Affero General Public License for more details. -#  -# 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/>. -#  -class_name Sink -extends Counter - -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()) -		CounterKind.STRAIGHT_BACKSPLASH: -			base.add_child(load("res://models/prefabs/map/kitchencounter_sink_backsplash.tscn").instantiate()) -		_: -			base.add_child(load("res://models/prefabs/map/kitchencounter_sink.tscn").instantiate()) diff --git a/client/scripts/tiles/stove.gd b/client/scripts/tiles/stove.gd deleted file mode 100644 index 93fad5a3..00000000 --- a/client/scripts/tiles/stove.gd +++ /dev/null @@ -1,21 +0,0 @@ -# Undercooked - a game about cooking -# Copyright 2024 nokoe -#  -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU Affero General Public License as published by -# the Free Software Foundation, version 3 of the License only. -#  -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the -# GNU Affero General Public License for more details. -#  -# 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/>. -#  -class_name Stove -extends Counter - -func _init(rename: String, neighbors: Array): -	super(rename, neighbors) -	base.add_child(load("res://models/prefabs/map/stove_single.tscn").instantiate()) diff --git a/client/scripts/tiles/table.gd b/client/scripts/tiles/table.gd deleted file mode 100644 index 533223a4..00000000 --- a/client/scripts/tiles/table.gd +++ /dev/null @@ -1,21 +0,0 @@ -# Undercooked - a game about cooking -# Copyright 2024 nokoe -#  -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU Affero General Public License as published by -# the Free Software Foundation, version 3 of the License only. -#  -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the -# GNU Affero General Public License for more details. -#  -# 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/>. -#  -class_name Table -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()) diff --git a/client/scripts/tiles/tomato_crate.gd b/client/scripts/tiles/tomato_crate.gd deleted file mode 100644 index 078d0ba2..00000000 --- a/client/scripts/tiles/tomato_crate.gd +++ /dev/null @@ -1,21 +0,0 @@ -# Undercooked - a game about cooking -# Copyright 2024 nokoe -#  -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU Affero General Public License as published by -# the Free Software Foundation, version 3 of the License only. -#  -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the -# GNU Affero General Public License for more details. -#  -# 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/>. -#  -class_name TomatoCrate -extends Crate - -func _init(rename: String, neighbors: Array): -	super(rename, neighbors) -	base.add_child(load("res://models/prefabs/map/crate_tomatoes.tscn").instantiate()) diff --git a/client/scripts/tiles/trash.gd b/client/scripts/tiles/trash.gd deleted file mode 100644 index fed1a502..00000000 --- a/client/scripts/tiles/trash.gd +++ /dev/null @@ -1,21 +0,0 @@ -# Undercooked - a game about cooking -# Copyright 2024 nokoe -#  -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU Affero General Public License as published by -# the Free Software Foundation, version 3 of the License only. -#  -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the -# GNU Affero General Public License for more details. -#  -# 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/>. -#  -class_name Trash -extends Crate - -func _init(rename: String, neighbors: Array): -	super(rename, neighbors) -	base.add_child(load("res://models/prefabs/map/crate_trash.tscn").instantiate()) diff --git a/client/scripts/tiles/wall.gd b/client/scripts/tiles/wall.gd deleted file mode 100644 index 0201d4d6..00000000 --- a/client/scripts/tiles/wall.gd +++ /dev/null @@ -1,29 +0,0 @@ -# Undercooked - a game about cooking -# Copyright 2024 nokoe -#  -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU Affero General Public License as published by -# the Free Software Foundation, version 3 of the License only. -#  -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the -# GNU Affero General Public License for more details. -#  -# 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/>. -#  -class_name Wall -extends WallTile - -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()) -		WallKind.OUTER_CORNER: -			base.add_child(load("res://models/prefabs/map/wall_corner.tscn").instantiate()) -		WallKind.T: -			base.add_child(load("res://models/prefabs/map/wall_t.tscn").instantiate()) -		WallKind.CROSS: -			base.add_child(load("res://models/prefabs/map/wall_cross.tscn").instantiate()) diff --git a/client/scripts/tiles/wall_tile.gd b/client/scripts/tiles/wall_tile.gd deleted file mode 100644 index 7c9d4305..00000000 --- a/client/scripts/tiles/wall_tile.gd +++ /dev/null @@ -1,74 +0,0 @@ -# Undercooked - a game about cooking -# Copyright 2024 nokoe -#  -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU Affero General Public License as published by -# the Free Software Foundation, version 3 of the License only. -#  -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the -# GNU Affero General Public License for more details. -#  -# 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/>. -#  -class_name WallTile -extends FullTile - -const WALLS: Array = [ -	"wall", -	"window", -	"door" -] - -enum WallKind { -	STRAIGHT, -	OUTER_CORNER, -	T, -	CROSS, -} - -var kind: WallKind = WallKind.STRAIGHT -var facing: int = 0 - -func _init(rename: String, neighbors: Array): -	super(rename, neighbors) - -	var edges = neighbors.duplicate() - -	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] -		kind = WallKind.STRAIGHT -	elif series == 2&&count == 2: -		facing = adj[0] -		kind = WallKind.OUTER_CORNER -	elif series == 1&&count == 3: -		facing = adj[0] -		kind = WallKind.T -	elif series == 0&&count == 4: -		facing = adj[0] -		kind = WallKind.CROSS -	turn_facing(facing) diff --git a/client/scripts/tiles/window.gd b/client/scripts/tiles/window.gd deleted file mode 100644 index b2926080..00000000 --- a/client/scripts/tiles/window.gd +++ /dev/null @@ -1,29 +0,0 @@ -# Undercooked - a game about cooking -# Copyright 2024 nokoe -#  -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU Affero General Public License as published by -# the Free Software Foundation, version 3 of the License only. -#  -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the -# GNU Affero General Public License for more details. -#  -# 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/>. -#  -class_name WallWindow -extends WallTile - -static func interact_target() -> Vector3: -	return Vector3(0, 0.625, 0) - -func _init(rename: String, neighbors: Array): -	super(rename, neighbors) -	match kind: -		WallKind.STRAIGHT: -			base.add_child(load("res://models/prefabs/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()) | 
