Alerts Update

Implemented base class Alert.
Implemented Alerts for Cheering Bits, Following, Raid Alert, and
Subscription alerts.
Added Fonts and Video media.
This commit is contained in:
Mario Steele 2026-03-02 02:15:30 -06:00
parent 5f8df9bf7b
commit 73615a9bb4
32 changed files with 1196 additions and 0 deletions

5
UI/Alerts/alert.gd Normal file
View file

@ -0,0 +1,5 @@
extends Control
class_name Alert
func dispose() -> void:
queue_free()

1
UI/Alerts/alert.gd.uid Normal file
View file

@ -0,0 +1 @@
uid://bw0rk6o7xj67e

26
UI/Alerts/cheer_alert.gd Normal file
View file

@ -0,0 +1,26 @@
@tool
extends Alert
class_name CheerAlert
@onready var sub_text: Label = %SubText
@onready var main_text: Label = %MainText
@onready var message_text: Label = %MessageText
@onready var timeline: AnimationPlayer = %Timeline
var _chatter: String = "None"
var _msg: String = ""
var _bits: int = 0
func setup(chatter: String, bits: int, message: String) -> void:
_chatter = chatter
_bits = bits
_msg = message
# Called when the node enters the scene tree for the first time.
func _ready() -> void:
main_text.text = _chatter
sub_text.text = "x%d bits" % _bits
message_text.text = _msg
if Engine.is_editor_hint(): return
timeline.play(&"default")

View file

@ -0,0 +1 @@
uid://crl8eyb3nahln

278
UI/Alerts/cheer_alert.tscn Normal file
View file

@ -0,0 +1,278 @@
[gd_scene format=3 uid="uid://d05mpml5k78u6"]
[ext_resource type="Script" uid="uid://ivx7m2bfysip" path="res://addons/gde_gozen/video_playback.gd" id="1_7rajh"]
[ext_resource type="Script" uid="uid://crl8eyb3nahln" path="res://UI/Alerts/cheer_alert.gd" id="1_eam5w"]
[ext_resource type="FontFile" uid="uid://cx1a4aqqxhsrn" path="res://UI/assets/neon-wave-theme/polentical_neon/Polentical Neon Italic.ttf" id="2_eam5w"]
[ext_resource type="FontFile" uid="uid://c30qqiv6sqheh" path="res://UI/assets/fonts/rage.woff2" id="3_vhkt3"]
[sub_resource type="LabelSettings" id="LabelSettings_t8pat"]
font = ExtResource("3_vhkt3")
font_size = 48
font_color = Color(0, 1, 1, 1)
stacked_shadow_count = 2
stacked_shadow_0/offset = Vector2(2, 2)
stacked_shadow_0/color = Color(0.35822138, 0.0011343455, 0.8658768, 1)
stacked_shadow_0/outline_size = 3
stacked_shadow_1/offset = Vector2(4, 4)
stacked_shadow_1/color = Color(1, 0.5023, 0.43550968, 1)
stacked_shadow_1/outline_size = 5
[sub_resource type="LabelSettings" id="LabelSettings_jsg8g"]
font = ExtResource("2_eam5w")
font_size = 60
font_color = Color(0.99999994, 0.6120906, 0.16155985, 1)
stacked_shadow_count = 4
stacked_shadow_0/offset = Vector2(2, 2)
stacked_shadow_0/color = Color(0.5568628, 0.003921569, 1, 1)
stacked_shadow_0/outline_size = 2
stacked_shadow_1/offset = Vector2(3, 3)
stacked_shadow_1/color = Color(0.9411765, 0.003921569, 1, 1)
stacked_shadow_1/outline_size = 2
stacked_shadow_2/offset = Vector2(4, 4)
stacked_shadow_2/color = Color(0.9843137, 0.25882354, 0.7254902, 1)
stacked_shadow_2/outline_size = 2
stacked_shadow_3/offset = Vector2(5, 5)
stacked_shadow_3/color = Color(0.99215686, 0.46666667, 0.8039216, 1)
stacked_shadow_3/outline_size = 2
[sub_resource type="LabelSettings" id="LabelSettings_vhkt3"]
font_size = 24
[sub_resource type="Animation" id="Animation_jsg8g"]
length = 0.001
tracks/0/type = "value"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath("SubText:modulate")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 0,
"values": [Color(1, 1, 1, 0)]
}
tracks/1/type = "value"
tracks/1/imported = false
tracks/1/enabled = true
tracks/1/path = NodePath("MainText:modulate")
tracks/1/interp = 1
tracks/1/loop_wrap = true
tracks/1/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 0,
"values": [Color(1, 1, 1, 0)]
}
tracks/2/type = "value"
tracks/2/imported = false
tracks/2/enabled = true
tracks/2/path = NodePath("MessageText:modulate")
tracks/2/interp = 1
tracks/2/loop_wrap = true
tracks/2/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 0,
"values": [Color(1, 1, 1, 0)]
}
[sub_resource type="Animation" id="Animation_t8pat"]
resource_name = "default"
length = 10.0
tracks/0/type = "method"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath("Background")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"values": [{
"args": [],
"method": &"play"
}]
}
tracks/1/type = "method"
tracks/1/imported = false
tracks/1/enabled = true
tracks/1/path = NodePath("Icon")
tracks/1/interp = 1
tracks/1/loop_wrap = true
tracks/1/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"values": [{
"args": [],
"method": &"play"
}]
}
tracks/2/type = "value"
tracks/2/imported = false
tracks/2/enabled = true
tracks/2/path = NodePath("SubText:modulate")
tracks/2/interp = 1
tracks/2/loop_wrap = true
tracks/2/keys = {
"times": PackedFloat32Array(0, 3, 4, 9, 10),
"transitions": PackedFloat32Array(1, 1, 1, 1, 1),
"update": 0,
"values": [Color(1, 1, 1, 0), Color(1, 1, 1, 0), Color(1, 1, 1, 1), Color(1, 1, 1, 1), Color(1, 1, 1, 0)]
}
tracks/3/type = "value"
tracks/3/imported = false
tracks/3/enabled = true
tracks/3/path = NodePath("MainText:modulate")
tracks/3/interp = 1
tracks/3/loop_wrap = true
tracks/3/keys = {
"times": PackedFloat32Array(0, 2, 3, 9, 10),
"transitions": PackedFloat32Array(1, 1, 1, 1, 1),
"update": 0,
"values": [Color(1, 1, 1, 0), Color(1, 1, 1, 0), Color(1, 1, 1, 1), Color(1, 1, 1, 1), Color(1, 1, 1, 0)]
}
tracks/4/type = "method"
tracks/4/imported = false
tracks/4/enabled = true
tracks/4/path = NodePath(".")
tracks/4/interp = 1
tracks/4/loop_wrap = true
tracks/4/keys = {
"times": PackedFloat32Array(10),
"transitions": PackedFloat32Array(1),
"values": [{
"args": [],
"method": &"dispose"
}]
}
tracks/5/type = "value"
tracks/5/imported = false
tracks/5/enabled = true
tracks/5/path = NodePath("MessageText:modulate")
tracks/5/interp = 1
tracks/5/loop_wrap = true
tracks/5/keys = {
"times": PackedFloat32Array(0, 4, 5, 9, 10),
"transitions": PackedFloat32Array(1, 1, 1, 1, 1),
"update": 0,
"values": [Color(1, 1, 1, 0), Color(1, 1, 1, 0), Color(1, 1, 1, 1), Color(1, 1, 1, 1), Color(1, 1, 1, 0)]
}
[sub_resource type="AnimationLibrary" id="AnimationLibrary_jsg8g"]
_data = {
&"RESET": SubResource("Animation_jsg8g"),
&"default": SubResource("Animation_t8pat")
}
[node name="CheerAlert" type="Control" unique_id=95763662]
layout_mode = 3
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
script = ExtResource("1_eam5w")
[node name="Background" type="Control" parent="." unique_id=939332259]
unique_name_in_owner = true
custom_minimum_size = Vector2(960, 540)
layout_mode = 1
anchors_preset = 8
anchor_left = 0.5
anchor_top = 0.5
anchor_right = 0.5
anchor_bottom = 0.5
offset_left = -480.0
offset_top = -270.0
offset_right = 480.0
offset_bottom = 270.0
grow_horizontal = 2
grow_vertical = 2
script = ExtResource("1_7rajh")
path = "res://UI/assets/video/Backgrounds/Lightning-Synthwave.webm"
metadata/_custom_type_script = "uid://ivx7m2bfysip"
[node name="Icon" type="Control" parent="." unique_id=823113899]
unique_name_in_owner = true
custom_minimum_size = Vector2(470, 260)
layout_mode = 1
anchors_preset = 8
anchor_left = 0.5
anchor_top = 0.5
anchor_right = 0.5
anchor_bottom = 0.5
offset_left = -195.0
offset_top = -303.0
offset_right = 275.0
offset_bottom = -43.0
grow_horizontal = 2
grow_vertical = 2
script = ExtResource("1_7rajh")
path = "res://UI/assets/video/Backgrounds/Bits-Synthwave.webm"
enable_audio = false
metadata/_custom_type_script = "uid://ivx7m2bfysip"
[node name="SubText" type="Label" parent="." unique_id=1794185310]
unique_name_in_owner = true
modulate = Color(1, 1, 1, 0)
layout_mode = 1
anchors_preset = 8
anchor_left = 0.5
anchor_top = 0.5
anchor_right = 0.5
anchor_bottom = 0.5
offset_left = -183.0
offset_top = -85.0
offset_right = 183.0
offset_bottom = -25.0
grow_horizontal = 2
grow_vertical = 2
text = "x40 Bits"
label_settings = SubResource("LabelSettings_t8pat")
horizontal_alignment = 1
[node name="MainText" type="Label" parent="." unique_id=757351879]
unique_name_in_owner = true
modulate = Color(1, 1, 1, 0)
layout_mode = 1
anchors_preset = 8
anchor_left = 0.5
anchor_top = 0.5
anchor_right = 0.5
anchor_bottom = 0.5
offset_left = -145.0
offset_top = -37.5
offset_right = 145.0
offset_bottom = 37.5
grow_horizontal = 2
grow_vertical = 2
text = "None"
label_settings = SubResource("LabelSettings_jsg8g")
horizontal_alignment = 1
[node name="MessageText" type="Label" parent="." unique_id=79076647]
unique_name_in_owner = true
modulate = Color(1, 1, 1, 0)
custom_minimum_size = Vector2(1000, 200)
layout_mode = 1
anchors_preset = 8
anchor_left = 0.5
anchor_top = 0.5
anchor_right = 0.5
anchor_bottom = 0.5
offset_left = -500.0
offset_top = 55.0
offset_right = 500.0
offset_bottom = 255.0
grow_horizontal = 2
grow_vertical = 2
text = "Born to late to explore Earth, born to early to explore the universe"
label_settings = SubResource("LabelSettings_vhkt3")
horizontal_alignment = 1
autowrap_mode = 2
max_lines_visible = 5
[node name="Timeline" type="AnimationPlayer" parent="." unique_id=1438475424]
unique_name_in_owner = true
libraries/ = SubResource("AnimationLibrary_jsg8g")

16
UI/Alerts/follow_alert.gd Normal file
View file

@ -0,0 +1,16 @@
@tool
extends Alert
class_name FollowAlert
@onready var main_text: Label = %MainText
@onready var timeline: AnimationPlayer = %Timeline
var _chatter: String = "None"
func setup(chatter: String) -> void:
_chatter = chatter
# Called when the node enters the scene tree for the first time.
func _ready() -> void:
main_text.text = _chatter
if Engine.is_editor_hint(): return
timeline.play(&"default")

View file

@ -0,0 +1 @@
uid://cdfp46glq557p

226
UI/Alerts/follow_alert.tscn Normal file
View file

@ -0,0 +1,226 @@
[gd_scene format=3 uid="uid://dr2di6iv0mdkh"]
[ext_resource type="Script" uid="uid://cdfp46glq557p" path="res://UI/Alerts/follow_alert.gd" id="1_44jhq"]
[ext_resource type="Script" uid="uid://ivx7m2bfysip" path="res://addons/gde_gozen/video_playback.gd" id="1_86a2m"]
[ext_resource type="FontFile" uid="uid://cx1a4aqqxhsrn" path="res://UI/assets/neon-wave-theme/polentical_neon/Polentical Neon Italic.ttf" id="3_t8pat"]
[sub_resource type="LabelSettings" id="LabelSettings_t8pat"]
font_size = 48
font_color = Color(0, 1, 1, 1)
stacked_shadow_count = 2
stacked_shadow_0/offset = Vector2(2, 2)
stacked_shadow_0/color = Color(0.35822138, 0.0011343455, 0.8658768, 1)
stacked_shadow_0/outline_size = 3
stacked_shadow_1/offset = Vector2(4, 4)
stacked_shadow_1/color = Color(1, 0.5023, 0.43550968, 1)
stacked_shadow_1/outline_size = 5
[sub_resource type="LabelSettings" id="LabelSettings_jsg8g"]
font = ExtResource("3_t8pat")
font_size = 60
font_color = Color(0.99999994, 0.6120906, 0.16155985, 1)
stacked_shadow_count = 4
stacked_shadow_0/offset = Vector2(2, 2)
stacked_shadow_0/color = Color(0.5568628, 0.003921569, 1, 1)
stacked_shadow_0/outline_size = 2
stacked_shadow_1/offset = Vector2(3, 3)
stacked_shadow_1/color = Color(0.9411765, 0.003921569, 1, 1)
stacked_shadow_1/outline_size = 2
stacked_shadow_2/offset = Vector2(4, 4)
stacked_shadow_2/color = Color(0.9843137, 0.25882354, 0.7254902, 1)
stacked_shadow_2/outline_size = 2
stacked_shadow_3/offset = Vector2(5, 5)
stacked_shadow_3/color = Color(0.99215686, 0.46666667, 0.8039216, 1)
stacked_shadow_3/outline_size = 2
[sub_resource type="Animation" id="Animation_jsg8g"]
length = 0.001
tracks/0/type = "value"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath("SubText:modulate")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 0,
"values": [Color(1, 1, 1, 0)]
}
tracks/1/type = "value"
tracks/1/imported = false
tracks/1/enabled = true
tracks/1/path = NodePath("MainText:modulate")
tracks/1/interp = 1
tracks/1/loop_wrap = true
tracks/1/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 0,
"values": [Color(1, 1, 1, 0)]
}
[sub_resource type="Animation" id="Animation_t8pat"]
resource_name = "default"
length = 10.0
tracks/0/type = "method"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath("Background")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"values": [{
"args": [],
"method": &"play"
}]
}
tracks/1/type = "method"
tracks/1/imported = false
tracks/1/enabled = true
tracks/1/path = NodePath("Icon")
tracks/1/interp = 1
tracks/1/loop_wrap = true
tracks/1/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"values": [{
"args": [],
"method": &"play"
}]
}
tracks/2/type = "value"
tracks/2/imported = false
tracks/2/enabled = true
tracks/2/path = NodePath("SubText:modulate")
tracks/2/interp = 1
tracks/2/loop_wrap = true
tracks/2/keys = {
"times": PackedFloat32Array(0, 5, 6, 9, 10),
"transitions": PackedFloat32Array(1, 1, 1, 1, 1),
"update": 0,
"values": [Color(1, 1, 1, 0), Color(1, 1, 1, 0), Color(1, 1, 1, 1), Color(1, 1, 1, 1), Color(1, 1, 1, 0)]
}
tracks/3/type = "value"
tracks/3/imported = false
tracks/3/enabled = true
tracks/3/path = NodePath("MainText:modulate")
tracks/3/interp = 1
tracks/3/loop_wrap = true
tracks/3/keys = {
"times": PackedFloat32Array(0, 3, 4, 9, 10),
"transitions": PackedFloat32Array(1, 1, 1, 1, 1),
"update": 0,
"values": [Color(1, 1, 1, 0), Color(1, 1, 1, 0), Color(1, 1, 1, 1), Color(1, 1, 1, 1), Color(1, 1, 1, 0)]
}
tracks/4/type = "method"
tracks/4/imported = false
tracks/4/enabled = true
tracks/4/path = NodePath(".")
tracks/4/interp = 1
tracks/4/loop_wrap = true
tracks/4/keys = {
"times": PackedFloat32Array(10),
"transitions": PackedFloat32Array(1),
"values": [{
"args": [],
"method": &"dispose"
}]
}
[sub_resource type="AnimationLibrary" id="AnimationLibrary_jsg8g"]
_data = {
&"RESET": SubResource("Animation_jsg8g"),
&"default": SubResource("Animation_t8pat")
}
[node name="FollowAlert" type="Control" unique_id=95763662]
layout_mode = 3
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
script = ExtResource("1_44jhq")
[node name="Background" type="Control" parent="." unique_id=939332259]
unique_name_in_owner = true
custom_minimum_size = Vector2(960, 540)
layout_mode = 1
anchors_preset = 8
anchor_left = 0.5
anchor_top = 0.5
anchor_right = 0.5
anchor_bottom = 0.5
offset_left = -480.0
offset_top = -270.0
offset_right = 480.0
offset_bottom = 270.0
grow_horizontal = 2
grow_vertical = 2
script = ExtResource("1_86a2m")
path = "res://UI/assets/video/Backgrounds/Stripes-Synthwave.webm"
metadata/_custom_type_script = "uid://ivx7m2bfysip"
[node name="Icon" type="Control" parent="." unique_id=823113899]
unique_name_in_owner = true
custom_minimum_size = Vector2(470, 260)
layout_mode = 1
anchors_preset = 8
anchor_left = 0.5
anchor_top = 0.5
anchor_right = 0.5
anchor_bottom = 0.5
offset_left = -195.0
offset_top = -303.0
offset_right = 275.0
offset_bottom = -43.0
grow_horizontal = 2
grow_vertical = 2
script = ExtResource("1_86a2m")
path = "res://UI/assets/video/Icons/Joystick-Synthwave.webm"
enable_audio = false
metadata/_custom_type_script = "uid://ivx7m2bfysip"
[node name="SubText" type="Label" parent="." unique_id=1794185310]
unique_name_in_owner = true
modulate = Color(1, 1, 1, 0)
layout_mode = 1
anchors_preset = 8
anchor_left = 0.5
anchor_top = 0.5
anchor_right = 0.5
anchor_bottom = 0.5
offset_left = -183.0
offset_top = -85.0
offset_right = 183.0
offset_bottom = -25.0
grow_horizontal = 2
grow_vertical = 2
text = "New Follower"
label_settings = SubResource("LabelSettings_t8pat")
[node name="MainText" type="Label" parent="." unique_id=757351879]
unique_name_in_owner = true
modulate = Color(1, 1, 1, 0)
layout_mode = 1
anchors_preset = 8
anchor_left = 0.5
anchor_top = 0.5
anchor_right = 0.5
anchor_bottom = 0.5
offset_left = -145.0
offset_top = -37.5
offset_right = 145.0
offset_bottom = 37.5
grow_horizontal = 2
grow_vertical = 2
text = "None"
label_settings = SubResource("LabelSettings_jsg8g")
horizontal_alignment = 1
[node name="Timeline" type="AnimationPlayer" parent="." unique_id=1438475424]
unique_name_in_owner = true
libraries/ = SubResource("AnimationLibrary_jsg8g")

22
UI/Alerts/raid_alert.gd Normal file
View file

@ -0,0 +1,22 @@
@tool
extends Alert
class_name RaidAlert
@onready var sub_text: Label = %SubText
@onready var main_text: Label = %MainText
@onready var timeline: AnimationPlayer = %Timeline
var _chatter: String = "None"
var _raiders: int = 0
func setup(chatter: String, raiders: int) -> void:
_chatter = chatter
_raiders = raiders
# Called when the node enters the scene tree for the first time.
func _ready() -> void:
main_text.text = _chatter
sub_text.text = "Raid x%d" % _raiders
if Engine.is_editor_hint(): return
timeline.play(&"default")

View file

@ -0,0 +1 @@
uid://cns0ihwkp2i1c

229
UI/Alerts/raid_alert.tscn Normal file
View file

@ -0,0 +1,229 @@
[gd_scene format=3 uid="uid://b6jis61uxnhf3"]
[ext_resource type="Script" uid="uid://cns0ihwkp2i1c" path="res://UI/Alerts/raid_alert.gd" id="1_ur8rv"]
[ext_resource type="Script" uid="uid://ivx7m2bfysip" path="res://addons/gde_gozen/video_playback.gd" id="1_yqbii"]
[ext_resource type="FontFile" uid="uid://cx1a4aqqxhsrn" path="res://UI/assets/neon-wave-theme/polentical_neon/Polentical Neon Italic.ttf" id="2_ur8rv"]
[ext_resource type="FontFile" uid="uid://c30qqiv6sqheh" path="res://UI/assets/fonts/rage.woff2" id="3_6v7ty"]
[sub_resource type="LabelSettings" id="LabelSettings_t8pat"]
font = ExtResource("3_6v7ty")
font_size = 64
font_color = Color(0.60239375, 0.9999997, 0.3363843, 1)
stacked_shadow_count = 2
stacked_shadow_0/offset = Vector2(2, 2)
stacked_shadow_0/color = Color(0.35822138, 0.0011343455, 0.8658768, 1)
stacked_shadow_0/outline_size = 3
stacked_shadow_1/offset = Vector2(4, 4)
stacked_shadow_1/color = Color(1, 0.5023, 0.43550968, 1)
stacked_shadow_1/outline_size = 5
[sub_resource type="LabelSettings" id="LabelSettings_jsg8g"]
font = ExtResource("2_ur8rv")
font_size = 60
font_color = Color(0.99999994, 0.6120906, 0.16155985, 1)
stacked_shadow_count = 4
stacked_shadow_0/offset = Vector2(2, 2)
stacked_shadow_0/color = Color(0.5568628, 0.003921569, 1, 1)
stacked_shadow_0/outline_size = 2
stacked_shadow_1/offset = Vector2(3, 3)
stacked_shadow_1/color = Color(0.9411765, 0.003921569, 1, 1)
stacked_shadow_1/outline_size = 2
stacked_shadow_2/offset = Vector2(4, 4)
stacked_shadow_2/color = Color(0.9843137, 0.25882354, 0.7254902, 1)
stacked_shadow_2/outline_size = 2
stacked_shadow_3/offset = Vector2(5, 5)
stacked_shadow_3/color = Color(0.99215686, 0.46666667, 0.8039216, 1)
stacked_shadow_3/outline_size = 2
[sub_resource type="Animation" id="Animation_jsg8g"]
length = 0.001
tracks/0/type = "value"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath("SubText:modulate")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 0,
"values": [Color(1, 1, 1, 0)]
}
tracks/1/type = "value"
tracks/1/imported = false
tracks/1/enabled = true
tracks/1/path = NodePath("MainText:modulate")
tracks/1/interp = 1
tracks/1/loop_wrap = true
tracks/1/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 0,
"values": [Color(1, 1, 1, 0)]
}
[sub_resource type="Animation" id="Animation_t8pat"]
resource_name = "default"
length = 10.0
tracks/0/type = "method"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath("Background")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"values": [{
"args": [],
"method": &"play"
}]
}
tracks/1/type = "method"
tracks/1/imported = false
tracks/1/enabled = true
tracks/1/path = NodePath("Icon")
tracks/1/interp = 1
tracks/1/loop_wrap = true
tracks/1/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"values": [{
"args": [],
"method": &"play"
}]
}
tracks/2/type = "value"
tracks/2/imported = false
tracks/2/enabled = true
tracks/2/path = NodePath("SubText:modulate")
tracks/2/interp = 1
tracks/2/loop_wrap = true
tracks/2/keys = {
"times": PackedFloat32Array(0, 5, 6, 9, 10),
"transitions": PackedFloat32Array(1, 1, 1, 1, 1),
"update": 0,
"values": [Color(1, 1, 1, 0), Color(1, 1, 1, 0), Color(1, 1, 1, 1), Color(1, 1, 1, 1), Color(1, 1, 1, 0)]
}
tracks/3/type = "value"
tracks/3/imported = false
tracks/3/enabled = true
tracks/3/path = NodePath("MainText:modulate")
tracks/3/interp = 1
tracks/3/loop_wrap = true
tracks/3/keys = {
"times": PackedFloat32Array(0, 3, 4, 9, 10),
"transitions": PackedFloat32Array(1, 1, 1, 1, 1),
"update": 0,
"values": [Color(1, 1, 1, 0), Color(1, 1, 1, 0), Color(1, 1, 1, 1), Color(1, 1, 1, 1), Color(1, 1, 1, 0)]
}
tracks/4/type = "method"
tracks/4/imported = false
tracks/4/enabled = true
tracks/4/path = NodePath(".")
tracks/4/interp = 1
tracks/4/loop_wrap = true
tracks/4/keys = {
"times": PackedFloat32Array(10),
"transitions": PackedFloat32Array(1),
"values": [{
"args": [],
"method": &"dispose"
}]
}
[sub_resource type="AnimationLibrary" id="AnimationLibrary_jsg8g"]
_data = {
&"RESET": SubResource("Animation_jsg8g"),
&"default": SubResource("Animation_t8pat")
}
[node name="RaidAlert" type="Control" unique_id=95763662]
layout_mode = 3
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
script = ExtResource("1_ur8rv")
[node name="Background" type="Control" parent="." unique_id=939332259]
unique_name_in_owner = true
custom_minimum_size = Vector2(960, 540)
layout_mode = 1
anchors_preset = 8
anchor_left = 0.5
anchor_top = 0.5
anchor_right = 0.5
anchor_bottom = 0.5
offset_left = -480.0
offset_top = -270.0
offset_right = 480.0
offset_bottom = 270.0
grow_horizontal = 2
grow_vertical = 2
script = ExtResource("1_yqbii")
path = "res://UI/assets/video/Backgrounds/Grid-Synthwave.webm"
metadata/_custom_type_script = "uid://ivx7m2bfysip"
[node name="Icon" type="Control" parent="." unique_id=823113899]
unique_name_in_owner = true
custom_minimum_size = Vector2(470, 260)
layout_mode = 1
anchors_preset = 8
anchor_left = 0.5
anchor_top = 0.5
anchor_right = 0.5
anchor_bottom = 0.5
offset_left = -195.0
offset_top = -303.0
offset_right = 275.0
offset_bottom = -43.0
grow_horizontal = 2
grow_vertical = 2
script = ExtResource("1_yqbii")
path = "res://UI/assets/video/Icons/Computer-Synthwave.webm"
enable_audio = false
metadata/_custom_type_script = "uid://ivx7m2bfysip"
[node name="SubText" type="Label" parent="." unique_id=1794185310]
unique_name_in_owner = true
modulate = Color(1, 1, 1, 0)
layout_mode = 1
anchors_preset = 8
anchor_left = 0.5
anchor_top = 0.5
anchor_right = 0.5
anchor_bottom = 0.5
offset_left = -183.0
offset_top = -110.0
offset_right = 183.0
offset_bottom = -18.0
grow_horizontal = 2
grow_vertical = 2
text = "Raid x10"
label_settings = SubResource("LabelSettings_t8pat")
horizontal_alignment = 1
[node name="MainText" type="Label" parent="." unique_id=757351879]
unique_name_in_owner = true
modulate = Color(1, 1, 1, 0)
layout_mode = 1
anchors_preset = 8
anchor_left = 0.5
anchor_top = 0.5
anchor_right = 0.5
anchor_bottom = 0.5
offset_left = -145.0
offset_top = -37.5
offset_right = 145.0
offset_bottom = 37.5
grow_horizontal = 2
grow_vertical = 2
text = "None"
label_settings = SubResource("LabelSettings_jsg8g")
horizontal_alignment = 1
[node name="Timeline" type="AnimationPlayer" parent="." unique_id=1438475424]
unique_name_in_owner = true
libraries/ = SubResource("AnimationLibrary_jsg8g")

View file

@ -0,0 +1,39 @@
@tool
extends Alert
class_name SubscriberAlert
@onready var sub_text: Label = %SubText
@onready var main_text: Label = %MainText
@onready var message_text: Label = %MessageText
@onready var timeline: AnimationPlayer = %Timeline
var _chatter: String = "None"
var _msg: String = ""
var _months: int = 0
var _prime: bool = false
var _tier: int = 1
func setup(chatter: String, months: int, prime: bool, tier: int, message: String) -> void:
_chatter = chatter
_months = months
_msg = message
_prime = prime
_tier = tier
# Called when the node enters the scene tree for the first time.
func _ready() -> void:
main_text.text = _chatter
if _months <= 1:
if _prime:
sub_text.text = "New Prime Sub"
else:
sub_text.text = "New Teir %d Sub" % _tier
else:
if _prime:
sub_text.text = "Prime Resub x%d" % _months
else:
sub_text.text = "Teir %d Resub x%d" % [_tier, _months]
message_text.text = _msg
if Engine.is_editor_hint(): return
timeline.play(&"default")

View file

@ -0,0 +1 @@
uid://c6byqfgqyxfbh

View file

@ -0,0 +1,278 @@
[gd_scene format=3 uid="uid://b3o8lxueafbqq"]
[ext_resource type="Script" uid="uid://ivx7m2bfysip" path="res://addons/gde_gozen/video_playback.gd" id="1_b3tp1"]
[ext_resource type="Script" uid="uid://c6byqfgqyxfbh" path="res://UI/Alerts/subscriber_alert.gd" id="1_f1hvy"]
[ext_resource type="FontFile" uid="uid://cx1a4aqqxhsrn" path="res://UI/assets/neon-wave-theme/polentical_neon/Polentical Neon Italic.ttf" id="2_38hii"]
[ext_resource type="FontFile" uid="uid://o4e6chcu01yx" path="res://UI/assets/fonts/Yellowtail.woff2" id="3_4l3sh"]
[sub_resource type="LabelSettings" id="LabelSettings_t8pat"]
font = ExtResource("3_4l3sh")
font_size = 64
font_color = Color(0, 1, 1, 1)
stacked_shadow_count = 2
stacked_shadow_0/offset = Vector2(2, 2)
stacked_shadow_0/color = Color(0.35822138, 0.0011343455, 0.8658768, 1)
stacked_shadow_0/outline_size = 3
stacked_shadow_1/offset = Vector2(4, 4)
stacked_shadow_1/color = Color(1, 0.5023, 0.43550968, 1)
stacked_shadow_1/outline_size = 5
[sub_resource type="LabelSettings" id="LabelSettings_jsg8g"]
font = ExtResource("2_38hii")
font_size = 60
font_color = Color(0.99999994, 0.6120906, 0.16155985, 1)
stacked_shadow_count = 4
stacked_shadow_0/offset = Vector2(2, 2)
stacked_shadow_0/color = Color(0.5568628, 0.003921569, 1, 1)
stacked_shadow_0/outline_size = 2
stacked_shadow_1/offset = Vector2(3, 3)
stacked_shadow_1/color = Color(0.9411765, 0.003921569, 1, 1)
stacked_shadow_1/outline_size = 2
stacked_shadow_2/offset = Vector2(4, 4)
stacked_shadow_2/color = Color(0.9843137, 0.25882354, 0.7254902, 1)
stacked_shadow_2/outline_size = 2
stacked_shadow_3/offset = Vector2(5, 5)
stacked_shadow_3/color = Color(0.99215686, 0.46666667, 0.8039216, 1)
stacked_shadow_3/outline_size = 2
[sub_resource type="LabelSettings" id="LabelSettings_dx50j"]
font_size = 24
[sub_resource type="Animation" id="Animation_jsg8g"]
length = 0.001
tracks/0/type = "value"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath("SubText:modulate")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 0,
"values": [Color(1, 1, 1, 0)]
}
tracks/1/type = "value"
tracks/1/imported = false
tracks/1/enabled = true
tracks/1/path = NodePath("MainText:modulate")
tracks/1/interp = 1
tracks/1/loop_wrap = true
tracks/1/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 0,
"values": [Color(1, 1, 1, 0)]
}
tracks/2/type = "value"
tracks/2/imported = false
tracks/2/enabled = true
tracks/2/path = NodePath("MessageText:modulate")
tracks/2/interp = 1
tracks/2/loop_wrap = true
tracks/2/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 0,
"values": [Color(1, 1, 1, 0)]
}
[sub_resource type="Animation" id="Animation_t8pat"]
resource_name = "default"
length = 10.0
tracks/0/type = "method"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath("Background")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"values": [{
"args": [],
"method": &"play"
}]
}
tracks/1/type = "method"
tracks/1/imported = false
tracks/1/enabled = true
tracks/1/path = NodePath("Icon")
tracks/1/interp = 1
tracks/1/loop_wrap = true
tracks/1/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"values": [{
"args": [],
"method": &"play"
}]
}
tracks/2/type = "value"
tracks/2/imported = false
tracks/2/enabled = true
tracks/2/path = NodePath("SubText:modulate")
tracks/2/interp = 1
tracks/2/loop_wrap = true
tracks/2/keys = {
"times": PackedFloat32Array(0, 3, 4, 9, 10),
"transitions": PackedFloat32Array(1, 1, 1, 1, 1),
"update": 0,
"values": [Color(1, 1, 1, 0), Color(1, 1, 1, 0), Color(1, 1, 1, 1), Color(1, 1, 1, 1), Color(1, 1, 1, 0)]
}
tracks/3/type = "value"
tracks/3/imported = false
tracks/3/enabled = true
tracks/3/path = NodePath("MainText:modulate")
tracks/3/interp = 1
tracks/3/loop_wrap = true
tracks/3/keys = {
"times": PackedFloat32Array(0, 2, 3, 9, 10),
"transitions": PackedFloat32Array(1, 1, 1, 1, 1),
"update": 0,
"values": [Color(1, 1, 1, 0), Color(1, 1, 1, 0), Color(1, 1, 1, 1), Color(1, 1, 1, 1), Color(1, 1, 1, 0)]
}
tracks/4/type = "method"
tracks/4/imported = false
tracks/4/enabled = true
tracks/4/path = NodePath(".")
tracks/4/interp = 1
tracks/4/loop_wrap = true
tracks/4/keys = {
"times": PackedFloat32Array(10),
"transitions": PackedFloat32Array(1),
"values": [{
"args": [],
"method": &"dispose"
}]
}
tracks/5/type = "value"
tracks/5/imported = false
tracks/5/enabled = true
tracks/5/path = NodePath("MessageText:modulate")
tracks/5/interp = 1
tracks/5/loop_wrap = true
tracks/5/keys = {
"times": PackedFloat32Array(0, 4, 5, 9, 10),
"transitions": PackedFloat32Array(1, 1, 1, 1, 1),
"update": 0,
"values": [Color(1, 1, 1, 0), Color(1, 1, 1, 0), Color(1, 1, 1, 1), Color(1, 1, 1, 1), Color(1, 1, 1, 0)]
}
[sub_resource type="AnimationLibrary" id="AnimationLibrary_f1hvy"]
_data = {
&"RESET": SubResource("Animation_jsg8g"),
&"default": SubResource("Animation_t8pat")
}
[node name="SubscriberAlert" type="Control" unique_id=95763662]
layout_mode = 3
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
script = ExtResource("1_f1hvy")
[node name="Background" type="Control" parent="." unique_id=939332259]
unique_name_in_owner = true
custom_minimum_size = Vector2(960, 540)
layout_mode = 1
anchors_preset = 8
anchor_left = 0.5
anchor_top = 0.5
anchor_right = 0.5
anchor_bottom = 0.5
offset_left = -480.0
offset_top = -270.0
offset_right = 480.0
offset_bottom = 270.0
grow_horizontal = 2
grow_vertical = 2
script = ExtResource("1_b3tp1")
path = "res://UI/assets/video/Backgrounds/Triangle-Synthwave.webm"
metadata/_custom_type_script = "uid://ivx7m2bfysip"
[node name="Icon" type="Control" parent="." unique_id=823113899]
unique_name_in_owner = true
custom_minimum_size = Vector2(470, 260)
layout_mode = 1
anchors_preset = 8
anchor_left = 0.5
anchor_top = 0.5
anchor_right = 0.5
anchor_bottom = 0.5
offset_left = -234.0
offset_top = -303.0
offset_right = 236.0
offset_bottom = -43.0
grow_horizontal = 2
grow_vertical = 2
script = ExtResource("1_b3tp1")
path = "res://UI/assets/video/Icons/Hoverboard-Synthwave.webm"
enable_audio = false
metadata/_custom_type_script = "uid://ivx7m2bfysip"
[node name="SubText" type="Label" parent="." unique_id=1794185310]
unique_name_in_owner = true
modulate = Color(1, 1, 1, 0)
layout_mode = 1
anchors_preset = 8
anchor_left = 0.5
anchor_top = 0.5
anchor_right = 0.5
anchor_bottom = 0.5
offset_left = -183.0
offset_top = -85.0
offset_right = 183.0
offset_bottom = -25.0
grow_horizontal = 2
grow_vertical = 2
text = "New Sub"
label_settings = SubResource("LabelSettings_t8pat")
horizontal_alignment = 1
[node name="MainText" type="Label" parent="." unique_id=757351879]
unique_name_in_owner = true
modulate = Color(1, 1, 1, 0)
layout_mode = 1
anchors_preset = 8
anchor_left = 0.5
anchor_top = 0.5
anchor_right = 0.5
anchor_bottom = 0.5
offset_left = -145.0
offset_top = -37.5
offset_right = 145.0
offset_bottom = 37.5
grow_horizontal = 2
grow_vertical = 2
text = "None"
label_settings = SubResource("LabelSettings_jsg8g")
horizontal_alignment = 1
[node name="MessageText" type="Label" parent="." unique_id=4513558]
unique_name_in_owner = true
modulate = Color(1, 1, 1, 0)
custom_minimum_size = Vector2(1000, 200)
layout_mode = 1
anchors_preset = 8
anchor_left = 0.5
anchor_top = 0.5
anchor_right = 0.5
anchor_bottom = 0.5
offset_left = -500.0
offset_top = 55.0
offset_right = 500.0
offset_bottom = 255.0
grow_horizontal = 2
grow_vertical = 2
text = "Born to late to explore Earth, born to early to explore the universe"
label_settings = SubResource("LabelSettings_dx50j")
horizontal_alignment = 1
autowrap_mode = 2
max_lines_visible = 5
[node name="Timeline" type="AnimationPlayer" parent="." unique_id=512554623]
unique_name_in_owner = true
libraries/ = SubResource("AnimationLibrary_f1hvy")