diff --git a/src/ui/decorations/nice_alert.tscn b/src/ui/decorations/nice_alert.tscn new file mode 100644 index 0000000..6db54a3 --- /dev/null +++ b/src/ui/decorations/nice_alert.tscn @@ -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" diff --git a/src/ui/decorations/text_effects/typewriter/typewriter_effect.gd b/src/ui/decorations/text_effects/typewriter/typewriter_effect.gd index f266b00..e28a414 100644 --- a/src/ui/decorations/text_effects/typewriter/typewriter_effect.gd +++ b/src/ui/decorations/text_effects/typewriter/typewriter_effect.gd @@ -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 diff --git a/src/ui/decorations/text_effects/typewriter/typewriter_label.gd b/src/ui/decorations/text_effects/typewriter/typewriter_label.gd index ec91f8a..d1f2c82 100644 --- a/src/ui/decorations/text_effects/typewriter/typewriter_label.gd +++ b/src/ui/decorations/text_effects/typewriter/typewriter_label.gd @@ -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 diff --git a/src/ui/shot_hud/shot_hud.gd b/src/ui/shot_hud/shot_hud.gd index 4ecf3f5..498e05a 100644 --- a/src/ui/shot_hud/shot_hud.gd +++ b/src/ui/shot_hud/shot_hud.gd @@ -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` diff --git a/src/ui/shot_hud/shot_hud.tscn b/src/ui/shot_hud/shot_hud.tscn index 41e00d4..9158803 100644 --- a/src/ui/shot_hud/shot_hud.tscn +++ b/src/ui/shot_hud/shot_hud.tscn @@ -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