From cff100a4fe9d71f376ea13d7e031a39525172945 Mon Sep 17 00:00:00 2001 From: betalars Date: Wed, 28 Jun 2023 11:44:55 +0200 Subject: [PATCH] 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 1eea672..bb43286 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