Nicer nice effect

This commit is contained in:
Rob Kelly 2024-12-10 19:38:44 -07:00
parent c536eff1db
commit 844fd55d43
5 changed files with 471 additions and 261 deletions

View File

@ -0,0 +1,454 @@
[gd_scene load_steps=16 format=3 uid="uid://g8yw4bersece"]
[ext_resource type="Texture2D" uid="uid://b5812y3pmmgg5" path="res://assets/ui/gauge_patch.png" id="1_cbh2e"]
[ext_resource type="FontFile" uid="uid://dsa0oh7c0h4pu" path="res://assets/fonts/Racing_Sans_One/RacingSansOne-Regular.ttf" id="2_m4bhi"]
[ext_resource type="Texture2D" uid="uid://du3vk5nnksohs" path="res://assets/sprites/particles/sparkle.png" id="2_x2leq"]
[ext_resource type="Script" path="res://src/ui/decorations/text_effects/typewriter/typewriter_label.gd" id="2_yjmn6"]
[ext_resource type="Script" path="res://src/ui/decorations/rumbler.gd" id="3_ql2sm"]
[ext_resource type="AudioStream" uid="uid://c8bxu5lusqevv" path="res://assets/sound/sfx/ui/ecofuture3.wav" id="5_a1v30"]
[sub_resource type="Gradient" id="Gradient_hi2t5"]
colors = PackedColorArray(0.389287, 0.389287, 0.389287, 1, 1, 1, 1, 1)
[sub_resource type="GradientTexture1D" id="GradientTexture1D_o3771"]
gradient = SubResource("Gradient_hi2t5")
[sub_resource type="ParticleProcessMaterial" id="ParticleProcessMaterial_qsf88"]
particle_flag_disable_z = true
emission_shape = 3
emission_box_extents = Vector3(0, 150, 1)
spread = 0.0
initial_velocity_min = 200.0
initial_velocity_max = 400.0
angular_velocity_min = -453.84
angular_velocity_max = -28.01
gravity = Vector3(0, 0, 0)
scale_min = 0.3
scale_max = 0.9
color_initial_ramp = SubResource("GradientTexture1D_o3771")
[sub_resource type="Curve" id="Curve_54bet"]
_data = [Vector2(0, 0), 0.0, 0.0, 0, 0, Vector2(0.658363, 0.936358), -2.76095, -2.76095, 0, 0, Vector2(1, 1), -0.829222, 0.0, 0, 0]
point_count = 3
[sub_resource type="Gradient" id="Gradient_6pgg4"]
offsets = PackedFloat32Array(0.389734, 0.431559, 0.538023, 0.595057)
colors = PackedColorArray(1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0)
[sub_resource type="GradientTexture2D" id="GradientTexture2D_nrcya"]
gradient = SubResource("Gradient_6pgg4")
fill_from = Vector2(0, 0.5)
fill_to = Vector2(1, 0.52)
metadata/_snap_enabled = true
[sub_resource type="Animation" id="Animation_i4x7e"]
length = 0.001
tracks/0/type = "value"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath(".:custom_minimum_size")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 0,
"values": [Vector2(0, 300)]
}
tracks/1/type = "value"
tracks/1/imported = false
tracks/1/enabled = true
tracks/1/path = NodePath(".:anchor_right")
tracks/1/interp = 1
tracks/1/loop_wrap = true
tracks/1/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 0,
"values": [1.0]
}
tracks/2/type = "value"
tracks/2/imported = false
tracks/2/enabled = true
tracks/2/path = NodePath("NinePatchRect/InnerWindow/TextContainer/Rumbler/TypewriterLabel/Glint:anchor_left")
tracks/2/interp = 1
tracks/2/loop_wrap = true
tracks/2/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 0,
"values": [-1.0]
}
tracks/3/type = "value"
tracks/3/imported = false
tracks/3/enabled = true
tracks/3/path = NodePath("NinePatchRect/InnerWindow/TextContainer/Rumbler/TypewriterLabel/Glint:anchor_right")
tracks/3/interp = 1
tracks/3/loop_wrap = true
tracks/3/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 0,
"values": [0.0]
}
tracks/4/type = "value"
tracks/4/imported = false
tracks/4/enabled = true
tracks/4/path = NodePath("AudioStreamPlayer:playing")
tracks/4/interp = 1
tracks/4/loop_wrap = true
tracks/4/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 1,
"values": [false]
}
tracks/5/type = "value"
tracks/5/imported = false
tracks/5/enabled = true
tracks/5/path = NodePath("NinePatchRect/InnerWindow/TextContainer/Rumbler/AnimatedStar:scale")
tracks/5/interp = 1
tracks/5/loop_wrap = true
tracks/5/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 0,
"values": [Vector2(1, 1)]
}
tracks/6/type = "value"
tracks/6/imported = false
tracks/6/enabled = true
tracks/6/path = NodePath("NinePatchRect/InnerWindow/TextContainer/Rumbler/AnimatedStar:rotation")
tracks/6/interp = 1
tracks/6/loop_wrap = true
tracks/6/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 0,
"values": [0.0]
}
tracks/7/type = "value"
tracks/7/imported = false
tracks/7/enabled = true
tracks/7/path = NodePath("NinePatchRect/InnerWindow/TextContainer:rotation")
tracks/7/interp = 4
tracks/7/loop_wrap = true
tracks/7/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 0,
"values": [0.0]
}
tracks/8/type = "value"
tracks/8/imported = false
tracks/8/enabled = true
tracks/8/path = NodePath("NinePatchRect/InnerWindow/TextContainer:scale")
tracks/8/interp = 1
tracks/8/loop_wrap = true
tracks/8/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 0,
"values": [Vector2(1, 1)]
}
tracks/9/type = "value"
tracks/9/imported = false
tracks/9/enabled = true
tracks/9/path = NodePath("NinePatchRect/InnerWindow/TextContainer/Rumbler:intensity")
tracks/9/interp = 1
tracks/9/loop_wrap = true
tracks/9/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 0,
"values": [0.0]
}
[sub_resource type="Animation" id="Animation_80e5e"]
resource_name = "display"
length = 5.0
loop_mode = 1
tracks/0/type = "value"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath(".:custom_minimum_size")
tracks/0/interp = 1
tracks/0/loop_wrap = false
tracks/0/keys = {
"times": PackedFloat32Array(0, 0.266667, 0.533334, 1.7, 2),
"transitions": PackedFloat32Array(1, 0.381924, 1, 4.43828, 1),
"update": 0,
"values": [Vector2(0, 8), Vector2(0, 8), Vector2(0, 300), Vector2(0, 300), Vector2(0, 0)]
}
tracks/1/type = "value"
tracks/1/imported = false
tracks/1/enabled = true
tracks/1/path = NodePath(".:anchor_right")
tracks/1/interp = 1
tracks/1/loop_wrap = false
tracks/1/keys = {
"times": PackedFloat32Array(0, 0.266667),
"transitions": PackedFloat32Array(6.22646, 1),
"update": 0,
"values": [0.0, 1.0]
}
tracks/2/type = "method"
tracks/2/imported = false
tracks/2/enabled = true
tracks/2/path = NodePath("NinePatchRect/InnerWindow/TextContainer/Rumbler/TypewriterLabel")
tracks/2/interp = 1
tracks/2/loop_wrap = true
tracks/2/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"values": [{
"args": [],
"method": &"restart"
}]
}
tracks/3/type = "value"
tracks/3/imported = false
tracks/3/enabled = true
tracks/3/path = NodePath("NinePatchRect/InnerWindow/TextContainer/Rumbler/TypewriterLabel/Glint:anchor_left")
tracks/3/interp = 2
tracks/3/loop_wrap = false
tracks/3/keys = {
"times": PackedFloat32Array(0, 0.933333, 1.63334),
"transitions": PackedFloat32Array(1, 0.618, 1),
"update": 0,
"values": [-1.0, -1.0, 1.0]
}
tracks/4/type = "value"
tracks/4/imported = false
tracks/4/enabled = true
tracks/4/path = NodePath("NinePatchRect/InnerWindow/TextContainer/Rumbler/TypewriterLabel/Glint:anchor_right")
tracks/4/interp = 2
tracks/4/loop_wrap = false
tracks/4/keys = {
"times": PackedFloat32Array(0, 0.666666, 1.36667),
"transitions": PackedFloat32Array(1, 0.618, 1),
"update": 0,
"values": [0.0, 0.0, 2.0]
}
tracks/5/type = "value"
tracks/5/imported = false
tracks/5/enabled = true
tracks/5/path = NodePath("AudioStreamPlayer:playing")
tracks/5/interp = 1
tracks/5/loop_wrap = false
tracks/5/keys = {
"times": PackedFloat32Array(0.6),
"transitions": PackedFloat32Array(1),
"update": 1,
"values": [true]
}
tracks/6/type = "method"
tracks/6/imported = false
tracks/6/enabled = true
tracks/6/path = NodePath(".")
tracks/6/interp = 1
tracks/6/loop_wrap = true
tracks/6/keys = {
"times": PackedFloat32Array(5),
"transitions": PackedFloat32Array(1),
"values": [{
"args": [],
"method": &"queue_free"
}]
}
tracks/7/type = "value"
tracks/7/imported = false
tracks/7/enabled = true
tracks/7/path = NodePath("NinePatchRect/InnerWindow/TextContainer/Rumbler/AnimatedStar:scale")
tracks/7/interp = 1
tracks/7/loop_wrap = false
tracks/7/keys = {
"times": PackedFloat32Array(0, 1.1, 1.26667, 1.43333, 1.7),
"transitions": PackedFloat32Array(1, 1, 1, 1, 1),
"update": 0,
"values": [Vector2(1e-05, 1e-05), Vector2(1e-05, 1e-05), Vector2(1, 1), Vector2(1, 1), Vector2(1e-05, 1e-05)]
}
tracks/8/type = "value"
tracks/8/imported = false
tracks/8/enabled = true
tracks/8/path = NodePath("NinePatchRect/InnerWindow/TextContainer/Rumbler/AnimatedStar:rotation")
tracks/8/interp = 1
tracks/8/loop_wrap = false
tracks/8/keys = {
"times": PackedFloat32Array(1.1, 1.3, 1.5, 1.7),
"transitions": PackedFloat32Array(1, 1, 1, 1),
"update": 0,
"values": [0.0, 3.14159, 6.28319, 9.42478]
}
tracks/9/type = "value"
tracks/9/imported = false
tracks/9/enabled = true
tracks/9/path = NodePath("NinePatchRect/InnerWindow/TextContainer:rotation")
tracks/9/interp = 4
tracks/9/loop_wrap = false
tracks/9/keys = {
"times": PackedFloat32Array(0.233333, 0.9, 1.56667, 2.23333),
"transitions": PackedFloat32Array(1, 1, 1, 1),
"update": 0,
"values": [-0.0174533, 0.0174533, -0.0174533, 0.0174533]
}
tracks/10/type = "value"
tracks/10/imported = false
tracks/10/enabled = true
tracks/10/path = NodePath("NinePatchRect/InnerWindow/TextContainer:scale")
tracks/10/interp = 2
tracks/10/loop_wrap = true
tracks/10/keys = {
"times": PackedFloat32Array(0, 0.666667, 1.33333, 2, 2.66667),
"transitions": PackedFloat32Array(1, 1, 1, 1, 1),
"update": 0,
"values": [Vector2(1, 1), Vector2(1.05, 1.05), Vector2(1, 1), Vector2(1.05, 1.05), Vector2(1, 1)]
}
tracks/11/type = "value"
tracks/11/imported = false
tracks/11/enabled = true
tracks/11/path = NodePath("NinePatchRect/InnerWindow/TextContainer/Rumbler:intensity")
tracks/11/interp = 1
tracks/11/loop_wrap = true
tracks/11/keys = {
"times": PackedFloat32Array(0, 0.466667, 0.566667, 1.33333),
"transitions": PackedFloat32Array(1, 1, 1, 1),
"update": 0,
"values": [0.0, 0.0, 10.0, 0.0]
}
[sub_resource type="AnimationLibrary" id="AnimationLibrary_pgwgo"]
_data = {
"RESET": SubResource("Animation_i4x7e"),
"display": SubResource("Animation_80e5e")
}
[node name="NiceAlert" type="Control"]
clip_contents = true
custom_minimum_size = Vector2(0, 300)
layout_mode = 3
anchors_preset = 14
anchor_top = 0.5
anchor_right = 1.0
anchor_bottom = 0.5
grow_horizontal = 2
grow_vertical = 2
[node name="NinePatchRect" type="NinePatchRect" parent="."]
layout_mode = 1
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
texture = ExtResource("1_cbh2e")
patch_margin_left = 16
patch_margin_top = 16
patch_margin_right = 16
patch_margin_bottom = 16
[node name="InnerWindow" type="Control" parent="NinePatchRect"]
clip_contents = true
layout_mode = 1
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
offset_left = 16.0
offset_top = 16.0
offset_right = -16.0
offset_bottom = -16.0
grow_horizontal = 2
grow_vertical = 2
pivot_offset = Vector2(0, 150)
[node name="ParticleOrigin" type="Control" parent="NinePatchRect/InnerWindow"]
layout_mode = 1
anchors_preset = 4
anchor_top = 0.5
anchor_bottom = 0.5
grow_vertical = 2
[node name="GPUParticles2D" type="GPUParticles2D" parent="NinePatchRect/InnerWindow/ParticleOrigin"]
amount = 1024
process_material = SubResource("ParticleProcessMaterial_qsf88")
texture = ExtResource("2_x2leq")
lifetime = 20.0
preprocess = 20.0
visibility_rect = Rect2(0, -150, 1920, 300)
[node name="TextContainer" type="Control" parent="NinePatchRect/InnerWindow"]
custom_minimum_size = Vector2(1700, 400)
layout_mode = 1
anchors_preset = 8
anchor_left = 0.5
anchor_top = 0.5
anchor_right = 0.5
anchor_bottom = 0.5
offset_left = -850.0
offset_top = -200.0
offset_right = 850.0
offset_bottom = 200.0
grow_horizontal = 2
grow_vertical = 2
pivot_offset = Vector2(850, 200)
[node name="Rumbler" type="Control" parent="NinePatchRect/InnerWindow/TextContainer"]
layout_mode = 1
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
script = ExtResource("3_ql2sm")
[node name="TypewriterLabel" type="RichTextLabel" parent="NinePatchRect/InnerWindow/TextContainer/Rumbler"]
clip_children = 2
texture_filter = 6
custom_minimum_size = Vector2(1650, 380)
layout_mode = 1
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
scale = Vector2(1.05, 1.05)
theme_override_constants/outline_size = 9
theme_override_fonts/normal_font = ExtResource("2_m4bhi")
theme_override_font_sizes/normal_font_size = 300
bbcode_enabled = true
text = "[center][rainbow][type speed=50.0 delay=0.3 factor=20.0]WOAH NICE[/type][/rainbow][/center]"
script = ExtResource("2_yjmn6")
scale_curve = SubResource("Curve_54bet")
[node name="Glint" type="TextureRect" parent="NinePatchRect/InnerWindow/TextContainer/Rumbler/TypewriterLabel"]
clip_children = 1
clip_contents = true
layout_mode = 1
anchors_preset = -1
anchor_left = -1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
texture = SubResource("GradientTexture2D_nrcya")
expand_mode = 1
[node name="AnimatedStar" type="TextureRect" parent="NinePatchRect/InnerWindow/TextContainer/Rumbler"]
texture_filter = 5
layout_mode = 0
offset_left = 1715.0
offset_top = 80.0
offset_right = 1755.0
offset_bottom = 120.0
pivot_offset = Vector2(20, 20)
texture = ExtResource("2_x2leq")
[node name="AudioStreamPlayer" type="AudioStreamPlayer" parent="."]
stream = ExtResource("5_a1v30")
volume_db = -16.0
bus = &"SFX"
[node name="AnimationPlayer" type="AnimationPlayer" parent="."]
libraries = {
"": SubResource("AnimationLibrary_pgwgo")
}
autoplay = "display"

View File

@ -12,6 +12,8 @@ signal typing
@export var scale_curve: Curve
@export var translation_curve: CurveXYZTexture
@export var glyph_size_factor: float = 0.0
# To use this effect:
# - Enable BBCode on a RichTextLabel.
# - Instead of instantiating this effect directly, use a `TypewriterLabel` node.
@ -34,12 +36,12 @@ func _process_custom_fx(char_fx: CharFXTransform) -> bool:
var factor: float = char_fx.env.get("factor", 1.0)
var server := TextServerManager.get_primary_interface()
var glyph_size := server.font_get_glyph_size(char_fx.font, Vector2i.ONE, char_fx.glyph_index)
var glyph_size := server.font_get_glyph_size(
char_fx.font, 0.5 * glyph_size_factor * Vector2i.ONE, char_fx.glyph_index
)
var pivot := glyph_size * Vector2(-1, 1)
var rel_time := (
(speed * (char_fx.elapsed_time - delay) - char_fx.relative_index) / factor
)
var rel_time := (speed * (char_fx.elapsed_time - delay) - char_fx.relative_index) / factor
var scale := Vector2.ONE
if scale_curve:
@ -59,8 +61,7 @@ func _process_custom_fx(char_fx: CharFXTransform) -> bool:
. scaled_local(scale)
. translated_local(pivot)
. translated_local(translation)
)
)
char_fx.visible = rel_time > 0

View File

@ -30,6 +30,7 @@ func _ready() -> void:
effect.scale_curve = scale_curve
effect.translation_curve = translation_curve
effect.typing.connect(_on_typing)
effect.glyph_size_factor = get_theme_font_size("normal_font_size")
install_effect(effect)
if text:
_finished = false

View File

@ -1,6 +1,8 @@
class_name ShotHUD extends Control
## HUD for main gameplay loop
const NICE_ALERT_SCENE := preload("res://src/ui/decorations/nice_alert.tscn")
## Scale factor for the life bar rumble intensity on taking damage
const LIFE_BAR_DAMAGE_RUMBLE_SCALE := 0.2
## Time it takes to dampen the life bar rumble on taking damage, in seconds
@ -19,6 +21,7 @@ var player: WorldPlayer
@onready var _power_animation: AnimationPlayer = %PowerAnimation
@onready var _nice_animation: AnimationPlayer = %NiceAnimation
@onready var _nice_container: Control = %NiceContainer
@onready var _wasted_animation: AnimationPlayer = %WastedAnimation
@onready var _club_selector_animation: AnimationPlayer = %ClubSelectorAnimation
@ -88,7 +91,7 @@ func gauge_flourish() -> void:
func play_nice_animation() -> void:
_nice_animation.play("display")
_nice_container.add_child(NICE_ALERT_SCENE.instantiate())
func play_wasted_animation() -> void:
@ -102,6 +105,7 @@ func show_reset_prompt() -> void:
func hide_reset_prompt() -> void:
_reset_prompt_animation.play_backwards("show")
## Set the value of the life bar, potentially playing some kind of effect in response.
##
## To set the life bar without triggering an effect, set it directly with `life_bar.value`

View File

@ -1,9 +1,8 @@
[gd_scene load_steps=47 format=3 uid="uid://c4ifdiohng830"]
[gd_scene load_steps=41 format=3 uid="uid://c4ifdiohng830"]
[ext_resource type="Script" path="res://src/ui/shot_hud/shot_hud.gd" id="1_x5b4c"]
[ext_resource type="Shader" path="res://src/shaders/canvas_retro.gdshader" id="1_ybxxp"]
[ext_resource type="PackedScene" uid="uid://445qd7m4qe2j" path="res://src/ui/shot_hud/club_selector/club_selector.tscn" id="2_1hdub"]
[ext_resource type="AudioStream" uid="uid://c8bxu5lusqevv" path="res://assets/sound/sfx/ui/ecofuture3.wav" id="2_5f3rs"]
[ext_resource type="Script" path="res://src/ui/decorations/rumbler.gd" id="3_6groq"]
[ext_resource type="Texture2D" uid="uid://b5812y3pmmgg5" path="res://assets/ui/gauge_patch.png" id="4_5kcpe"]
[ext_resource type="Texture2D" uid="uid://76fjx2ukavqe" path="res://assets/ui/power_gauge_fill.png" id="5_3i1yq"]
@ -15,219 +14,6 @@
[ext_resource type="PackedScene" uid="uid://dmciuk3pbjsae" path="res://src/ui/shot_hud/life_bar/life_bar.tscn" id="9_w1fiw"]
[ext_resource type="PackedScene" uid="uid://b47goj32i6sdh" path="res://src/ui/elements/input_prompt/input_prompt.tscn" id="14_ik4gg"]
[sub_resource type="Animation" id="Animation_3xds6"]
resource_name = "RESET"
length = 0.001
tracks/0/type = "value"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath(".:visible")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 1,
"values": [false]
}
tracks/1/type = "value"
tracks/1/imported = false
tracks/1/enabled = true
tracks/1/path = NodePath(".:visible_ratio")
tracks/1/interp = 1
tracks/1/loop_wrap = true
tracks/1/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 0,
"values": [1.0]
}
tracks/2/type = "value"
tracks/2/imported = false
tracks/2/enabled = true
tracks/2/path = NodePath(".:rotation")
tracks/2/interp = 3
tracks/2/loop_wrap = true
tracks/2/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 0,
"values": [7.31612e-10]
}
tracks/3/type = "bezier"
tracks/3/imported = false
tracks/3/enabled = true
tracks/3/path = NodePath(".:anchor_top")
tracks/3/interp = 1
tracks/3/loop_wrap = true
tracks/3/keys = {
"handle_modes": PackedInt32Array(0),
"points": PackedFloat32Array(0.5, -0.25, 0, 0.25, 0),
"times": PackedFloat32Array(0)
}
tracks/4/type = "bezier"
tracks/4/imported = false
tracks/4/enabled = true
tracks/4/path = NodePath(".:anchor_bottom")
tracks/4/interp = 1
tracks/4/loop_wrap = true
tracks/4/keys = {
"handle_modes": PackedInt32Array(0),
"points": PackedFloat32Array(0.5, -0.25, 0, 0.25, 0),
"times": PackedFloat32Array(0)
}
tracks/5/type = "value"
tracks/5/imported = false
tracks/5/enabled = false
tracks/5/path = NodePath("AudioStreamPlayer:playing")
tracks/5/interp = 1
tracks/5/loop_wrap = true
tracks/5/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 1,
"values": [true]
}
tracks/6/type = "value"
tracks/6/imported = false
tracks/6/enabled = true
tracks/6/path = NodePath("Glint:anchor_left")
tracks/6/interp = 1
tracks/6/loop_wrap = true
tracks/6/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 0,
"values": [-1.0]
}
tracks/7/type = "value"
tracks/7/imported = false
tracks/7/enabled = true
tracks/7/path = NodePath("Glint:anchor_right")
tracks/7/interp = 1
tracks/7/loop_wrap = true
tracks/7/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 0,
"values": [0.0]
}
[sub_resource type="Animation" id="Animation_cwotn"]
resource_name = "display"
length = 2.4
step = 0.1
tracks/0/type = "value"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath(".:visible")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/keys = {
"times": PackedFloat32Array(0, 2.4),
"transitions": PackedFloat32Array(1, 1),
"update": 1,
"values": [true, false]
}
tracks/1/type = "value"
tracks/1/imported = false
tracks/1/enabled = true
tracks/1/path = NodePath(".:visible_ratio")
tracks/1/interp = 1
tracks/1/loop_wrap = true
tracks/1/keys = {
"times": PackedFloat32Array(0, 0.2),
"transitions": PackedFloat32Array(1, 1),
"update": 0,
"values": [0.0, 1.0]
}
tracks/2/type = "value"
tracks/2/imported = false
tracks/2/enabled = true
tracks/2/path = NodePath(".:rotation")
tracks/2/interp = 3
tracks/2/loop_wrap = true
tracks/2/keys = {
"times": PackedFloat32Array(0, 2, 2.4),
"transitions": PackedFloat32Array(1, 1, 1),
"update": 0,
"values": [7.31612e-10, 7.31612e-10, 0.174533]
}
tracks/3/type = "bezier"
tracks/3/imported = false
tracks/3/enabled = true
tracks/3/path = NodePath(".:anchor_top")
tracks/3/interp = 1
tracks/3/loop_wrap = true
tracks/3/keys = {
"handle_modes": PackedInt32Array(0, 0, 0),
"points": PackedFloat32Array(0.5, -0.25, 0, 0.5, -0.0548477, 0.5, -0.4, 0.0593877, 0.233401, -0.456136, 1.25, -0.25, 0, 0.25, 0),
"times": PackedFloat32Array(0, 2, 2.4)
}
tracks/4/type = "bezier"
tracks/4/imported = false
tracks/4/enabled = true
tracks/4/path = NodePath(".:anchor_bottom")
tracks/4/interp = 1
tracks/4/loop_wrap = true
tracks/4/keys = {
"handle_modes": PackedInt32Array(0, 0, 0),
"points": PackedFloat32Array(0.5, -0.25, 0, 0.5, -0.055, 0.5, -0.4, 0.059, 0.233, -0.456, 1.25, -0.25, 0, 0.25, 0),
"times": PackedFloat32Array(0, 2, 2.4)
}
tracks/5/type = "value"
tracks/5/imported = false
tracks/5/enabled = true
tracks/5/path = NodePath("AudioStreamPlayer:playing")
tracks/5/interp = 1
tracks/5/loop_wrap = true
tracks/5/keys = {
"times": PackedFloat32Array(0.1),
"transitions": PackedFloat32Array(1),
"update": 1,
"values": [true]
}
tracks/6/type = "value"
tracks/6/imported = false
tracks/6/enabled = true
tracks/6/path = NodePath("Glint:anchor_left")
tracks/6/interp = 1
tracks/6/loop_wrap = true
tracks/6/keys = {
"times": PackedFloat32Array(0.7, 1),
"transitions": PackedFloat32Array(1, 1),
"update": 0,
"values": [-1.0, 1.0]
}
tracks/7/type = "value"
tracks/7/imported = false
tracks/7/enabled = true
tracks/7/path = NodePath("Glint:anchor_right")
tracks/7/interp = 1
tracks/7/loop_wrap = true
tracks/7/keys = {
"times": PackedFloat32Array(0.7, 1),
"transitions": PackedFloat32Array(1, 1),
"update": 0,
"values": [0.0, 2.0]
}
[sub_resource type="AnimationLibrary" id="AnimationLibrary_2a0gn"]
_data = {
"RESET": SubResource("Animation_3xds6"),
"display": SubResource("Animation_cwotn")
}
[sub_resource type="Gradient" id="Gradient_xp0wp"]
offsets = PackedFloat32Array(0, 0.482857, 1)
colors = PackedColorArray(1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 0)
[sub_resource type="GradientTexture2D" id="GradientTexture2D_knygn"]
gradient = SubResource("Gradient_xp0wp")
fill_from = Vector2(0, 0.4)
fill_to = Vector2(1, 0.6)
metadata/_snap_enabled = true
[sub_resource type="Animation" id="Animation_2gt87"]
resource_name = "RESET"
length = 0.001
@ -761,50 +547,14 @@ grow_vertical = 2
mouse_filter = 2
script = ExtResource("1_x5b4c")
[node name="WoahNiceFeedback" type="RichTextLabel" parent="."]
visible = false
clip_children = 2
custom_minimum_size = Vector2(1200, 0)
layout_mode = 1
anchors_preset = -1
anchor_left = 0.5
anchor_top = 0.5
anchor_right = 0.5
anchor_bottom = 0.5
offset_left = -600.0
offset_top = -136.5
offset_right = 600.0
offset_bottom = 136.5
grow_horizontal = 2
grow_vertical = 2
mouse_filter = 2
theme_type_variation = &"ShotFeedback"
bbcode_enabled = true
text = "[center][wave amp=64][rainbow]woah nice[/rainbow][/wave][/center]"
fit_content = true
autowrap_mode = 0
visible_characters_behavior = 1
[node name="NiceAnimation" type="AnimationPlayer" parent="WoahNiceFeedback"]
[node name="NiceContainer" type="Control" parent="."]
unique_name_in_owner = true
libraries = {
"": SubResource("AnimationLibrary_2a0gn")
}
[node name="AudioStreamPlayer" type="AudioStreamPlayer" parent="WoahNiceFeedback"]
stream = ExtResource("2_5f3rs")
volume_db = -16.0
bus = &"SFX"
[node name="Glint" type="TextureRect" parent="WoahNiceFeedback"]
clip_children = 2
layout_mode = 1
anchors_preset = -1
anchor_left = -1.0
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
texture = SubResource("GradientTexture2D_knygn")
[node name="WastedFeedback" type="RichTextLabel" parent="."]
visible = false