From d665bc5d032a18c52f4e06952ff9101f8550ef4f Mon Sep 17 00:00:00 2001 From: tpart Date: Fri, 16 Aug 2024 21:50:03 +0200 Subject: Add strawberry model & implement item --- client/map/items/strawberry.gd | 33 +++++++++++++++++++++++++++++++++ client/map/items/strawberry.res | Bin 0 -> 8522 bytes client/map/items/strawberry.tscn | 10 ++++++++++ 3 files changed, 43 insertions(+) create mode 100644 client/map/items/strawberry.gd create mode 100644 client/map/items/strawberry.res create mode 100644 client/map/items/strawberry.tscn (limited to 'client/map/items') diff --git a/client/map/items/strawberry.gd b/client/map/items/strawberry.gd new file mode 100644 index 00000000..ef9abb64 --- /dev/null +++ b/client/map/items/strawberry.gd @@ -0,0 +1,33 @@ +# Hurry Curry! - 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 . +# +class_name Strawberry +extends Item + +var cut: CPUParticles3D = load("res://map/items/cut.tscn").instantiate() + +func _init(owned_by_: Node3D): + super(owned_by_) + base.add_child(load("res://map/items/strawberry.tscn").instantiate()) + base.add_child(cut) + cut.color = Color(1., 0., 0.) + +func progress(p: float, warn: bool): + super(p, warn) + cut.emitting = true + +func finish(warn: bool): + super(warn) + cut.emitting = false diff --git a/client/map/items/strawberry.res b/client/map/items/strawberry.res new file mode 100644 index 00000000..46a723d1 Binary files /dev/null and b/client/map/items/strawberry.res differ diff --git a/client/map/items/strawberry.tscn b/client/map/items/strawberry.tscn new file mode 100644 index 00000000..24e7be41 --- /dev/null +++ b/client/map/items/strawberry.tscn @@ -0,0 +1,10 @@ +[gd_scene load_steps=2 format=3 uid="uid://df1xktleeqg3m"] + +[ext_resource type="ArrayMesh" uid="uid://c2uwqjxx7mnqp" path="res://map/items/strawberry.res" id="1_8dx1o"] + +[node name="Strawberry" type="Node3D"] + +[node name="Mesh" type="MeshInstance3D" parent="."] +transform = Transform3D(-5.68248e-10, -0.013, 0, -5.68248e-10, 2.48389e-17, -0.013, 0.013, -5.68248e-10, -5.68248e-10, 0, 0.125, 0) +mesh = ExtResource("1_8dx1o") +skeleton = NodePath("") -- cgit v1.2.3-70-g09d2 From 98c33cfa06732b630522c836d9686243ced891ad Mon Sep 17 00:00:00 2001 From: metamuffin Date: Fri, 16 Aug 2024 21:57:13 +0200 Subject: interp item to next 90° rotation when on tile MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- client/global.gd | 15 +++++++++++---- client/map/items/item.gd | 6 ++++-- 2 files changed, 15 insertions(+), 6 deletions(-) (limited to 'client/map/items') diff --git a/client/global.gd b/client/global.gd index 647cac32..d660173a 100644 --- a/client/global.gd +++ b/client/global.gd @@ -350,10 +350,17 @@ static func interpolate_angle(current, target, dt): current = fmod(current, PI * 2) target = fmod(target, PI * 2) if abs(target - current) > PI: - if target < 0: - target += PI * 2 - else: - target -= PI * 2 + if target < 0: target += PI * 2 + else: target -= PI * 2 + return target + (current - target) * exp(-dt) + +# TODO not working in all cases yet but there was an attempt +static func interpolate_angle_closest_quarter(current, target, dt): + current = fmod(current, PI * 2) + target = fmod(target, PI * 2) + while abs(target - current) > PI / 4.: + if target - current < 0: target += PI / 2 + else: target -= PI / 2 return target + (current - target) * exp(-dt) func find_menu(node: Node) -> Menu: diff --git a/client/map/items/item.gd b/client/map/items/item.gd index fc10dbee..2d046700 100644 --- a/client/map/items/item.gd +++ b/client/map/items/item.gd @@ -44,9 +44,11 @@ func _ready(): position = owned_by.global_position func _process(delta): - var ispeed = 30.0 if owned_by.get_parent().get_parent() is Player else 10. + var p = owned_by.get_parent().get_parent() is Player + var ispeed = 30.0 if p else 10. position = G.interpolate(position, owned_by.global_position, delta * ispeed) - rotation.y = G.interpolate_angle(rotation.y, owned_by.global_rotation.y, delta * ispeed) + if p: rotation.y = G.interpolate_angle(rotation.y, owned_by.global_rotation.y, delta * ispeed) + else: rotation.y = G.interpolate_angle_closest_quarter(rotation.y, owned_by.global_rotation.y, delta * ispeed) func progress(p: float, warn: bool): progress_instance.visible = true -- cgit v1.2.3-70-g09d2 From c08bebd1db640118e0fb6e5e214b81b4beff53df Mon Sep 17 00:00:00 2001 From: tpart Date: Fri, 16 Aug 2024 23:09:44 +0200 Subject: Replace strawberry model with smooth model with correct faces --- client/map/items/strawberry.res | Bin 8522 -> 11074 bytes client/map/items/strawberry.tscn | 2 +- 2 files changed, 1 insertion(+), 1 deletion(-) (limited to 'client/map/items') diff --git a/client/map/items/strawberry.res b/client/map/items/strawberry.res index 46a723d1..60da68ed 100644 Binary files a/client/map/items/strawberry.res and b/client/map/items/strawberry.res differ diff --git a/client/map/items/strawberry.tscn b/client/map/items/strawberry.tscn index 24e7be41..90df0c3c 100644 --- a/client/map/items/strawberry.tscn +++ b/client/map/items/strawberry.tscn @@ -5,6 +5,6 @@ [node name="Strawberry" type="Node3D"] [node name="Mesh" type="MeshInstance3D" parent="."] -transform = Transform3D(-5.68248e-10, -0.013, 0, -5.68248e-10, 2.48389e-17, -0.013, 0.013, -5.68248e-10, -5.68248e-10, 0, 0.125, 0) +transform = Transform3D(-5.68248e-10, 1.1365e-09, 0.013, 0, -0.013, 1.1365e-09, 0.013, 4.96778e-17, 5.68248e-10, 0, 0.125, 0) mesh = ExtResource("1_8dx1o") skeleton = NodePath("") -- cgit v1.2.3-70-g09d2