From 33af98e807c1c4368d200a3916b83d296c07dd9a Mon Sep 17 00:00:00 2001 From: betalars Date: Tue, 27 Jun 2023 13:48:53 +0200 Subject: [PATCH 01/20] destructurising board of devs for easy child acess, this will get reverted --- src/dev-util/board of devs.tscn | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/src/dev-util/board of devs.tscn b/src/dev-util/board of devs.tscn index b79b9e95..03ad4548 100644 --- a/src/dev-util/board of devs.tscn +++ b/src/dev-util/board of devs.tscn @@ -3,6 +3,30 @@ [ext_resource type="PackedScene" uid="uid://dy5rd437h5hsw" path="res://logic-scenes/board/card.tscn" id="1_xrckx"] [ext_resource type="PackedScene" uid="uid://vkcdj8c3ytbq" path="res://logic-scenes/board/post-it.tscn" id="2_ucudl"] +[sub_resource type="GDScript" id="GDScript_1ga1l"] +script/source = "extends Control + + +# Called when the node enters the scene tree for the first time. +func _ready(): + for scene in get_children(): + for card in scene.get_children(): + for child in card.get_children(): + if child is PostIt: + card.remove_child(child) + add_child(child) + scene.remove_child(card) + add_child(card) + remove_child(scene) + +func pop_child_by_text(text: String) -> Object: + for child in get_children(): + if child.text == text: + remove_child(child) + return child + return null +" + [node name="board of devs" type="Control"] layout_mode = 3 anchors_preset = 15 @@ -10,6 +34,7 @@ anchor_right = 1.0 anchor_bottom = 1.0 grow_horizontal = 2 grow_vertical = 2 +script = SubResource("GDScript_1ga1l") [node name="childhood" type="Control" parent="."] anchors_preset = 0 From 374152c2aa8ef3294e60220b2f9d03ca3b367075 Mon Sep 17 00:00:00 2001 From: betalars Date: Tue, 27 Jun 2023 13:49:44 +0200 Subject: [PATCH 02/20] importing bork texture and scaling independend shader --- .../board/board-texture/Cork002_2K_Color.png | 3 ++ .../board-texture/Cork002_2K_Color.png.import | 35 +++++++++++++++++++ src/logic-scenes/board/physics-board.gdshader | 7 ++++ 3 files changed, 45 insertions(+) create mode 100644 src/logic-scenes/board/board-texture/Cork002_2K_Color.png create mode 100644 src/logic-scenes/board/board-texture/Cork002_2K_Color.png.import create mode 100644 src/logic-scenes/board/physics-board.gdshader diff --git a/src/logic-scenes/board/board-texture/Cork002_2K_Color.png b/src/logic-scenes/board/board-texture/Cork002_2K_Color.png new file mode 100644 index 00000000..a84aad84 --- /dev/null +++ b/src/logic-scenes/board/board-texture/Cork002_2K_Color.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d253d4888845bed31de1843fef45516480e0f30cb8ff985a2086f17832daa1da +size 7870478 diff --git a/src/logic-scenes/board/board-texture/Cork002_2K_Color.png.import b/src/logic-scenes/board/board-texture/Cork002_2K_Color.png.import new file mode 100644 index 00000000..12bd7e8e --- /dev/null +++ b/src/logic-scenes/board/board-texture/Cork002_2K_Color.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bi3xqdknw5tpe" +path.s3tc="res://.godot/imported/Cork002_2K_Color.png-295348789c534b25ecb17ae72511003c.s3tc.ctex" +metadata={ +"imported_formats": ["s3tc_bptc"], +"vram_texture": true +} + +[deps] + +source_file="res://logic-scenes/board/board-texture/Cork002_2K_Color.png" +dest_files=["res://.godot/imported/Cork002_2K_Color.png-295348789c534b25ecb17ae72511003c.s3tc.ctex"] + +[params] + +compress/mode=2 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=true +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=0 diff --git a/src/logic-scenes/board/physics-board.gdshader b/src/logic-scenes/board/physics-board.gdshader new file mode 100644 index 00000000..a1412976 --- /dev/null +++ b/src/logic-scenes/board/physics-board.gdshader @@ -0,0 +1,7 @@ +shader_type canvas_item; +uniform sampler2D tex : repeat_enable; +uniform float magic_scale_factor = 1500; + +void fragment() { + COLOR = texture(tex, FRAGCOORD.xy/magic_scale_factor); +} From 506c8e4e6e135129bd6209dee3b9e0b8e08b2054 Mon Sep 17 00:00:00 2001 From: betalars Date: Tue, 27 Jun 2023 13:51:23 +0200 Subject: [PATCH 03/20] initialising physics-based approach to laying cards on a board --- src/logic-scenes/board/bouncy-card.gd | 17 +++ src/logic-scenes/board/card-board.gd | 11 ++ src/logic-scenes/board/physics-board.tscn | 132 ++++++++++++++++++++++ 3 files changed, 160 insertions(+) create mode 100644 src/logic-scenes/board/bouncy-card.gd create mode 100644 src/logic-scenes/board/card-board.gd create mode 100644 src/logic-scenes/board/physics-board.tscn diff --git a/src/logic-scenes/board/bouncy-card.gd b/src/logic-scenes/board/bouncy-card.gd new file mode 100644 index 00000000..53045ddb --- /dev/null +++ b/src/logic-scenes/board/bouncy-card.gd @@ -0,0 +1,17 @@ +extends Area2D + +@export_range(1.0, 10.0) var bounce_speed: float = 5 + +@onready var diameter = $CollisionShape2D.shape.radius * 2 + +# Called when the node enters the scene tree for the first time. +func _ready(): + pass # Replace with function body. + + +# Called every frame. 'delta' is the elapsed time since the previous frame. +func _process(delta): + if get_overlapping_areas().size() > 0: + for area in get_overlapping_areas(): + var diff:Vector2 = position - area.position + position -= diff.normalized() * ((diff.length()-diameter)/diameter) * bounce_speed * (delta/(1.0/60)) diff --git a/src/logic-scenes/board/card-board.gd b/src/logic-scenes/board/card-board.gd new file mode 100644 index 00000000..fdb37db6 --- /dev/null +++ b/src/logic-scenes/board/card-board.gd @@ -0,0 +1,11 @@ +extends PanelContainer + + +# Called when the node enters the scene tree for the first time. +func _ready(): + pass + + +# Called every frame. 'delta' is the elapsed time since the previous frame. +func _process(delta): + pass diff --git a/src/logic-scenes/board/physics-board.tscn b/src/logic-scenes/board/physics-board.tscn new file mode 100644 index 00000000..040b576d --- /dev/null +++ b/src/logic-scenes/board/physics-board.tscn @@ -0,0 +1,132 @@ +[gd_scene load_steps=9 format=3 uid="uid://bnskiyx1sksww"] + +[ext_resource type="Texture2D" uid="uid://bi3xqdknw5tpe" path="res://logic-scenes/board/board-texture/Cork002_2K_Color.png" id="1_8brxc"] +[ext_resource type="Shader" path="res://logic-scenes/board/physics-board.gdshader" id="1_ggnth"] +[ext_resource type="Script" path="res://logic-scenes/board/card-board.gd" id="3_8v4c4"] +[ext_resource type="PackedScene" uid="uid://dy5rd437h5hsw" path="res://logic-scenes/board/card.tscn" id="3_mg053"] +[ext_resource type="PackedScene" uid="uid://bvowj4l8dtceu" path="res://dev-util/board of devs.tscn" id="4_sskx2"] +[ext_resource type="Script" path="res://logic-scenes/board/bouncy-card.gd" id="6_gcxd7"] + +[sub_resource type="ShaderMaterial" id="ShaderMaterial_ttqei"] +shader = ExtResource("1_ggnth") +shader_parameter/magic_scale_factor = 1500.0 +shader_parameter/tex = ExtResource("1_8brxc") + +[sub_resource type="CircleShape2D" id="CircleShape2D_x8rl2"] +radius = 154.052 + +[node name="Panel" type="PanelContainer"] +material = SubResource("ShaderMaterial_ttqei") +clip_contents = true +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +size_flags_horizontal = 6 +size_flags_vertical = 6 +script = ExtResource("3_8v4c4") + +[node name="HBoxContainer" type="HBoxContainer" parent="."] +layout_mode = 2 + +[node name="VSeparator" type="VSeparator" parent="HBoxContainer"] +custom_minimum_size = Vector2(20, 0) +layout_mode = 2 + +[node name="VBoxContainer2" type="VBoxContainer" parent="HBoxContainer"] +layout_mode = 2 +size_flags_horizontal = 3 + +[node name="GridContainer" type="VFlowContainer" parent="HBoxContainer/VBoxContainer2"] +layout_mode = 2 +size_flags_vertical = 3 + +[node name="card-ancor" type="Panel" parent="HBoxContainer/VBoxContainer2/GridContainer"] +custom_minimum_size = Vector2(400, 250) +layout_mode = 2 + +[node name="card" parent="HBoxContainer/VBoxContainer2/GridContainer/card-ancor" instance=ExtResource("3_mg053")] +layout_mode = 2 +offset_left = 0.0 +offset_top = 0.0 +offset_right = 0.0 +offset_bottom = 0.0 + +[node name="card-ancor2" type="Panel" parent="HBoxContainer/VBoxContainer2/GridContainer"] +custom_minimum_size = Vector2(400, 250) +layout_mode = 2 + +[node name="card" parent="HBoxContainer/VBoxContainer2/GridContainer/card-ancor2" instance=ExtResource("3_mg053")] +layout_mode = 2 +offset_left = 0.0 +offset_top = 0.0 +offset_right = 0.0 +offset_bottom = 0.0 + +[node name="VBoxContainer3" type="VBoxContainer" parent="HBoxContainer"] +layout_mode = 2 +size_flags_horizontal = 8 + +[node name="CenterContainer" type="ScrollContainer" parent="HBoxContainer/VBoxContainer3"] +layout_mode = 2 +size_flags_vertical = 3 +horizontal_scroll_mode = 0 + +[node name="post-ancor" type="Panel" parent="HBoxContainer/VBoxContainer3/CenterContainer"] +custom_minimum_size = Vector2(320, 110) +layout_mode = 2 + +[node name="board of devs" parent="." instance=ExtResource("4_sskx2")] +visible = false +layout_mode = 2 + +[node name="Node2D" type="Node2D" parent="."] + +[node name="RigidBody2D" type="Area2D" parent="Node2D"] +position = Vector2(686, 379) +script = ExtResource("6_gcxd7") + +[node name="CollisionShape2D" type="CollisionShape2D" parent="Node2D/RigidBody2D"] +shape = SubResource("CircleShape2D_x8rl2") + +[node name="ancor" type="Node2D" parent="Node2D/RigidBody2D"] +position = Vector2(-151, -107) + +[node name="card2" parent="Node2D/RigidBody2D/ancor" instance=ExtResource("3_mg053")] +offset_left = 0.0 +offset_top = 0.0 +offset_right = 0.0 +offset_bottom = 0.0 + +[node name="RigidBody2D2" type="Area2D" parent="Node2D"] +position = Vector2(742, 323) +script = ExtResource("6_gcxd7") + +[node name="CollisionShape2D" type="CollisionShape2D" parent="Node2D/RigidBody2D2"] +shape = SubResource("CircleShape2D_x8rl2") + +[node name="ancor" type="Node2D" parent="Node2D/RigidBody2D2"] +position = Vector2(-151, -107) + +[node name="card2" parent="Node2D/RigidBody2D2/ancor" instance=ExtResource("3_mg053")] +offset_left = 0.0 +offset_top = 0.0 +offset_right = 0.0 +offset_bottom = 0.0 + +[node name="RigidBody2D3" type="Area2D" parent="Node2D"] +position = Vector2(694, 353) +script = ExtResource("6_gcxd7") + +[node name="CollisionShape2D" type="CollisionShape2D" parent="Node2D/RigidBody2D3"] +shape = SubResource("CircleShape2D_x8rl2") + +[node name="ancor" type="Node2D" parent="Node2D/RigidBody2D3"] +position = Vector2(-151, -107) + +[node name="card2" parent="Node2D/RigidBody2D3/ancor" instance=ExtResource("3_mg053")] +offset_left = 0.0 +offset_top = 0.0 +offset_right = 0.0 +offset_bottom = 0.0 From 9d77c0a50510a965ad03b0ef58c3d6ebf665ce69 Mon Sep 17 00:00:00 2001 From: betalars Date: Tue, 27 Jun 2023 13:51:55 +0200 Subject: [PATCH 04/20] setting minimum size for card to reduce transform weirdnes --- src/logic-scenes/board/card.tscn | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/logic-scenes/board/card.tscn b/src/logic-scenes/board/card.tscn index 979c3a36..6ae365ca 100644 --- a/src/logic-scenes/board/card.tscn +++ b/src/logic-scenes/board/card.tscn @@ -142,12 +142,13 @@ func _process(_delta): " [node name="card" type="Control"] +custom_minimum_size = Vector2(310, 210) layout_mode = 3 anchors_preset = 0 offset_left = -150.0 offset_top = -110.0 -offset_right = 150.0 -offset_bottom = 110.0 +offset_right = 160.0 +offset_bottom = 100.0 focus_mode = 2 script = ExtResource("1_emip0") @@ -156,7 +157,8 @@ clip_children = 2 position = Vector2(150, 110) scale = Vector2(0.6, 0.6) sprite_frames = SubResource("SpriteFrames_ckivt") -frame = 3 +frame = 2 +frame_progress = 0.638341 script = SubResource("GDScript_8bs16") [node name="GPUParticles2D" type="GPUParticles2D" parent="BackgroundSprite"] From 891036bfec8ad088d474725bcd15539c4f2c337b Mon Sep 17 00:00:00 2001 From: betalars Date: Tue, 27 Jun 2023 19:48:55 +0200 Subject: [PATCH 05/20] simplify board layout, wip --- src/logic-scenes/board/physics-board.tscn | 33 ++++++----------------- 1 file changed, 8 insertions(+), 25 deletions(-) diff --git a/src/logic-scenes/board/physics-board.tscn b/src/logic-scenes/board/physics-board.tscn index 040b576d..ea0e74a6 100644 --- a/src/logic-scenes/board/physics-board.tscn +++ b/src/logic-scenes/board/physics-board.tscn @@ -30,35 +30,18 @@ script = ExtResource("3_8v4c4") [node name="HBoxContainer" type="HBoxContainer" parent="."] layout_mode = 2 -[node name="VSeparator" type="VSeparator" parent="HBoxContainer"] -custom_minimum_size = Vector2(20, 0) -layout_mode = 2 - -[node name="VBoxContainer2" type="VBoxContainer" parent="HBoxContainer"] +[node name="Panel" type="Panel" parent="HBoxContainer"] layout_mode = 2 size_flags_horizontal = 3 -[node name="GridContainer" type="VFlowContainer" parent="HBoxContainer/VBoxContainer2"] -layout_mode = 2 -size_flags_vertical = 3 +[node name="Control" type="Control" parent="HBoxContainer/Panel"] +anchors_preset = 0 +offset_left = 305.0 +offset_top = 463.0 +offset_right = 305.0 +offset_bottom = 463.0 -[node name="card-ancor" type="Panel" parent="HBoxContainer/VBoxContainer2/GridContainer"] -custom_minimum_size = Vector2(400, 250) -layout_mode = 2 - -[node name="card" parent="HBoxContainer/VBoxContainer2/GridContainer/card-ancor" instance=ExtResource("3_mg053")] -layout_mode = 2 -offset_left = 0.0 -offset_top = 0.0 -offset_right = 0.0 -offset_bottom = 0.0 - -[node name="card-ancor2" type="Panel" parent="HBoxContainer/VBoxContainer2/GridContainer"] -custom_minimum_size = Vector2(400, 250) -layout_mode = 2 - -[node name="card" parent="HBoxContainer/VBoxContainer2/GridContainer/card-ancor2" instance=ExtResource("3_mg053")] -layout_mode = 2 +[node name="card3" parent="HBoxContainer/Panel/Control" instance=ExtResource("3_mg053")] offset_left = 0.0 offset_top = 0.0 offset_right = 0.0 From 86084fe2f9afc42a75dfd2bfca237e0de328904b Mon Sep 17 00:00:00 2001 From: betalars Date: Wed, 28 Jun 2023 01:03:40 +0200 Subject: [PATCH 06/20] Revert "destructurising board of devs for easy child acess, this will get reverted" This reverts commit 6bfead357333ef2e8ef0b38f20ddf82d9dec286f. --- src/dev-util/board of devs.tscn | 25 ------------------------- 1 file changed, 25 deletions(-) diff --git a/src/dev-util/board of devs.tscn b/src/dev-util/board of devs.tscn index 03ad4548..b79b9e95 100644 --- a/src/dev-util/board of devs.tscn +++ b/src/dev-util/board of devs.tscn @@ -3,30 +3,6 @@ [ext_resource type="PackedScene" uid="uid://dy5rd437h5hsw" path="res://logic-scenes/board/card.tscn" id="1_xrckx"] [ext_resource type="PackedScene" uid="uid://vkcdj8c3ytbq" path="res://logic-scenes/board/post-it.tscn" id="2_ucudl"] -[sub_resource type="GDScript" id="GDScript_1ga1l"] -script/source = "extends Control - - -# Called when the node enters the scene tree for the first time. -func _ready(): - for scene in get_children(): - for card in scene.get_children(): - for child in card.get_children(): - if child is PostIt: - card.remove_child(child) - add_child(child) - scene.remove_child(card) - add_child(card) - remove_child(scene) - -func pop_child_by_text(text: String) -> Object: - for child in get_children(): - if child.text == text: - remove_child(child) - return child - return null -" - [node name="board of devs" type="Control"] layout_mode = 3 anchors_preset = 15 @@ -34,7 +10,6 @@ anchor_right = 1.0 anchor_bottom = 1.0 grow_horizontal = 2 grow_vertical = 2 -script = SubResource("GDScript_1ga1l") [node name="childhood" type="Control" parent="."] anchors_preset = 0 From 16b709311f6e88b9d9413be339b721c983723720 Mon Sep 17 00:00:00 2001 From: betalars Date: Wed, 28 Jun 2023 02:25:13 +0200 Subject: [PATCH 07/20] breaking: changing card to become Area2D --- src/logic-scenes/board/card.gd | 2 +- src/logic-scenes/board/card.tscn | 28 ++++++++++++---------------- 2 files changed, 13 insertions(+), 17 deletions(-) diff --git a/src/logic-scenes/board/card.gd b/src/logic-scenes/board/card.gd index 24ef683e..1eea6727 100644 --- a/src/logic-scenes/board/card.gd +++ b/src/logic-scenes/board/card.gd @@ -1,6 +1,6 @@ @tool -extends Control +extends Area2D class_name Card var compatible_postits: Array[PostIt] = [] var own_postits: Array[PostIt] = [] diff --git a/src/logic-scenes/board/card.tscn b/src/logic-scenes/board/card.tscn index 5aa1178f..331e38bf 100644 --- a/src/logic-scenes/board/card.tscn +++ b/src/logic-scenes/board/card.tscn @@ -1,4 +1,4 @@ -[gd_scene load_steps=20 format=3 uid="uid://dy5rd437h5hsw"] +[gd_scene load_steps=21 format=3 uid="uid://dy5rd437h5hsw"] [ext_resource type="Script" path="res://logic-scenes/board/card.gd" id="1_emip0"] [ext_resource type="Texture2D" uid="uid://sv0nhkkur1tt" path="res://logic-scenes/board/card-textures/cardsheet.png" id="2_ioijn"] @@ -141,23 +141,19 @@ func _process(_delta): self.visible = State.reduce_motion and is_void " -[node name="card" type="Control"] -custom_minimum_size = Vector2(310, 210) -layout_mode = 3 -anchors_preset = 0 -offset_left = -150.0 -offset_top = -110.0 -offset_right = 160.0 -offset_bottom = 100.0 -focus_mode = 2 +[sub_resource type="CapsuleShape2D" id="CapsuleShape2D_foovg"] +radius = 110.0 +height = 336.0 + +[node name="card" type="Area2D"] +rotation = 0.197177 script = ExtResource("1_emip0") [node name="BackgroundSprite" type="AnimatedSprite2D" parent="."] clip_children = 2 -position = Vector2(150, 110) scale = Vector2(0.6, 0.6) sprite_frames = SubResource("SpriteFrames_ckivt") -frame = 4 +frame = 3 script = SubResource("GDScript_8bs16") [node name="GPUParticles2D" type="GPUParticles2D" parent="BackgroundSprite"] @@ -179,7 +175,6 @@ texture = ExtResource("4_fwm1k") script = SubResource("GDScript_tgc0b") [node name="Label" type="Label" parent="."] -layout_mode = 1 anchors_preset = 8 anchor_left = 0.5 anchor_top = 0.5 @@ -196,12 +191,13 @@ theme_type_variation = &"card_text" autowrap_mode = 3 [node name="postit anchor" type="Control" parent="."] +layout_mode = 3 anchors_preset = 0 offset_left = 100.0 offset_top = 148.0 offset_right = 140.0 offset_bottom = 188.0 -[connection signal="focus_entered" from="." to="." method="_on_focus_entered"] -[connection signal="focus_exited" from="." to="." method="_on_focus_exited"] -[connection signal="focus_entered" from="postit anchor" to="." method="_on_postit_anchor_focus_entered"] +[node name="CollisionShape2D" type="CollisionShape2D" parent="."] +rotation = 1.5708 +shape = SubResource("CapsuleShape2D_foovg") From d1b989fca18cc3e04b7d402a4c3f28929dba9ff7 Mon Sep 17 00:00:00 2001 From: betalars Date: Wed, 28 Jun 2023 11:44:55 +0200 Subject: [PATCH 08/20] adding highlight attribute and random rotation --- src/logic-scenes/board/card.gd | 48 ++++++++++++++++++++++++++++++++-- 1 file changed, 46 insertions(+), 2 deletions(-) diff --git a/src/logic-scenes/board/card.gd b/src/logic-scenes/board/card.gd index 1eea6727..bb432860 100644 --- a/src/logic-scenes/board/card.gd +++ b/src/logic-scenes/board/card.gd @@ -4,6 +4,11 @@ extends Area2D class_name Card var compatible_postits: Array[PostIt] = [] var own_postits: Array[PostIt] = [] +var wiggle_pos: float = randf_range(-100, 100) +var wiggle_intensity: float = 0 +var noise: Noise = FastNoiseLite.new() +var wiggle_tween +var scale_tween @export var text: String = "" : set (value): @@ -13,9 +18,39 @@ var own_postits: Array[PostIt] = [] $BackgroundSprite.frame = text.hash() % $BackgroundSprite.sprite_frames.get_frame_count($BackgroundSprite.animation) if is_inside_tree(): $BackgroundSprite.void_active = value == "" +@export var wiggle_strength: float = 0.2 +@export var wiggle_speed: float = 5 +@export_range(1, 2) var scale_bump: float = 1.05 +@export var highlighted: bool = false: + set(highlight): + if highlight != highlighted: + highlighted = highlight + + if is_inside_tree() and is_node_ready(): + if scale_tween: scale_tween.kill() + if wiggle_tween: wiggle_tween.kill() + if highlighted: + scale_tween = get_tree().create_tween() + scale_tween.tween_property(self, "scale", Vector2(scale_bump, scale_bump), 0.1) + wiggle_tween = get_tree().create_tween() + wiggle_tween.tween_property(self, "wiggle_intensity", 1, 0.2) + else: + scale_tween = get_tree().create_tween() + scale_tween.tween_property(self, "scale", Vector2(1, 1), 0.3) + wiggle_tween = get_tree().create_tween() + wiggle_tween.tween_property(self, "wiggle_intensity", 0, 0.5) + else: + if highlighted: + scale = Vector2(scale_bump, scale_bump) + wiggle_intensity = 1 + else: + scale = Vector2(1,1) + wiggle_intensity = 0 + @export var voice_line: AudioStream = null -func _ready(): +func _ready(): + _handle_wiggle(0) if not Engine.is_editor_hint() and is_inside_tree(): for postit in self.get_children(): if postit is PostIt: self.own_postits.append(postit as PostIt) @@ -33,7 +68,16 @@ func _ready(): $Label.text = self.text func _process(delta: float) -> void: - pass + if Input.is_action_just_pressed("ui_accept"): + highlighted = !highlighted + + if highlighted: + _handle_wiggle(delta) + +func _handle_wiggle(delta): + wiggle_pos += delta * wiggle_speed * wiggle_intensity + + rotation = noise.get_noise_1d(wiggle_pos)*wiggle_strength func replace_with(card: Card): self.text = card.text From 2333dcca7692a3423e3bd485a9327aedbf0db0e0 Mon Sep 17 00:00:00 2001 From: betalars Date: Wed, 28 Jun 2023 12:18:00 +0200 Subject: [PATCH 09/20] breaking: parody conversion of PostIt --- src/logic-scenes/board/post-it.gd | 2 +- src/logic-scenes/board/post-it.tscn | 28 +++++++++++++--------------- 2 files changed, 14 insertions(+), 16 deletions(-) diff --git a/src/logic-scenes/board/post-it.gd b/src/logic-scenes/board/post-it.gd index b8cb80ce..a114a714 100644 --- a/src/logic-scenes/board/post-it.gd +++ b/src/logic-scenes/board/post-it.gd @@ -1,6 +1,6 @@ @tool -extends Control +extends Area2D class_name PostIt var sibling diff --git a/src/logic-scenes/board/post-it.tscn b/src/logic-scenes/board/post-it.tscn index 5fedd538..1b2407b4 100644 --- a/src/logic-scenes/board/post-it.tscn +++ b/src/logic-scenes/board/post-it.tscn @@ -1,4 +1,4 @@ -[gd_scene load_steps=17 format=3 uid="uid://vkcdj8c3ytbq"] +[gd_scene load_steps=18 format=3 uid="uid://vkcdj8c3ytbq"] [ext_resource type="Script" path="res://logic-scenes/board/post-it.gd" id="1_yvh5n"] [ext_resource type="Texture2D" uid="uid://c8ckkjmdegyis" path="res://logic-scenes/board/card-textures/postitsheet.png" id="2_j17jn"] @@ -96,32 +96,28 @@ animations = [{ "speed": 5.0 }] -[node name="post-it" type="Control"] -layout_mode = 3 -anchors_preset = 0 -offset_left = -150.0 -offset_top = -50.0 -offset_right = 150.0 -offset_bottom = 50.0 -focus_mode = 2 +[sub_resource type="CapsuleShape2D" id="CapsuleShape2D_ml4q7"] +radius = 48.0 +height = 312.0 + +[node name="post-it" type="Area2D"] script = ExtResource("1_yvh5n") [node name="BackgroundSprite" type="AnimatedSprite2D" parent="."] -position = Vector2(150, 50) +position = Vector2(99.5, 0) scale = Vector2(0.65, 0.65) sprite_frames = SubResource("SpriteFrames_2amsi") frame = 5 [node name="Label" type="Label" parent="."] -layout_mode = 1 anchors_preset = 8 anchor_left = 0.5 anchor_top = 0.5 anchor_right = 0.5 anchor_bottom = 0.5 -offset_left = -139.5 +offset_left = -38.0 offset_top = -50.0 -offset_right = 137.5 +offset_right = 239.0 offset_bottom = 47.0 grow_horizontal = 2 grow_vertical = 2 @@ -130,5 +126,7 @@ theme_type_variation = &"card_text" vertical_alignment = 1 autowrap_mode = 3 -[connection signal="focus_entered" from="." to="." method="_on_focus_entered"] -[connection signal="focus_exited" from="." to="." method="_on_focus_exited"] +[node name="CollisionShape2D" type="CollisionShape2D" parent="."] +position = Vector2(99.5, 0) +rotation = 1.5708 +shape = SubResource("CapsuleShape2D_ml4q7") From 44c22af71a71cd7b4f5ccceaab30c5579f8538e2 Mon Sep 17 00:00:00 2001 From: betalars Date: Wed, 28 Jun 2023 15:24:14 +0200 Subject: [PATCH 10/20] removing debug code --- src/logic-scenes/board/card.gd | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/logic-scenes/board/card.gd b/src/logic-scenes/board/card.gd index bb432860..e11c46d9 100644 --- a/src/logic-scenes/board/card.gd +++ b/src/logic-scenes/board/card.gd @@ -68,8 +68,6 @@ func _ready(): $Label.text = self.text func _process(delta: float) -> void: - if Input.is_action_just_pressed("ui_accept"): - highlighted = !highlighted if highlighted: _handle_wiggle(delta) From eb5581838062d120ae3c2ca83de70368d036bf9d Mon Sep 17 00:00:00 2001 From: betalars Date: Wed, 28 Jun 2023 15:27:05 +0200 Subject: [PATCH 11/20] parody: adding highlight feature to postIt --- src/logic-scenes/board/post-it.gd | 43 ++++++++++++++++++++++++++--- src/logic-scenes/board/post-it.tscn | 29 +++++++++++-------- 2 files changed, 56 insertions(+), 16 deletions(-) diff --git a/src/logic-scenes/board/post-it.gd b/src/logic-scenes/board/post-it.gd index a114a714..b314d850 100644 --- a/src/logic-scenes/board/post-it.gd +++ b/src/logic-scenes/board/post-it.gd @@ -3,18 +3,53 @@ extends Area2D class_name PostIt var sibling +var wiggle_pos: float = randf_range(-100, 100) +var wiggle_intensity: float = 0 +var noise: Noise = FastNoiseLite.new() +var shift_tween +var modulate_tween @export var text: String = "" : set (value): if is_inside_tree() or Engine.is_editor_hint(): - $Label.text = value - $BackgroundSprite.frame = text.hash() % $BackgroundSprite.sprite_frames.get_frame_count($BackgroundSprite.animation) + $Content/Label.text = value + $Content/BackgroundSprite.frame = text.hash() % $Content/BackgroundSprite.sprite_frames.get_frame_count($Content/BackgroundSprite.animation) text = value + +@export var shift_by: Vector2 = Vector2(-32, 0) +@export_color_no_alpha var highlight_color: Color = Color(1.5, 1.5, 1.5) +@export var highlighted: bool = false: + set(highlight): + if highlight != highlighted: + highlighted = highlight + + if is_inside_tree() and is_node_ready(): + if modulate_tween: modulate_tween.kill() + if shift_tween: shift_tween.kill() + if highlighted: + modulate_tween = get_tree().create_tween() + modulate_tween.tween_property(self, "modulate", highlight_color, 0.1) + shift_tween = get_tree().create_tween() + shift_tween.tween_property($Content, "position", shift_by, 0.2) + else: + modulate_tween = get_tree().create_tween() + modulate_tween.tween_property(self, "modulate", Color(1, 1, 1), 0.3) + shift_tween = get_tree().create_tween() + shift_tween.tween_property($Content, "position", Vector2.ZERO, 0.5) + else: + if highlighted: + modulate = Color(1, 1, 1) + wiggle_intensity = 1 + else: + modulate = Color(1, 1, 1) + wiggle_intensity = 0 + @export var voice_line: AudioStream = null func _ready() -> void: - $Label.text = self.text - $BackgroundSprite.frame = text.hash() % $BackgroundSprite.sprite_frames.get_frame_count($BackgroundSprite.animation) + $Content/Label.text = self.text + $Content/BackgroundSprite.frame = text.hash() % $Content/BackgroundSprite.sprite_frames.get_frame_count($Content/BackgroundSprite.animation) + func replace_with(postit: PostIt): self.text = postit.text diff --git a/src/logic-scenes/board/post-it.tscn b/src/logic-scenes/board/post-it.tscn index 1b2407b4..c4fc3f24 100644 --- a/src/logic-scenes/board/post-it.tscn +++ b/src/logic-scenes/board/post-it.tscn @@ -4,6 +4,10 @@ [ext_resource type="Texture2D" uid="uid://c8ckkjmdegyis" path="res://logic-scenes/board/card-textures/postitsheet.png" id="2_j17jn"] [ext_resource type="Theme" uid="uid://b056fn288p8ha" path="res://logic-scenes/themes/messy.theme" id="3_hu2as"] +[sub_resource type="CapsuleShape2D" id="CapsuleShape2D_ml4q7"] +radius = 48.0 +height = 312.0 + [sub_resource type="AtlasTexture" id="AtlasTexture_nj16s"] atlas = ExtResource("2_j17jn") region = Rect2(0, 0, 500, 220) @@ -96,20 +100,25 @@ animations = [{ "speed": 5.0 }] -[sub_resource type="CapsuleShape2D" id="CapsuleShape2D_ml4q7"] -radius = 48.0 -height = 312.0 - [node name="post-it" type="Area2D"] script = ExtResource("1_yvh5n") +text = "Test" +highlight_color = Color(1.2, 1.2, 1.2, 1) -[node name="BackgroundSprite" type="AnimatedSprite2D" parent="."] +[node name="CollisionShape2D" type="CollisionShape2D" parent="."] +position = Vector2(99.5, 0) +rotation = 1.5708 +shape = SubResource("CapsuleShape2D_ml4q7") + +[node name="Content" type="Node2D" parent="."] + +[node name="BackgroundSprite" type="AnimatedSprite2D" parent="Content"] position = Vector2(99.5, 0) scale = Vector2(0.65, 0.65) sprite_frames = SubResource("SpriteFrames_2amsi") -frame = 5 +frame = 1 -[node name="Label" type="Label" parent="."] +[node name="Label" type="Label" parent="Content"] anchors_preset = 8 anchor_left = 0.5 anchor_top = 0.5 @@ -123,10 +132,6 @@ grow_horizontal = 2 grow_vertical = 2 theme = ExtResource("3_hu2as") theme_type_variation = &"card_text" +text = "Test" vertical_alignment = 1 autowrap_mode = 3 - -[node name="CollisionShape2D" type="CollisionShape2D" parent="."] -position = Vector2(99.5, 0) -rotation = 1.5708 -shape = SubResource("CapsuleShape2D_ml4q7") From c82bf72ac3f6f6ad605345313ba3079965437a6e Mon Sep 17 00:00:00 2001 From: betalars Date: Thu, 29 Jun 2023 17:31:27 +0200 Subject: [PATCH 12/20] rearranging board of devs following card update --- src/dev-util/board of devs.tscn | 214 +++++++++----------------------- 1 file changed, 60 insertions(+), 154 deletions(-) diff --git a/src/dev-util/board of devs.tscn b/src/dev-util/board of devs.tscn index 4787897a..76169255 100644 --- a/src/dev-util/board of devs.tscn +++ b/src/dev-util/board of devs.tscn @@ -13,270 +13,176 @@ grow_vertical = 2 [node name="childhood" type="Control" parent="."] anchors_preset = 0 -offset_right = 40.0 -offset_bottom = 40.0 +offset_left = 184.0 +offset_top = 141.0 +offset_right = 224.0 +offset_bottom = 181.0 [node name="c_homework" parent="childhood" instance=ExtResource("1_xrckx")] -offset_left = 34.0 -offset_top = 31.0 -offset_right = 334.0 -offset_bottom = 251.0 +rotation = -0.0307834 text = "I never put in much effort for homework " [node name="p_good_grades" parent="childhood/c_homework" groups=["c_body", "c_boy_stuff", "c_teachers"] instance=ExtResource("2_ucudl")] -offset_left = 324.0 -offset_top = 16.0 -offset_right = 624.0 -offset_bottom = 116.0 +position = Vector2(-32, 50) text = "but at least I get good grades." [node name="p_upset_peers" parent="childhood/c_homework" groups=["c_Joy", "c_backlash", "c_boy_stuff", "c_comic_heroes", "c_teachers"] instance=ExtResource("2_ucudl")] -offset_left = 327.0 -offset_top = 118.0 -offset_right = 627.0 -offset_bottom = 218.0 +position = Vector2(-32, 140) text = "and my peers were upset about that." [node name="c_teachers" parent="childhood" instance=ExtResource("1_xrckx")] -offset_left = 35.0 -offset_top = 261.0 -offset_right = 335.0 -offset_bottom = 481.0 +position = Vector2(0, 300) +rotation = -0.0755148 text = "I like my teachers more than my classmates " [node name="p_volunteering" parent="childhood/c_teachers" groups=["c_Joy", "c_backlash", "c_boy_stuff"] instance=ExtResource("2_ucudl")] -offset_left = 318.0 -offset_top = 13.0 -offset_right = 618.0 -offset_bottom = 113.0 +position = Vector2(-32, 50) text = "doing voluntary social service at my school would be great." [node name="p_becoming_teacher" parent="childhood/c_teachers" groups=["c_Joy", "c_backlash", "c_homework"] instance=ExtResource("2_ucudl")] -offset_left = 321.0 -offset_top = 115.0 -offset_right = 621.0 -offset_bottom = 215.0 +position = Vector2(-32, 140) text = "maybe I want to become a teacher." [node name="c_Joy" parent="childhood" instance=ExtResource("1_xrckx")] -offset_left = 40.0 -offset_top = 489.0 -offset_right = 340.0 -offset_bottom = 709.0 +position = Vector2(0, 600) +rotation = 0.000135436 text = "I can put ages into things I enjoy " [node name="p_worried_mother" parent="childhood/c_Joy" groups=["c_body", "c_boy_stuff", "c_comic_heroes", "c_homework", "c_teachers"] instance=ExtResource("2_ucudl")] -offset_left = 320.0 -offset_top = 7.0 -offset_right = 620.0 -offset_bottom = 107.0 +position = Vector2(-32, 50) text = "my mother would be worried about that" [node name="p_thomas" parent="childhood/c_Joy" groups=["c_backlash", "c_comic_heroes", "c_homework", "c_teachers"] instance=ExtResource("2_ucudl")] -offset_left = 323.0 -offset_top = 109.0 -offset_right = 623.0 -offset_bottom = 209.0 +position = Vector2(-32, 140) text = "Mr Thomas thinks that makes me gifted." [node name="voice_training" type="Control" parent="."] anchors_preset = 0 -offset_right = 40.0 -offset_bottom = 40.0 +offset_left = 534.0 +offset_top = 141.0 +offset_right = 534.0 +offset_bottom = 141.0 [node name="c_comic_heroes" parent="voice_training" instance=ExtResource("1_xrckx")] -offset_left = 685.0 -offset_top = 26.0 -offset_right = 985.0 -offset_bottom = 246.0 +rotation = -0.025341 text = "Comic heroes are my role models " [node name="p_effort" parent="voice_training/c_comic_heroes" groups=["c_Joy", "c_hit", "c_teachers"] instance=ExtResource("2_ucudl")] -offset_left = 324.0 -offset_top = 16.0 -offset_right = 624.0 -offset_bottom = 116.0 +position = Vector2(-32, 50) text = "when I put in the effort, I can make the world a better place" [node name="p_upset_peers" parent="voice_training/c_comic_heroes" groups=["c_Joy", "c_body", "c_boy_stuff", "c_hit"] instance=ExtResource("2_ucudl")] -offset_left = 327.0 -offset_top = 118.0 -offset_right = 627.0 -offset_bottom = 218.0 +position = Vector2(-32, 140) text = "and I want to be like agent q!" [node name="c_boy_stuff" parent="voice_training" instance=ExtResource("1_xrckx")] -offset_left = 691.0 -offset_top = 270.0 -offset_right = 991.0 -offset_bottom = 490.0 +position = Vector2(0, 300) +rotation = -0.029437 text = "I like boy stuff " [node name="p_slut" parent="voice_training/c_boy_stuff" groups=["c_Joy", "c_body", "c_hit", "c_homework", "c_teachers"] instance=ExtResource("2_ucudl")] -offset_left = 318.0 -offset_top = 13.0 -offset_right = 618.0 -offset_bottom = 113.0 +position = Vector2(-32, 50) text = "others think I only pretend to." [node name="p_girls" parent="voice_training/c_boy_stuff" groups=["c_Joy", "c_body", "c_comic_heroes", "c_hit", "c_homework", "c_teachers"] instance=ExtResource("2_ucudl")] -offset_left = 321.0 -offset_top = 115.0 -offset_right = 621.0 -offset_bottom = 215.0 +position = Vector2(-32, 140) text = "and girls don't get that." [node name="c_backlash" parent="voice_training" instance=ExtResource("1_xrckx")] -offset_left = 691.0 -offset_top = 493.0 -offset_right = 991.0 -offset_bottom = 713.0 +position = Vector2(0, 600) +rotation = -0.0755148 text = "Despite the backlash, I protected Joyo in front of class " [node name="p_cross_friend" parent="voice_training/c_backlash" groups=["c_Joy", "c_boy_stuff", "c_comic_heroes", "c_hit"] instance=ExtResource("2_ucudl")] -offset_left = 320.0 -offset_top = 7.0 -offset_right = 620.0 -offset_bottom = 107.0 +position = Vector2(-32, 50) text = "I would never cross a friend, even if it was for my own good." [node name="p_reward" parent="voice_training/c_backlash" groups=["c_Joy"] instance=ExtResource("2_ucudl")] -offset_left = 323.0 -offset_top = 109.0 -offset_right = 623.0 -offset_bottom = 209.0 +position = Vector2(-32, 140) text = "those who put in the effort should be rewarded." [node name="juijutsu" type="Control" parent="."] anchors_preset = 0 -offset_right = 40.0 -offset_bottom = 40.0 +offset_left = 884.0 +offset_top = 141.0 +offset_right = 884.0 +offset_bottom = 141.0 [node name="c_body" parent="juijutsu" instance=ExtResource("1_xrckx")] -offset_left = 1332.0 -offset_top = 34.0 -offset_right = 1632.0 -offset_bottom = 254.0 +rotation = -0.0222343 text = "my body makes me uncomfortable " [node name="p_boobs" parent="juijutsu/c_body" groups=["c_boy_stuff"] instance=ExtResource("2_ucudl")] -offset_left = 324.0 -offset_top = 16.0 -offset_right = 624.0 -offset_bottom = 116.0 +position = Vector2(-32, 50) text = "boobs are just not made for fighting." [node name="p_fat" parent="juijutsu/c_body" instance=ExtResource("2_ucudl")] -offset_left = 327.0 -offset_top = 118.0 -offset_right = 627.0 -offset_bottom = 218.0 +position = Vector2(-32, 140) text = "I despise all the fat on my hips." [node name="c_hit" parent="juijutsu" instance=ExtResource("1_xrckx")] -offset_left = 1338.0 -offset_top = 278.0 -offset_right = 1638.0 -offset_bottom = 498.0 +position = Vector2(0, 300) +rotation = -0.029437 text = "I know how to properly hit people " [node name="p_confidence" parent="juijutsu/c_hit" groups=["c_Joy", "c_backlash", "c_boy_stuff", "c_comic_heroes", "c_homework"] instance=ExtResource("2_ucudl")] -offset_left = 318.0 -offset_top = 13.0 -offset_right = 618.0 -offset_bottom = 113.0 +position = Vector2(-32, 50) text = "..., that gives me a lot of confidence." [node name="p_vent" parent="juijutsu/c_hit" groups=["c_Joy", "c_backlash", "c_boy_stuff", "c_comic_heroes", "c_homework", "c_teachers"] instance=ExtResource("2_ucudl")] -offset_left = 321.0 -offset_top = 115.0 -offset_right = 621.0 -offset_bottom = 215.0 +position = Vector2(-32, 140) text = "and that’s a great vent." [node name="c_void" parent="juijutsu" instance=ExtResource("1_xrckx")] -offset_left = 1338.0 -offset_top = 501.0 -offset_right = 1638.0 -offset_bottom = 721.0 +position = Vector2(0, 600) +rotation = -0.0328844 [node name="p_wet" parent="juijutsu/c_void" groups=["c_void"] instance=ExtResource("2_ucudl")] -offset_left = 320.0 -offset_top = 7.0 -offset_right = 620.0 -offset_bottom = 107.0 +position = Vector2(-32, 50) text = "… I was wet, so I must have been into it." [node name="p_stop" parent="juijutsu/c_void" groups=["c_void"] instance=ExtResource("2_ucudl")] -offset_left = 323.0 -offset_top = 109.0 -offset_right = 623.0 -offset_bottom = 209.0 +position = Vector2(-32, 140) text = "… I didn’t say stop." [node name="test" type="Control" parent="."] anchors_preset = 0 -offset_left = 730.0 -offset_top = -3.0 -offset_right = 770.0 -offset_bottom = 37.0 +offset_left = 1234.0 +offset_top = 141.0 +offset_right = 1274.0 +offset_bottom = 181.0 [node name="c_random1" parent="test" instance=ExtResource("1_xrckx")] -offset_left = 1332.0 -offset_top = 34.0 -offset_right = 1632.0 -offset_bottom = 254.0 +rotation = -0.0328844 [node name="p_random11" parent="test/c_random1" groups=["c_boy_stuff"] instance=ExtResource("2_ucudl")] -offset_left = 324.0 -offset_top = 16.0 -offset_right = 624.0 -offset_bottom = 116.0 +position = Vector2(-32, 50) text = "random 1" [node name="p_random12" parent="test/c_random1" instance=ExtResource("2_ucudl")] -offset_left = 327.0 -offset_top = 118.0 -offset_right = 627.0 -offset_bottom = 218.0 +position = Vector2(-32, 140) text = "random 1" [node name="c_pick" parent="test" instance=ExtResource("1_xrckx")] -offset_left = 1338.0 -offset_top = 278.0 -offset_right = 1638.0 -offset_bottom = 498.0 +position = Vector2(0, 300) +rotation = -0.0328844 [node name="p_pick" parent="test/c_pick" groups=["c_Joy", "c_backlash", "c_boy_stuff", "c_comic_heroes", "c_homework"] instance=ExtResource("2_ucudl")] -offset_left = 318.0 -offset_top = 13.0 -offset_right = 618.0 -offset_bottom = 113.0 +position = Vector2(-32, 50) text = "pick me 2" [node name="p_goof" parent="test/c_pick" groups=["c_Joy", "c_backlash", "c_boy_stuff", "c_comic_heroes", "c_homework", "c_teachers"] instance=ExtResource("2_ucudl")] -offset_left = 321.0 -offset_top = 115.0 -offset_right = 621.0 -offset_bottom = 215.0 +position = Vector2(-32, 140) text = "you done goofed" [node name="c_random2" parent="test" instance=ExtResource("1_xrckx")] -offset_left = 1338.0 -offset_top = 501.0 -offset_right = 1638.0 -offset_bottom = 721.0 +position = Vector2(0, 600) +rotation = -0.0328844 [node name="p_random21" parent="test/c_random2" groups=["c_void"] instance=ExtResource("2_ucudl")] -offset_left = 320.0 -offset_top = 7.0 -offset_right = 620.0 -offset_bottom = 107.0 +position = Vector2(-32, 50) text = "random 2" [node name="p_random22" parent="test/c_random2" groups=["c_void"] instance=ExtResource("2_ucudl")] -offset_left = 323.0 -offset_top = 109.0 -offset_right = 623.0 -offset_bottom = 209.0 +position = Vector2(-32, 140) text = "random 2" From e91dfc1125b067a7c8a62eed68af605c95ba5ed9 Mon Sep 17 00:00:00 2001 From: betalars Date: Thu, 29 Jun 2023 17:34:02 +0200 Subject: [PATCH 13/20] remove wiggle code not being used iin postIt --- src/logic-scenes/board/post-it.gd | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/src/logic-scenes/board/post-it.gd b/src/logic-scenes/board/post-it.gd index b314d850..409009ad 100644 --- a/src/logic-scenes/board/post-it.gd +++ b/src/logic-scenes/board/post-it.gd @@ -3,9 +3,6 @@ extends Area2D class_name PostIt var sibling -var wiggle_pos: float = randf_range(-100, 100) -var wiggle_intensity: float = 0 -var noise: Noise = FastNoiseLite.new() var shift_tween var modulate_tween @@ -15,6 +12,7 @@ var modulate_tween $Content/Label.text = value $Content/BackgroundSprite.frame = text.hash() % $Content/BackgroundSprite.sprite_frames.get_frame_count($Content/BackgroundSprite.animation) text = value + @export var shift_by: Vector2 = Vector2(-32, 0) @export_color_no_alpha var highlight_color: Color = Color(1.5, 1.5, 1.5) @@ -39,10 +37,8 @@ var modulate_tween else: if highlighted: modulate = Color(1, 1, 1) - wiggle_intensity = 1 else: modulate = Color(1, 1, 1) - wiggle_intensity = 0 @export var voice_line: AudioStream = null From bbc703340300b174e517facf70b8ce6d269aa204 Mon Sep 17 00:00:00 2001 From: betalars Date: Thu, 29 Jun 2023 17:35:30 +0200 Subject: [PATCH 14/20] changing random rotation offset to depend on card text --- src/logic-scenes/board/card.gd | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/src/logic-scenes/board/card.gd b/src/logic-scenes/board/card.gd index e11c46d9..bc2d486a 100644 --- a/src/logic-scenes/board/card.gd +++ b/src/logic-scenes/board/card.gd @@ -4,7 +4,7 @@ extends Area2D class_name Card var compatible_postits: Array[PostIt] = [] var own_postits: Array[PostIt] = [] -var wiggle_pos: float = randf_range(-100, 100) +var wiggle_pos: float = 0 var wiggle_intensity: float = 0 var noise: Noise = FastNoiseLite.new() var wiggle_tween @@ -16,8 +16,10 @@ var scale_tween if is_inside_tree() or Engine.is_editor_hint(): $Label.text = value $BackgroundSprite.frame = text.hash() % $BackgroundSprite.sprite_frames.get_frame_count($BackgroundSprite.animation) - if is_inside_tree(): - $BackgroundSprite.void_active = value == "" + wiggle_pos = float(text.hash() % 100) + if is_inside_tree() and value == "": + $BackgroundSprite.void_active = true + _handle_wiggle(0) @export var wiggle_strength: float = 0.2 @export var wiggle_speed: float = 5 @export_range(1, 2) var scale_bump: float = 1.05 @@ -50,7 +52,7 @@ var scale_tween @export var voice_line: AudioStream = null func _ready(): - _handle_wiggle(0) + if not Engine.is_editor_hint() and is_inside_tree(): for postit in self.get_children(): if postit is PostIt: self.own_postits.append(postit as PostIt) @@ -64,8 +66,11 @@ func _ready(): own_postits[0].sibling = own_postits[1] own_postits[1].sibling = own_postits[0] - $BackgroundSprite.frame = randi() % $BackgroundSprite.sprite_frames.get_frame_count($BackgroundSprite.animation) + $BackgroundSprite.frame = text.hash() % $BackgroundSprite.sprite_frames.get_frame_count($BackgroundSprite.animation) $Label.text = self.text + + wiggle_pos = float(text.hash() % 100) + _handle_wiggle(0) func _process(delta: float) -> void: From ba3412bde859e7ba9764ac69b3d7f58251f7991c Mon Sep 17 00:00:00 2001 From: betalars Date: Thu, 29 Jun 2023 17:36:12 +0200 Subject: [PATCH 15/20] Claning up scene strucutre for cards and postIts --- src/logic-scenes/board/card.tscn | 21 +++++++++++---------- src/logic-scenes/board/post-it.tscn | 4 +--- 2 files changed, 12 insertions(+), 13 deletions(-) diff --git a/src/logic-scenes/board/card.tscn b/src/logic-scenes/board/card.tscn index 331e38bf..baa871d5 100644 --- a/src/logic-scenes/board/card.tscn +++ b/src/logic-scenes/board/card.tscn @@ -6,6 +6,10 @@ [ext_resource type="Theme" uid="uid://b056fn288p8ha" path="res://logic-scenes/themes/messy.theme" id="3_rktsa"] [ext_resource type="Texture2D" uid="uid://bqilajx05t0eb" path="res://logic-scenes/board/particle_textures/void_nomotion.png" id="4_fwm1k"] +[sub_resource type="CapsuleShape2D" id="CapsuleShape2D_foovg"] +radius = 110.0 +height = 336.0 + [sub_resource type="AtlasTexture" id="AtlasTexture_ykk13"] atlas = ExtResource("2_ioijn") region = Rect2(0, 0, 600, 440) @@ -141,19 +145,20 @@ func _process(_delta): self.visible = State.reduce_motion and is_void " -[sub_resource type="CapsuleShape2D" id="CapsuleShape2D_foovg"] -radius = 110.0 -height = 336.0 - [node name="card" type="Area2D"] -rotation = 0.197177 +rotation = -0.0265383 script = ExtResource("1_emip0") +[node name="CollisionShape2D" type="CollisionShape2D" parent="."] +rotation = 1.5708 +scale = Vector2(1, 1) +shape = SubResource("CapsuleShape2D_foovg") + [node name="BackgroundSprite" type="AnimatedSprite2D" parent="."] clip_children = 2 scale = Vector2(0.6, 0.6) sprite_frames = SubResource("SpriteFrames_ckivt") -frame = 3 +frame = 1 script = SubResource("GDScript_8bs16") [node name="GPUParticles2D" type="GPUParticles2D" parent="BackgroundSprite"] @@ -197,7 +202,3 @@ offset_left = 100.0 offset_top = 148.0 offset_right = 140.0 offset_bottom = 188.0 - -[node name="CollisionShape2D" type="CollisionShape2D" parent="."] -rotation = 1.5708 -shape = SubResource("CapsuleShape2D_foovg") diff --git a/src/logic-scenes/board/post-it.tscn b/src/logic-scenes/board/post-it.tscn index c4fc3f24..cc1bb8ff 100644 --- a/src/logic-scenes/board/post-it.tscn +++ b/src/logic-scenes/board/post-it.tscn @@ -102,7 +102,6 @@ animations = [{ [node name="post-it" type="Area2D"] script = ExtResource("1_yvh5n") -text = "Test" highlight_color = Color(1.2, 1.2, 1.2, 1) [node name="CollisionShape2D" type="CollisionShape2D" parent="."] @@ -116,7 +115,7 @@ shape = SubResource("CapsuleShape2D_ml4q7") position = Vector2(99.5, 0) scale = Vector2(0.65, 0.65) sprite_frames = SubResource("SpriteFrames_2amsi") -frame = 1 +frame = 5 [node name="Label" type="Label" parent="Content"] anchors_preset = 8 @@ -132,6 +131,5 @@ grow_horizontal = 2 grow_vertical = 2 theme = ExtResource("3_hu2as") theme_type_variation = &"card_text" -text = "Test" vertical_alignment = 1 autowrap_mode = 3 From 76299d8af4f21dddaa8b072efc63e825c2e80541 Mon Sep 17 00:00:00 2001 From: betalars Date: Thu, 29 Jun 2023 22:20:38 +0200 Subject: [PATCH 16/20] moving INI set, so it is set before ready --- src/logic-scenes/card_picker/card_picker.gd | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/logic-scenes/card_picker/card_picker.gd b/src/logic-scenes/card_picker/card_picker.gd index 7afdd1d6..c0dce851 100644 --- a/src/logic-scenes/card_picker/card_picker.gd +++ b/src/logic-scenes/card_picker/card_picker.gd @@ -19,7 +19,7 @@ var has_focus = false: self.show() has_focus = focus -var selection_state +var selection_state = INI var anim_players:Array var curr_selection_id: int = -1: @@ -46,7 +46,6 @@ func _ready(): for control in card_controls: options.append(control.get_child(1)) anim_players.append(control.get_child(0)) - selection_state = INI fill_card_slots() From 283bcf6662925ff20a9142c41251e0f66f5c8c9a Mon Sep 17 00:00:00 2001 From: betalars Date: Fri, 30 Jun 2023 00:54:34 +0200 Subject: [PATCH 17/20] adding mouse support for card picker, WIP --- src/logic-scenes/card_picker/card_picker.gd | 26 ++++++++++++++++++--- 1 file changed, 23 insertions(+), 3 deletions(-) diff --git a/src/logic-scenes/card_picker/card_picker.gd b/src/logic-scenes/card_picker/card_picker.gd index c0dce851..d6d94ca2 100644 --- a/src/logic-scenes/card_picker/card_picker.gd +++ b/src/logic-scenes/card_picker/card_picker.gd @@ -1,5 +1,6 @@ extends CenterContainer +#fixme INI is probably redundant. enum { INI, CARDS, @@ -20,18 +21,19 @@ var has_focus = false: has_focus = focus var selection_state = INI +var input_locked = true var anim_players:Array var curr_selection_id: int = -1: set(new_id): if selection_state == CARDS or selection_state == POSTS: - if not curr_selection_id == -1: anim_players[curr_selection_id].play("deselect") + if not curr_selection_id == -1: options[curr_selection_id].highlighted = false if new_id > options.size() -1: curr_selection_id = 0 elif new_id < 0: curr_selection_id = options.size() - 1 else: curr_selection_id = new_id - anim_players[curr_selection_id].play("select") + options[curr_selection_id].highlighted = true else: curr_selection_id = new_id @@ -48,11 +50,16 @@ func _ready(): anim_players.append(control.get_child(0)) fill_card_slots() + + #fixme: when thisa scene is launched on it's own, state will assign focus. + State.pass_focus_to(self) + input_locked = false func fill_card_slots(): for i in range($cards.get_child_count()): var card:Card = $cards.get_child(i).get_child(1) card.replace_with(debug_board.get_child(0).get_child(i) as Card) + card.connect("mouse_entered", Callable(self, "get_highlight")) func fill_post_slots(): var post_its: Array[PostIt] = [] @@ -64,7 +71,7 @@ func fill_post_slots(): options[i].replace_with(post_its[i]) func _unhandled_input(event): - if has_focus: + if has_focus and not input_locked: if event.is_action_pressed("ui_up") or event.is_action_pressed("ui_left") or event.is_action_pressed("ui_focus_next"): curr_selection_id -= 1 elif event.is_action_pressed("ui_down") or event.is_action_pressed("ui_right") or event.is_action_pressed("ui_focus_prev"): @@ -76,6 +83,9 @@ func pick(id: int): if id == -1: curr_selection_id = 0 return + + input_locked = true + anim_players[id].play("pick") var yield_to = anim_players[id].animation_finished output.append(options[id]) @@ -120,3 +130,13 @@ func pick(id: int): await anim_players[0].animation_finished selection_state = POSTS + input_locked = false + +func handle_hover(new_highlight): + if not input_locked: + curr_selection_id = options.find(new_highlight) + +func handle_mouse_button(new_selection: Node, button_event: InputEventMouseButton): + if not input_locked: + if button_event.button_index == MOUSE_BUTTON_LEFT and button_event.pressed: + pick(options.find(new_selection)) From 35193bf70478d33e3c5404c0b18f49d80560f777 Mon Sep 17 00:00:00 2001 From: Adrian Schmid Date: Thu, 29 Jun 2023 22:19:58 +0200 Subject: [PATCH 18/20] added dragging cards and post its with mouse input --- src/logic-scenes/board/card.gd | 12 +++ src/logic-scenes/board/card.tscn | 6 +- src/logic-scenes/board/physics-board.tscn | 96 +++++++++++++++-------- src/logic-scenes/board/post-it.gd | 12 +++ src/logic-scenes/board/post-it.tscn | 9 ++- 5 files changed, 95 insertions(+), 40 deletions(-) diff --git a/src/logic-scenes/board/card.gd b/src/logic-scenes/board/card.gd index e11c46d9..ba79b64f 100644 --- a/src/logic-scenes/board/card.gd +++ b/src/logic-scenes/board/card.gd @@ -48,6 +48,7 @@ var scale_tween wiggle_intensity = 0 @export var voice_line: AudioStream = null +@export var is_dragable: bool = false func _ready(): _handle_wiggle(0) @@ -88,3 +89,14 @@ func _on_focus_entered(): func _on_focus_exited(): print(self, "is not focused") + +func _on_mouse_entered(): + highlighted = true + +func _on_mouse_exited(): + highlighted = false + +func _on_input_event(viewport, event, shape_idx): + if event is InputEventMouseMotion and Input.is_action_pressed("mouse_left") and is_dragable: + position += event.relative + diff --git a/src/logic-scenes/board/card.tscn b/src/logic-scenes/board/card.tscn index 331e38bf..9ca91eb5 100644 --- a/src/logic-scenes/board/card.tscn +++ b/src/logic-scenes/board/card.tscn @@ -198,6 +198,6 @@ offset_top = 148.0 offset_right = 140.0 offset_bottom = 188.0 -[node name="CollisionShape2D" type="CollisionShape2D" parent="."] -rotation = 1.5708 -shape = SubResource("CapsuleShape2D_foovg") +[connection signal="input_event" from="." to="." method="_on_input_event"] +[connection signal="mouse_entered" from="." to="." method="_on_mouse_entered"] +[connection signal="mouse_exited" from="." to="." method="_on_mouse_exited"] diff --git a/src/logic-scenes/board/physics-board.tscn b/src/logic-scenes/board/physics-board.tscn index ea0e74a6..4b1b0c50 100644 --- a/src/logic-scenes/board/physics-board.tscn +++ b/src/logic-scenes/board/physics-board.tscn @@ -1,10 +1,11 @@ -[gd_scene load_steps=9 format=3 uid="uid://bnskiyx1sksww"] +[gd_scene load_steps=10 format=3 uid="uid://bnskiyx1sksww"] [ext_resource type="Texture2D" uid="uid://bi3xqdknw5tpe" path="res://logic-scenes/board/board-texture/Cork002_2K_Color.png" id="1_8brxc"] [ext_resource type="Shader" path="res://logic-scenes/board/physics-board.gdshader" id="1_ggnth"] [ext_resource type="Script" path="res://logic-scenes/board/card-board.gd" id="3_8v4c4"] [ext_resource type="PackedScene" uid="uid://dy5rd437h5hsw" path="res://logic-scenes/board/card.tscn" id="3_mg053"] [ext_resource type="PackedScene" uid="uid://bvowj4l8dtceu" path="res://dev-util/board of devs.tscn" id="4_sskx2"] +[ext_resource type="PackedScene" uid="uid://vkcdj8c3ytbq" path="res://logic-scenes/board/post-it.tscn" id="5_048k0"] [ext_resource type="Script" path="res://logic-scenes/board/bouncy-card.gd" id="6_gcxd7"] [sub_resource type="ShaderMaterial" id="ShaderMaterial_ttqei"] @@ -15,7 +16,7 @@ shader_parameter/tex = ExtResource("1_8brxc") [sub_resource type="CircleShape2D" id="CircleShape2D_x8rl2"] radius = 154.052 -[node name="Panel" type="PanelContainer"] +[node name="board" type="PanelContainer"] material = SubResource("ShaderMaterial_ttqei") clip_contents = true anchors_preset = 15 @@ -25,46 +26,79 @@ grow_horizontal = 2 grow_vertical = 2 size_flags_horizontal = 6 size_flags_vertical = 6 +mouse_filter = 1 script = ExtResource("3_8v4c4") [node name="HBoxContainer" type="HBoxContainer" parent="."] layout_mode = 2 -[node name="Panel" type="Panel" parent="HBoxContainer"] +[node name="dropzone" type="Panel" parent="HBoxContainer"] layout_mode = 2 size_flags_horizontal = 3 +mouse_filter = 1 -[node name="Control" type="Control" parent="HBoxContainer/Panel"] -anchors_preset = 0 -offset_left = 305.0 -offset_top = 463.0 -offset_right = 305.0 -offset_bottom = 463.0 +[node name="card3" parent="HBoxContainer/dropzone" instance=ExtResource("3_mg053")] +z_as_relative = false +position = Vector2(371, 290) +rotation = 0.00712087 +collision_layer = 2147483649 -[node name="card3" parent="HBoxContainer/Panel/Control" instance=ExtResource("3_mg053")] -offset_left = 0.0 -offset_top = 0.0 -offset_right = 0.0 -offset_bottom = 0.0 +[node name="card" parent="HBoxContainer/dropzone" instance=ExtResource("3_mg053")] +position = Vector2(640, 659) +rotation = 0.0714344 +scale = Vector2(1, 1) +is_dragable = true -[node name="VBoxContainer3" type="VBoxContainer" parent="HBoxContainer"] +[node name="ScrollContainer" type="ScrollContainer" parent="HBoxContainer"] layout_mode = 2 -size_flags_horizontal = 8 - -[node name="CenterContainer" type="ScrollContainer" parent="HBoxContainer/VBoxContainer3"] -layout_mode = 2 -size_flags_vertical = 3 horizontal_scroll_mode = 0 -[node name="post-ancor" type="Panel" parent="HBoxContainer/VBoxContainer3/CenterContainer"] -custom_minimum_size = Vector2(320, 110) +[node name="VBoxContainer" type="VBoxContainer" parent="HBoxContainer/ScrollContainer"] layout_mode = 2 +[node name="Panel" type="Panel" parent="HBoxContainer/ScrollContainer/VBoxContainer"] +custom_minimum_size = Vector2(400, 120) +layout_mode = 2 +mouse_filter = 1 + +[node name="post-it" parent="HBoxContainer/ScrollContainer/VBoxContainer/Panel" instance=ExtResource("5_048k0")] +z_index = 1 +position = Vector2(105, 57) +is_dragable = true + +[node name="Panel2" type="Panel" parent="HBoxContainer/ScrollContainer/VBoxContainer"] +custom_minimum_size = Vector2(400, 120) +layout_mode = 2 +mouse_filter = 1 + +[node name="post-it" parent="HBoxContainer/ScrollContainer/VBoxContainer/Panel2" instance=ExtResource("5_048k0")] +position = Vector2(105, 57) +is_dragable = true + +[node name="Panel3" type="Panel" parent="HBoxContainer/ScrollContainer/VBoxContainer"] +custom_minimum_size = Vector2(400, 120) +layout_mode = 2 +mouse_filter = 1 + +[node name="post-it" parent="HBoxContainer/ScrollContainer/VBoxContainer/Panel3" instance=ExtResource("5_048k0")] +position = Vector2(105, 57) +is_dragable = true + +[node name="Panel4" type="Panel" parent="HBoxContainer/ScrollContainer/VBoxContainer"] +custom_minimum_size = Vector2(400, 120) +layout_mode = 2 +mouse_filter = 1 + +[node name="post-it" parent="HBoxContainer/ScrollContainer/VBoxContainer/Panel4" instance=ExtResource("5_048k0")] +position = Vector2(105, 57) +is_dragable = true + [node name="board of devs" parent="." instance=ExtResource("4_sskx2")] visible = false layout_mode = 2 [node name="Node2D" type="Node2D" parent="."] +visible = false [node name="RigidBody2D" type="Area2D" parent="Node2D"] position = Vector2(686, 379) @@ -77,10 +111,8 @@ shape = SubResource("CircleShape2D_x8rl2") position = Vector2(-151, -107) [node name="card2" parent="Node2D/RigidBody2D/ancor" instance=ExtResource("3_mg053")] -offset_left = 0.0 -offset_top = 0.0 -offset_right = 0.0 -offset_bottom = 0.0 +rotation = -0.0180459 +collision_layer = 2 [node name="RigidBody2D2" type="Area2D" parent="Node2D"] position = Vector2(742, 323) @@ -93,10 +125,8 @@ shape = SubResource("CircleShape2D_x8rl2") position = Vector2(-151, -107) [node name="card2" parent="Node2D/RigidBody2D2/ancor" instance=ExtResource("3_mg053")] -offset_left = 0.0 -offset_top = 0.0 -offset_right = 0.0 -offset_bottom = 0.0 +rotation = 0.0612526 +collision_layer = 2 [node name="RigidBody2D3" type="Area2D" parent="Node2D"] position = Vector2(694, 353) @@ -109,7 +139,5 @@ shape = SubResource("CircleShape2D_x8rl2") position = Vector2(-151, -107) [node name="card2" parent="Node2D/RigidBody2D3/ancor" instance=ExtResource("3_mg053")] -offset_left = 0.0 -offset_top = 0.0 -offset_right = 0.0 -offset_bottom = 0.0 +rotation = 0.0528008 +collision_layer = 2 diff --git a/src/logic-scenes/board/post-it.gd b/src/logic-scenes/board/post-it.gd index b314d850..b5cad590 100644 --- a/src/logic-scenes/board/post-it.gd +++ b/src/logic-scenes/board/post-it.gd @@ -45,6 +45,7 @@ var modulate_tween wiggle_intensity = 0 @export var voice_line: AudioStream = null +@export var is_dragable: bool = false func _ready() -> void: $Content/Label.text = self.text @@ -64,3 +65,14 @@ func _on_focus_entered(): func _on_focus_exited(): print(self, "is not focused") + +func _on_mouse_entered(): + #owner.grab_highlight(self) + highlighted = true + +func _on_mouse_exited(): + highlighted = false + +func _on_input_event(viewport, event, shape_idx): + if event is InputEventMouseMotion and Input.is_action_pressed("mouse_left") and is_dragable: + position += event.relative diff --git a/src/logic-scenes/board/post-it.tscn b/src/logic-scenes/board/post-it.tscn index c4fc3f24..15f49b02 100644 --- a/src/logic-scenes/board/post-it.tscn +++ b/src/logic-scenes/board/post-it.tscn @@ -102,8 +102,8 @@ animations = [{ [node name="post-it" type="Area2D"] script = ExtResource("1_yvh5n") -text = "Test" highlight_color = Color(1.2, 1.2, 1.2, 1) +is_dragable = null [node name="CollisionShape2D" type="CollisionShape2D" parent="."] position = Vector2(99.5, 0) @@ -116,7 +116,7 @@ shape = SubResource("CapsuleShape2D_ml4q7") position = Vector2(99.5, 0) scale = Vector2(0.65, 0.65) sprite_frames = SubResource("SpriteFrames_2amsi") -frame = 1 +frame = 5 [node name="Label" type="Label" parent="Content"] anchors_preset = 8 @@ -132,6 +132,9 @@ grow_horizontal = 2 grow_vertical = 2 theme = ExtResource("3_hu2as") theme_type_variation = &"card_text" -text = "Test" vertical_alignment = 1 autowrap_mode = 3 + +[connection signal="input_event" from="." to="." method="_on_input_event"] +[connection signal="mouse_entered" from="." to="." method="_on_mouse_entered"] +[connection signal="mouse_exited" from="." to="." method="_on_mouse_exited"] From e96c0127d2c67ba5b48c892a5801df79e591fa98 Mon Sep 17 00:00:00 2001 From: Adrian Schmid Date: Thu, 29 Jun 2023 22:29:55 +0200 Subject: [PATCH 19/20] fixed missing collider on cards --- src/logic-scenes/board/card.tscn | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/src/logic-scenes/board/card.tscn b/src/logic-scenes/board/card.tscn index 9ca91eb5..89f6a604 100644 --- a/src/logic-scenes/board/card.tscn +++ b/src/logic-scenes/board/card.tscn @@ -6,6 +6,10 @@ [ext_resource type="Theme" uid="uid://b056fn288p8ha" path="res://logic-scenes/themes/messy.theme" id="3_rktsa"] [ext_resource type="Texture2D" uid="uid://bqilajx05t0eb" path="res://logic-scenes/board/particle_textures/void_nomotion.png" id="4_fwm1k"] +[sub_resource type="CapsuleShape2D" id="CapsuleShape2D_foovg"] +radius = 110.0 +height = 336.0 + [sub_resource type="AtlasTexture" id="AtlasTexture_ykk13"] atlas = ExtResource("2_ioijn") region = Rect2(0, 0, 600, 440) @@ -141,19 +145,19 @@ func _process(_delta): self.visible = State.reduce_motion and is_void " -[sub_resource type="CapsuleShape2D" id="CapsuleShape2D_foovg"] -radius = 110.0 -height = 336.0 - [node name="card" type="Area2D"] -rotation = 0.197177 +rotation = -0.0714123 script = ExtResource("1_emip0") +[node name="CollisionShape2D" type="CollisionShape2D" parent="."] +position = Vector2(-0.0713516, 0.997451) +rotation = 1.5708 +shape = SubResource("CapsuleShape2D_foovg") + [node name="BackgroundSprite" type="AnimatedSprite2D" parent="."] clip_children = 2 scale = Vector2(0.6, 0.6) sprite_frames = SubResource("SpriteFrames_ckivt") -frame = 3 script = SubResource("GDScript_8bs16") [node name="GPUParticles2D" type="GPUParticles2D" parent="BackgroundSprite"] From 1f3f089e8391a1db995a0da499bb27ddf2a2328d Mon Sep 17 00:00:00 2001 From: betalars Date: Fri, 30 Jun 2023 00:53:16 +0200 Subject: [PATCH 20/20] improving parsing and passing of mouse events --- src/logic-scenes/board/card.gd | 15 +++++++++++++-- src/logic-scenes/board/post-it.gd | 16 +++++++++++++--- 2 files changed, 26 insertions(+), 5 deletions(-) diff --git a/src/logic-scenes/board/card.gd b/src/logic-scenes/board/card.gd index ba79b64f..0516a920 100644 --- a/src/logic-scenes/board/card.gd +++ b/src/logic-scenes/board/card.gd @@ -49,6 +49,7 @@ var scale_tween @export var voice_line: AudioStream = null @export var is_dragable: bool = false +var is_dragged: bool = false func _ready(): _handle_wiggle(0) @@ -91,12 +92,22 @@ func _on_focus_exited(): print(self, "is not focused") func _on_mouse_entered(): - highlighted = true + if not Input.is_action_pressed("mouse_left"): + highlighted = true + if "handle_hover" in owner: + owner.handle_hover(self) func _on_mouse_exited(): highlighted = false func _on_input_event(viewport, event, shape_idx): - if event is InputEventMouseMotion and Input.is_action_pressed("mouse_left") and is_dragable: + if event is InputEventMouseMotion and is_dragged: position += event.relative + + if event is InputEventMouseButton: + if event.button_index == MOUSE_BUTTON_LEFT: + if is_dragable: + is_dragged = event.pressed + if "handle_mouse_button" in owner: + owner.handle_mouse_button(self, event) diff --git a/src/logic-scenes/board/post-it.gd b/src/logic-scenes/board/post-it.gd index b5cad590..c9f705cd 100644 --- a/src/logic-scenes/board/post-it.gd +++ b/src/logic-scenes/board/post-it.gd @@ -46,6 +46,7 @@ var modulate_tween @export var voice_line: AudioStream = null @export var is_dragable: bool = false +var is_dragged = false func _ready() -> void: $Content/Label.text = self.text @@ -67,12 +68,21 @@ func _on_focus_exited(): print(self, "is not focused") func _on_mouse_entered(): - #owner.grab_highlight(self) - highlighted = true + if not Input.is_action_pressed("mouse_left"): + highlighted = true + if "handle_hover" in owner: + owner.handle_hover(self) func _on_mouse_exited(): highlighted = false func _on_input_event(viewport, event, shape_idx): - if event is InputEventMouseMotion and Input.is_action_pressed("mouse_left") and is_dragable: + if event is InputEventMouseMotion and is_dragged: position += event.relative + + if event is InputEventMouseButton: + if event.button_index == MOUSE_BUTTON_LEFT: + if is_dragable: + is_dragged = event.pressed + if "handle_mouse_button" in owner: + owner.handle_mouse_button(self, event)