aboutsummaryrefslogtreecommitdiff
path: root/client
diff options
context:
space:
mode:
authornokoe <nokoe@mailbox.org>2024-07-11 15:12:29 +0200
committernokoe <nokoe@mailbox.org>2024-07-11 15:13:24 +0200
commitcc6c04a7d66afc255b2ac63b689eb2a0618ff66b (patch)
tree8509985419d167ec368a1141f437742a6cb5a60d /client
parent17e7cb63bf70b35a58cf52ebea4bb543c450320f (diff)
downloadhurrycurry-cc6c04a7d66afc255b2ac63b689eb2a0618ff66b.tar
hurrycurry-cc6c04a7d66afc255b2ac63b689eb2a0618ff66b.tar.bz2
hurrycurry-cc6c04a7d66afc255b2ac63b689eb2a0618ff66b.tar.zst
add conveyor direction indicator
Diffstat (limited to 'client')
-rw-r--r--client/global.gd4
-rw-r--r--client/map/tiles/conveyor.gd8
-rw-r--r--client/map/tiles/conveyor.tscn20
-rw-r--r--client/map/tiles/conveyor_direction.gdshader34
-rw-r--r--client/map/tiles/conveyor_direction.tscn21
-rw-r--r--client/map/tiles/conveyor_model.gd15
-rw-r--r--client/player/interact_marker.gdshader2
7 files changed, 99 insertions, 5 deletions
diff --git a/client/global.gd b/client/global.gd
index 691a85c7..39418e2f 100644
--- a/client/global.gd
+++ b/client/global.gd
@@ -203,10 +203,10 @@ func set_setting(key: String, value):
return
settings[key].set_value(value)
-func interpolate(current, target, dt):
+static func interpolate(current, target, dt):
return target + (current - target) * exp(-dt)
-func interpolate_angle(current, target, dt):
+static func interpolate_angle(current, target, dt):
if abs(target - current) > PI:
if target < 0:
target += PI * 2
diff --git a/client/map/tiles/conveyor.gd b/client/map/tiles/conveyor.gd
index 93bd4282..d920915c 100644
--- a/client/map/tiles/conveyor.gd
+++ b/client/map/tiles/conveyor.gd
@@ -16,10 +16,16 @@
class_name Conveyor
extends Floor
+var conveyor: ConveyorModel = preload("res://map/tiles/conveyor.tscn").instantiate()
+
func _init(rename: String, neighbors: Array):
super(rename, neighbors)
- var conveyor = preload("res://map/tiles/conveyor.tscn").instantiate()
base.add_child(conveyor)
static func interact_target() -> Vector3:
return Vector3(0., .425, 0.)
+
+func pass_to(tile: Tile):
+ super(tile)
+ var dir: Vector3 = (tile.position - position)
+ conveyor.to_direction(Vector2(dir.x, dir.z).normalized())
diff --git a/client/map/tiles/conveyor.tscn b/client/map/tiles/conveyor.tscn
index 3a5d3a83..5e71bcec 100644
--- a/client/map/tiles/conveyor.tscn
+++ b/client/map/tiles/conveyor.tscn
@@ -1,10 +1,28 @@
-[gd_scene load_steps=2 format=3 uid="uid://df5wbypoqbkf"]
+[gd_scene load_steps=6 format=3 uid="uid://df5wbypoqbkf"]
[ext_resource type="ArrayMesh" uid="uid://djet05vuyh6iv" path="res://map/tiles/conveyor.res" id="1_hoctt"]
+[ext_resource type="Script" path="res://map/tiles/conveyor_model.gd" id="1_xdf1u"]
+[ext_resource type="PackedScene" uid="uid://60wue8ult1bx" path="res://map/tiles/conveyor_direction.tscn" id="2_sf55l"]
+[ext_resource type="Shader" path="res://map/tiles/conveyor_direction.gdshader" id="4_8s3rd"]
+
+[sub_resource type="ShaderMaterial" id="ShaderMaterial_bgatf"]
+resource_local_to_scene = true
+render_priority = 0
+shader = ExtResource("4_8s3rd")
+shader_parameter/angle = 0.2
+shader_parameter/frequency = 0.5
+shader_parameter/width = 0.2
+shader_parameter/speed = 1.0
+shader_parameter/alpha_fac = 1.0
[node name="Conveyor" type="Node3D"]
+script = ExtResource("1_xdf1u")
[node name="Mesh" type="MeshInstance3D" parent="."]
transform = Transform3D(0.5, 0, 0, 0, 0.5, 0, 0, 0, 0.5, 0, 0, 0)
mesh = ExtResource("1_hoctt")
skeleton = NodePath("")
+
+[node name="ConveyorDirection" parent="." instance=ExtResource("2_sf55l")]
+transform = Transform3D(1, 0, 0, 0, -4.37114e-08, 1, 0, -1, -4.37114e-08, 0, 0.43, 0)
+surface_material_override/0 = SubResource("ShaderMaterial_bgatf")
diff --git a/client/map/tiles/conveyor_direction.gdshader b/client/map/tiles/conveyor_direction.gdshader
new file mode 100644
index 00000000..7b3565e6
--- /dev/null
+++ b/client/map/tiles/conveyor_direction.gdshader
@@ -0,0 +1,34 @@
+/*
+ Hurry Curry! - 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/>.
+
+*/
+shader_type spatial;
+
+uniform float angle = .2;
+uniform float frequency = .5;
+uniform float width = .2;
+uniform float speed = 1.;
+uniform float alpha_fac = 1.;
+
+void fragment() {
+ ALBEDO = vec3(1., 1., 0.);
+ vec2 uv = UV.xy;
+ uv.x = abs(2. * uv.x - 1.);
+ float alpha = step(
+ mod(uv.y - TIME * speed + angle * uv.x, frequency), width
+ );
+ ALPHA = alpha * alpha_fac;
+}
diff --git a/client/map/tiles/conveyor_direction.tscn b/client/map/tiles/conveyor_direction.tscn
new file mode 100644
index 00000000..9d407683
--- /dev/null
+++ b/client/map/tiles/conveyor_direction.tscn
@@ -0,0 +1,21 @@
+[gd_scene load_steps=4 format=3 uid="uid://60wue8ult1bx"]
+
+[ext_resource type="Shader" path="res://map/tiles/conveyor_direction.gdshader" id="1_47s57"]
+
+[sub_resource type="QuadMesh" id="QuadMesh_hr8jj"]
+size = Vector2(0.8, 1)
+
+[sub_resource type="ShaderMaterial" id="ShaderMaterial_h5q6r"]
+resource_local_to_scene = true
+render_priority = 0
+shader = ExtResource("1_47s57")
+shader_parameter/angle = 0.2
+shader_parameter/frequency = 0.5
+shader_parameter/width = 0.2
+shader_parameter/speed = 1.0
+shader_parameter/alpha_fac = 1.0
+
+[node name="ConveyorDirection" type="MeshInstance3D"]
+transform = Transform3D(1, 0, 0, 0, 1.19249e-08, 1, 0, -1, 1.19249e-08, 0, 0, 0)
+mesh = SubResource("QuadMesh_hr8jj")
+surface_material_override/0 = SubResource("ShaderMaterial_h5q6r")
diff --git a/client/map/tiles/conveyor_model.gd b/client/map/tiles/conveyor_model.gd
new file mode 100644
index 00000000..7dd48957
--- /dev/null
+++ b/client/map/tiles/conveyor_model.gd
@@ -0,0 +1,15 @@
+class_name ConveyorModel
+extends Node3D
+
+var alpha: float = 0.
+
+@onready var mat: ShaderMaterial = $ConveyorDirection.get_active_material(0)
+
+func _process(delta):
+ alpha = Global.interpolate(alpha, 0., delta)
+ mat.set_shader_parameter("alpha_fac", alpha)
+
+func to_direction(direction: Vector2):
+ direction.y *= -1
+ $ConveyorDirection.rotation.y = direction.angle() + .5 * PI
+ alpha = 1.
diff --git a/client/player/interact_marker.gdshader b/client/player/interact_marker.gdshader
index 6f3cd435..1a1b9c63 100644
--- a/client/player/interact_marker.gdshader
+++ b/client/player/interact_marker.gdshader
@@ -1,6 +1,6 @@
/*
Hurry Curry! - a game about cooking
- Copyright 2024 metamuffin
+ 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