Compare commits

..

53 Commits

Author SHA1 Message Date
Bucket Of Chicken 8b15c4d2c1 langueage selector 2025-07-05 12:23:51 +02:00
Bucket Of Chicken a439c71e56 last minute fixes 2025-07-05 11:30:02 +02:00
Bucket Of Chicken 2d295b3c82 readme 2025-07-05 11:24:00 +02:00
Bucket Of Chicken 4b96f9aa46 last few translations 2025-07-05 11:07:00 +02:00
Bucket Of Chicken a3306d29bd translations 2025-07-05 08:13:18 +02:00
Bucket Of Chicken 0907d6baea Update playing_now_window.tscn 2025-07-05 07:11:18 +02:00
Bucket Of Chicken 59bac356e8 wip playing windopw changes 2025-07-05 07:11:02 +02:00
Bucket Of Chicken f9edac3965 Update export_presets.cfg 2025-06-30 08:28:45 +02:00
Bucket Of Chicken 0d04eca330 fix spelling mistakes and bump version 2025-06-29 10:56:31 +02:00
Bucket Of Chicken 11b3e7512d fix old hyperlinks 2025-06-29 10:51:49 +02:00
Bucket Of Chicken 3093f6fb6b simplaudio birthday 2025-06-29 10:29:52 +02:00
Bucket Of Chicken dd3d64bdfb bump vesion 2025-05-19 16:13:43 +02:00
Bucket Of Chicken f28d92a498 fixed discord not being disabled when the button is unchecked 2025-05-18 21:09:13 +02:00
Bucket Of Chicken 750d0f844a cough cough 2025-05-17 23:32:04 +02:00
Bucket Of Chicken f7ed6749bf update v1.5.5 2025-05-17 23:14:03 +02:00
notdraimdev 5a5d6f90e6 actually added "important" updates 2024-11-25 20:56:28 +01:00
notdraimdev b4fb35ceeb added "important" updates 2024-11-25 20:56:08 +01:00
notdraimdev cbdb3a4e52 adjusted playing now window + adjustments to the save system 2024-11-25 20:27:27 +01:00
notdraimdev 0c21592f91 whoops 2024-11-19 22:56:19 +01:00
notdraimdev dde309291e bug fixes, and a easter egg 2024-11-05 14:26:55 +01:00
notdraimdev 4a83c33452 fixed hiding in failed screen 2024-11-02 20:33:49 +01:00
notdraimdev accd1fe26f Patchnotes inside simplaudio 2024-11-02 19:23:51 +01:00
notdraimdev 45b758627e Delete improvements 2024-11-02 19:13:52 +01:00
notdraimdev 833bfc3650 Loading failed screen, small fixes 2024-11-02 19:05:54 +01:00
notdraimdev 8557adbed5 Credits + new backrounds 2024-11-02 03:38:28 +01:00
notdraimdev 891bfc7382 "bug" fixes 2024-11-02 02:36:54 +01:00
notdraimdev 424e591064 added easter egg
bug fixes
2024-11-01 23:10:56 +01:00
notdraimdev 810d5c40de jif support 2024-10-27 14:46:18 +01:00
notdraimdev 81c30245c4 s 2024-10-27 14:36:02 +01:00
notdraimdev e8403a2caf ssssss 2024-10-27 14:24:21 +01:00
notdraimdev 7947422027 y 2024-10-27 14:15:02 +01:00
notdraimdev f14a8170d6 dlete songs 2024-10-27 14:14:21 +01:00
Bucket Of Chicken 35810868fb Update issue templates 2024-10-27 13:12:53 +01:00
notdraimdev c418b417ec Better song selection 2024-10-27 12:59:09 +01:00
notdraimdev 99d4b8dfcc THE sigma??? 2024-10-12 00:29:45 +02:00
notdraimdev e77c7da068 jaja 2024-10-10 14:29:37 +02:00
notdraimdev ed376a728b Human error failsave for updating 2024-10-09 21:29:25 +02:00
notdraimdev 5da51b2999 Linux support + more reliable playlist/ song downloader 2024-10-09 20:27:16 +02:00
notdraimdev 3a8ec2e6de Removed elitism 2024-10-08 23:43:00 +02:00
notdraimdev d87a69fc9f asssd 2024-10-08 23:41:54 +02:00
notdraimdev 3747eb6f8c ss 2024-10-08 23:35:56 +02:00
notdraimdev a602821d7b aa 2024-10-08 23:35:52 +02:00
notdraimdev b4b1dcdc4a Linux crash fixes 2024-10-08 23:33:47 +02:00
notdraimdev 03663d8698 guess what 2024-10-04 15:10:47 +02:00
notdraimdev 4b05dd21e3 asanother fix 2024-10-04 15:09:54 +02:00
notdraimdev 9999f23629 fixes 2024-10-04 15:08:51 +02:00
notdraimdev 1503329864 Smooth interactions 2024-10-04 15:04:13 +02:00
notdraimdev dedebf013c Smooth interactions 2024-10-04 15:03:57 +02:00
notdraimdev 9745cceb12 Consistency 2024-10-04 14:15:20 +02:00
notdraimdev 1de3ced558 tuyzcx 2024-10-02 17:44:30 +02:00
notdraimdev aea4b42da6 Quotes 2024-10-02 17:40:56 +02:00
notdraimdev b06f15a2cd aaaaaaaaa 2024-10-02 17:01:10 +02:00
notdraimdev 8e3c158911 yes 2024-10-02 17:01:10 +02:00
118 changed files with 1900 additions and 612 deletions
+31
View File
@@ -0,0 +1,31 @@
---
name: Bug report
about: Create a report to help us improve
title: ''
labels: ''
assignees: ''
---
**Describe the bug**
A clear and concise description of what the bug is.
**To Reproduce**
Steps to reproduce the behavior:
1. Go to '...'
2. Click on '....'
3. Scroll down to '....'
4. See error
**Expected behavior**
A clear and concise description of what you expected to happen.
**Screenshots**
If applicable, add screenshots to help explain your problem.
**Desktop (please complete the following information):**
- OS: [e.g. iOS]
- Version [e.g. 22]
**Additional context**
Add any other context about the problem here.
+1
View File
@@ -0,0 +1 @@
uid://dgwslfj43mu1y
Binary file not shown.

Before

Width:  |  Height:  |  Size: 136 KiB

+1
View File
@@ -0,0 +1 @@
uid://cv5aoaprqfuhx
+1
View File
@@ -0,0 +1 @@
uid://cf1rsngucr7e2
BIN
View File
Binary file not shown.

Before

Width:  |  Height:  |  Size: 769 B

After

Width:  |  Height:  |  Size: 4.8 KiB

BIN
View File
Binary file not shown.
+24
View File
@@ -0,0 +1,24 @@
[remap]
importer="wav"
type="AudioStreamWAV"
uid="uid://n8g3v41u2u48"
path="res://.godot/imported/Error.wav-f6422fca2f257bd634183d1c1c7a43ba.sample"
[deps]
source_file="res://Error.wav"
dest_files=["res://.godot/imported/Error.wav-f6422fca2f257bd634183d1c1c7a43ba.sample"]
[params]
force/8_bit=false
force/mono=false
force/max_rate=false
force/max_rate_hz=44100
edit/trim=false
edit/normalize=false
edit/loop_mode=0
edit/loop_begin=0
edit/loop_end=-1
compress/mode=0
BIN
View File
Binary file not shown.

Before

Width:  |  Height:  |  Size: 766 B

After

Width:  |  Height:  |  Size: 6.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 271 KiB

+34
View File
@@ -0,0 +1,34 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://cmr1ij4s7xa27"
path="res://.godot/imported/IMG_20241015_162213_033(1).jpg-9929b05aea172bc5afc1063f329c9b14.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://IMG_20241015_162213_033(1).jpg"
dest_files=["res://.godot/imported/IMG_20241015_162213_033(1).jpg-9929b05aea172bc5afc1063f329c9b14.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
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=1
Binary file not shown.

After

Width:  |  Height:  |  Size: 782 KiB

+34
View File
@@ -0,0 +1,34 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://2vacx4h6vn46"
path="res://.godot/imported/IMG_20241015_175925_722(1).jpg-b4169e075837dc19cf9c8f3902aa4f18.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://IMG_20241015_175925_722(1).jpg"
dest_files=["res://.godot/imported/IMG_20241015_175925_722(1).jpg-b4169e075837dc19cf9c8f3902aa4f18.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
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=1
BIN
View File
Binary file not shown.

Before

Width:  |  Height:  |  Size: 935 B

After

Width:  |  Height:  |  Size: 6.6 KiB

BIN
View File
Binary file not shown.

Before

Width:  |  Height:  |  Size: 717 B

After

Width:  |  Height:  |  Size: 2.9 KiB

+1
View File
@@ -0,0 +1 @@
uid://b8g2xx06g626m
+413 -158
View File
@@ -1,39 +1,45 @@
[gd_scene load_steps=67 format=3 uid="uid://b2sygl55s6fng"]
[gd_scene load_steps=81 format=3 uid="uid://b2sygl55s6fng"]
[ext_resource type="Script" path="res://main.gd" id="1_ubs1p"]
[ext_resource type="Script" uid="uid://cvqefw0g6ala7" path="res://main.gd" id="1_ubs1p"]
[ext_resource type="Texture2D" uid="uid://b8on1case224h" path="res://LoopPressed.png" id="2_iolk5"]
[ext_resource type="Texture2D" uid="uid://cq8jj63iyu2cs" path="res://d7hftxdivxxvm.cloudfront.webp" id="2_wf35v"]
[ext_resource type="Texture2D" uid="uid://daq8wnhtscpjl" path="res://Skip.png" id="3_4vx67"]
[ext_resource type="Script" path="res://wallpaper_manager.gd" id="4_y372l"]
[ext_resource type="Script" uid="uid://b4mmbu4weiab5" path="res://wallpaper_manager.gd" id="4_y372l"]
[ext_resource type="Texture2D" uid="uid://cmr1ij4s7xa27" path="res://IMG_20241015_162213_033(1).jpg" id="5_8v24s"]
[ext_resource type="Texture2D" uid="uid://38c8dfym0svn" path="res://Loop.png" id="5_c2g63"]
[ext_resource type="Texture2D" uid="uid://cekkhyppj88xi" path="res://Headphones.png" id="6_3mi6c"]
[ext_resource type="Texture2D" uid="uid://snne8iiftksi" path="res://Evening_view_of_Munnar_1633.jpg" id="6_5vm0w"]
[ext_resource type="Texture2D" uid="uid://ba5wdmchyy50n" path="res://nighttime-in-the-hills-henry-porter.jpg" id="6_8abnc"]
[ext_resource type="Texture2D" uid="uid://2vacx4h6vn46" path="res://IMG_20241015_175925_722(1).jpg" id="6_hvupl"]
[ext_resource type="Texture2D" uid="uid://ctb4s2nks73rx" path="res://Play.png" id="8_5v7u3"]
[ext_resource type="Shader" path="res://CoverShader.gdshader" id="8_4531v"]
[ext_resource type="Shader" path="res://Background1.gdshader" id="8_xtnau"]
[ext_resource type="Shader" path="res://Main.gdshader" id="10_20857"]
[ext_resource type="Shader" uid="uid://cv5aoaprqfuhx" path="res://CoverShader.gdshader" id="8_4531v"]
[ext_resource type="Shader" uid="uid://dgwslfj43mu1y" path="res://Background1.gdshader" id="8_xtnau"]
[ext_resource type="Shader" uid="uid://b8g2xx06g626m" path="res://Main.gdshader" id="10_20857"]
[ext_resource type="Texture2D" uid="uid://b00wlqid2jdvi" path="res://BigLogo.png" id="10_xnj6a"]
[ext_resource type="Texture2D" uid="uid://0r1tx6l1lc6x" path="res://settingscog.png" id="11_esjel"]
[ext_resource type="Script" path="res://cover.gd" id="12_3v50a"]
[ext_resource type="Script" path="res://playlists_panel.gd" id="12_8ie8y"]
[ext_resource type="Script" path="res://settings_button.gd" id="12_073mb"]
[ext_resource type="Script" uid="uid://dg68hvw773xu6" path="res://cover.gd" id="12_3v50a"]
[ext_resource type="Script" uid="uid://bxc2fqwlm5ea5" path="res://playlists_panel.gd" id="12_8ie8y"]
[ext_resource type="Script" uid="uid://xnlvpxy2jwxb" path="res://settings_button.gd" id="12_073mb"]
[ext_resource type="Texture2D" uid="uid://myq6n4bshduj" path="res://search.png" id="12_cv2gm"]
[ext_resource type="Script" path="res://search_bar.gd" id="12_mr42x"]
[ext_resource type="Script" path="res://select_playlist.gd" id="12_of5fe"]
[ext_resource type="Script" path="res://search_toggle.gd" id="13_5illk"]
[ext_resource type="Script" uid="uid://cchutywgopaq4" path="res://search_bar.gd" id="12_mr42x"]
[ext_resource type="Script" uid="uid://dv2vjibopktug" path="res://select_playlist.gd" id="12_of5fe"]
[ext_resource type="Script" uid="uid://c2t3ignwqoplj" path="res://search_toggle.gd" id="13_5illk"]
[ext_resource type="PackedScene" uid="uid://dqg674t6kun4e" path="res://Settings.tscn" id="13_7atry"]
[ext_resource type="Script" path="res://create_playlists_menu.gd" id="13_asgvh"]
[ext_resource type="Script" uid="uid://bsnt1irskti8d" path="res://create_playlists_menu.gd" id="13_asgvh"]
[ext_resource type="Texture2D" uid="uid://b5eims5ucn81r" path="res://Loding.png" id="13_de5ej"]
[ext_resource type="Script" path="res://volume_button.gd" id="14_7q3ja"]
[ext_resource type="Script" uid="uid://ctj7miuviibin" path="res://volume_button.gd" id="14_7q3ja"]
[ext_resource type="Texture2D" uid="uid://1rstn6r2wisy" path="res://X.png" id="14_mioc4"]
[ext_resource type="Script" path="res://Spinning.gd" id="14_rhw4k"]
[ext_resource type="Script" path="res://yt_tab_button.gd" id="16_2t15p"]
[ext_resource type="Script" path="res://help_button.gd" id="17_4b8oh"]
[ext_resource type="Script" uid="uid://bx75h6xic1hi7" path="res://Spinning.gd" id="14_rhw4k"]
[ext_resource type="Script" uid="uid://chdf40dyj73pq" path="res://yt_tab_button.gd" id="16_2t15p"]
[ext_resource type="Script" uid="uid://bn0iqqmor3b2b" path="res://help_button.gd" id="17_4b8oh"]
[ext_resource type="Script" uid="uid://dkjp64f01dpf4" path="res://songs_menu.gd" id="27_f8wx0"]
[ext_resource type="PackedScene" uid="uid://bel6i6wdbexw4" path="res://search_results.tscn" id="27_g8wmp"]
[ext_resource type="Texture2D" uid="uid://bmbxyma4ra46p" path="res://Download.png" id="29_v44vi"]
[ext_resource type="Script" path="res://update_checker.gd" id="30_byc5i"]
[ext_resource type="Script" path="res://patch_notes_button.gd" id="31_hjsj1"]
[ext_resource type="Script" path="res://CustomButtonColor.gd" id="32_pwgec"]
[ext_resource type="Script" uid="uid://drqx8pjalsxqr" path="res://update_checker.gd" id="30_byc5i"]
[ext_resource type="Script" uid="uid://cf1rsngucr7e2" path="res://CustomButtonColor.gd" id="32_pwgec"]
[ext_resource type="Script" uid="uid://cbdcs7oie12g5" path="res://loading_failed_screen.gd" id="37_mkkhu"]
[ext_resource type="AudioStream" uid="uid://n8g3v41u2u48" path="res://Error.wav" id="38_nkjlp"]
[ext_resource type="Script" uid="uid://n3koklp0funr" path="res://birthday_container.gd" id="38_pitc3"]
[ext_resource type="AudioStream" uid="uid://bwfw3l3iyv67o" path="res://roblox win sound effect.mp3" id="39_3er0p"]
[ext_resource type="PackedScene" uid="uid://n7cnapaftfse" path="res://playing_now_window.tscn" id="40_ismud"]
[sub_resource type="ShaderMaterial" id="ShaderMaterial_kvkfy"]
shader = ExtResource("8_xtnau")
@@ -92,14 +98,6 @@ keycode = 82
[sub_resource type="Shortcut" id="Shortcut_axi6u"]
events = [SubResource("InputEventKey_0jlka")]
[sub_resource type="InputEventKey" id="InputEventKey_117g0"]
device = -1
ctrl_pressed = true
keycode = 83
[sub_resource type="Shortcut" id="Shortcut_8p5o4"]
events = [SubResource("InputEventKey_117g0")]
[sub_resource type="InputEventKey" id="InputEventKey_5af16"]
device = -1
keycode = 32
@@ -153,12 +151,76 @@ keycode = 81
[sub_resource type="Shortcut" id="Shortcut_g3fcr"]
events = [SubResource("InputEventKey_puhgg")]
[sub_resource type="InputEventKey" id="InputEventKey_117g0"]
device = -1
ctrl_pressed = true
keycode = 83
[sub_resource type="Shortcut" id="Shortcut_8p5o4"]
events = [SubResource("InputEventKey_117g0")]
[sub_resource type="LabelSettings" id="LabelSettings_b1152"]
font_size = 31
[sub_resource type="LabelSettings" id="LabelSettings_ivhc6"]
font_size = 20
[sub_resource type="LabelSettings" id="LabelSettings_spe36"]
font_size = 46
outline_size = 5
outline_color = Color(0.675524, 0.62112, 0, 1)
shadow_size = 2
shadow_color = Color(0.282353, 0.282353, 0.282353, 0.384314)
shadow_offset = Vector2(3, 5)
[sub_resource type="LabelSettings" id="LabelSettings_amome"]
font_size = 18
font_color = Color(0.894922, 0.894922, 0.894922, 1)
outline_size = 2
outline_color = Color(0.519817, 0.439396, 0, 1)
shadow_size = 4
shadow_color = Color(0.290196, 0.290196, 0.290196, 0.270588)
shadow_offset = Vector2(2, 3)
[sub_resource type="LabelSettings" id="LabelSettings_drf2g"]
font_size = 20
outline_size = 2
outline_color = Color(0.519817, 0.439396, 0, 1)
shadow_size = 4
shadow_color = Color(0.290196, 0.290196, 0.290196, 0.270588)
shadow_offset = Vector2(2, 3)
[sub_resource type="Curve" id="Curve_ilc1k"]
_data = [Vector2(0, 0), 0.0, 11.3773, 0, 0, Vector2(0.253275, 1), 0.0, 0.0, 0, 0, Vector2(1, 1), 0.0, 0.0, 0, 0]
point_count = 3
[sub_resource type="Curve" id="Curve_wqjqk"]
_data = [Vector2(0, 0), 0.0, 16.8231, 0, 0, Vector2(0.119342, 1), 0.0, 0.0, 0, 0, Vector2(0.991769, 1), 8.04663e-07, 0.0, 0, 0]
point_count = 3
[sub_resource type="CurveTexture" id="CurveTexture_wg7pm"]
curve = SubResource("Curve_wqjqk")
[sub_resource type="ParticleProcessMaterial" id="ParticleProcessMaterial_cr82i"]
particle_flag_disable_z = true
angle_min = -406.2
angle_max = 219.7
direction = Vector3(0, -1, 0)
initial_velocity_min = 357.05
initial_velocity_max = 586.59
gravity = Vector3(0, 392, 0)
scale_min = 10.0
scale_max = 22.95
scale_curve = SubResource("CurveTexture_wg7pm")
hue_variation_min = -0.77
hue_variation_max = 0.22
[sub_resource type="LabelSettings" id="LabelSettings_f1d3e"]
font_size = 80
shadow_size = 2
shadow_color = Color(0, 0, 0, 0.556863)
shadow_offset = Vector2(6.55, 6.735)
[node name="Node2D" type="Control"]
layout_mode = 3
anchors_preset = 15
@@ -170,6 +232,11 @@ script = ExtResource("1_ubs1p")
LoopPressed = ExtResource("2_iolk5")
LoopNotPressed = ExtResource("5_c2g63")
[node name="OSMediaIntigration" type="Control" parent="."]
anchors_preset = 0
offset_right = 40.0
offset_bottom = 40.0
[node name="WallpaperManager" type="Node2D" parent="." node_paths=PackedStringArray("Daytime", "Evening", "Nighttime")]
script = ExtResource("4_y372l")
Daytime = NodePath("../Daytime")
@@ -183,18 +250,19 @@ anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
texture = ExtResource("2_wf35v")
texture = ExtResource("5_8v24s")
expand_mode = 3
stretch_mode = 6
[node name="Evening" type="TextureRect" parent="."]
visible = false
layout_mode = 1
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
texture = ExtResource("6_5vm0w")
texture = ExtResource("6_hvupl")
expand_mode = 3
stretch_mode = 6
[node name="Nighttime" type="TextureRect" parent="."]
@@ -277,23 +345,32 @@ offset_bottom = 80.0
focus_mode = 0
toggle_mode = true
shortcut = SubResource("Shortcut_vp2fh")
text = "Playlists"
text = "PLAYLIST"
script = ExtResource("12_of5fe")
[node name="PlaylistsPanel" type="Control" parent="."]
visible = false
layout_mode = 2
[node name="PlaylistPanelHolder" type="Control" parent="."]
layout_mode = 1
anchors_preset = 9
anchor_bottom = 1.0
offset_left = -30.0
offset_right = -30.0
offset_bottom = -190.0
grow_horizontal = 2
grow_vertical = 2
metadata/_edit_use_anchors_ = true
[node name="PlaylistsPanel" type="Control" parent="PlaylistPanelHolder"]
anchors_preset = 0
anchor_bottom = 1.0
offset_left = 19.0
offset_top = 88.0
offset_right = 393.0
offset_bottom = -132.0
offset_bottom = 48.0
grow_vertical = 2
script = ExtResource("12_8ie8y")
metadata/_edit_use_anchors_ = true
[node name="ColorRect" type="ColorRect" parent="PlaylistsPanel"]
[node name="ColorRect" type="ColorRect" parent="PlaylistPanelHolder/PlaylistsPanel"]
layout_mode = 1
anchors_preset = 15
anchor_right = 1.0
@@ -302,7 +379,7 @@ grow_horizontal = 2
grow_vertical = 2
color = Color(0.14902, 0.14902, 0.14902, 1)
[node name="PlaylistsContainer" type="ScrollContainer" parent="PlaylistsPanel"]
[node name="PlaylistsContainer" type="ScrollContainer" parent="PlaylistPanelHolder/PlaylistsPanel"]
layout_mode = 1
anchors_preset = -1
anchor_left = 0.0174419
@@ -314,50 +391,48 @@ grow_vertical = 2
follow_focus = true
horizontal_scroll_mode = 0
[node name="VBoxContainer" type="VBoxContainer" parent="PlaylistsPanel/PlaylistsContainer"]
[node name="VBoxContainer" type="VBoxContainer" parent="PlaylistPanelHolder/PlaylistsPanel/PlaylistsContainer"]
custom_minimum_size = Vector2(365.295, 0)
layout_mode = 2
size_flags_horizontal = 6
size_flags_vertical = 0
[node name="Label" type="Label" parent="PlaylistsPanel/PlaylistsContainer/VBoxContainer"]
[node name="Label" type="Label" parent="PlaylistPanelHolder/PlaylistsPanel/PlaylistsContainer/VBoxContainer"]
layout_mode = 2
size_flags_horizontal = 4
size_flags_vertical = 0
text = "PLAYLISTS"
label_settings = SubResource("LabelSettings_0fjy0")
[node name="HBoxContainer" type="HBoxContainer" parent="PlaylistsPanel/PlaylistsContainer/VBoxContainer"]
[node name="HBoxContainer" type="HBoxContainer" parent="PlaylistPanelHolder/PlaylistsPanel/PlaylistsContainer/VBoxContainer"]
layout_mode = 2
size_flags_vertical = 4
size_flags_stretch_ratio = 0.0
alignment = 1
[node name="CreatePlaylist" type="Button" parent="PlaylistsPanel/PlaylistsContainer/VBoxContainer/HBoxContainer"]
[node name="CreatePlaylist" type="Button" parent="PlaylistPanelHolder/PlaylistsPanel/PlaylistsContainer/VBoxContainer/HBoxContainer"]
custom_minimum_size = Vector2(155, 42.335)
layout_mode = 2
focus_mode = 0
text = "Create
Playlist"
text = "PLAYLIST_CREATE"
[node name="Control" type="Control" parent="PlaylistsPanel/PlaylistsContainer/VBoxContainer/HBoxContainer"]
[node name="Control" type="Control" parent="PlaylistPanelHolder/PlaylistsPanel/PlaylistsContainer/VBoxContainer/HBoxContainer"]
custom_minimum_size = Vector2(7.55, 0)
layout_mode = 2
[node name="PlayAll" type="Button" parent="PlaylistsPanel/PlaylistsContainer/VBoxContainer/HBoxContainer"]
[node name="PlayAll" type="Button" parent="PlaylistPanelHolder/PlaylistsPanel/PlaylistsContainer/VBoxContainer/HBoxContainer"]
custom_minimum_size = Vector2(155, 42.335)
layout_mode = 2
focus_mode = 0
toggle_mode = true
text = "Play all"
text = "PLAYALL"
[node name="PlaylistsHolder" type="VBoxContainer" parent="PlaylistsPanel/PlaylistsContainer/VBoxContainer"]
[node name="PlaylistsHolder" type="VBoxContainer" parent="PlaylistPanelHolder/PlaylistsPanel/PlaylistsContainer/VBoxContainer"]
layout_mode = 2
size_flags_vertical = 4
alignment = 1
[node name="YtTabButton" type="Button" parent="."]
texture_filter = 1
layout_mode = 1
anchors_preset = -1
anchor_left = 1.0
@@ -372,6 +447,7 @@ scale = Vector2(0.79, 0.79)
focus_mode = 0
toggle_mode = true
icon = ExtResource("29_v44vi")
expand_icon = true
script = ExtResource("16_2t15p")
[node name="YoutubeMenuHolder" type="Control" parent="."]
@@ -408,7 +484,7 @@ color = Color(0.14902, 0.14902, 0.14902, 1)
layout_mode = 1
offset_right = 229.0
offset_bottom = 47.0
placeholder_text = "Link to download"
placeholder_text = "DOWNLOAD_LINK"
[node name="YTDownload" type="Button" parent="YoutubeMenuHolder/Youtube menu"]
layout_mode = 1
@@ -417,7 +493,7 @@ offset_top = 70.0
offset_right = 88.0
offset_bottom = 110.0
focus_mode = 0
text = "Download"
text = "DOWNLOAD"
[node name="LoadingIMG" type="Sprite2D" parent="YoutubeMenuHolder/Youtube menu"]
position = Vector2(108, 91)
@@ -432,7 +508,7 @@ offset_left = 1.99998
offset_top = 49.0
offset_right = 227.0
offset_bottom = 72.0
text = "NOTE: speeds depend on your internet"
text = "DOWNLOAD_NOTE"
label_settings = SubResource("LabelSettings_fiiw4")
[node name="HelpButton" type="Button" parent="YoutubeMenuHolder/Youtube menu"]
@@ -451,7 +527,7 @@ grow_vertical = 0
focus_mode = 0
text = "?"
script = ExtResource("17_4b8oh")
Open = "https://notdraimdev.github.io/SimplSite/GettingStarted.html"
Open = "https://realbucketofchicken.github.io/SimplSite/GettingStarted.html"
[node name="CreatePlaylistsMenu" type="Control" parent="."]
visible = false
@@ -475,10 +551,14 @@ color = Color(0.14902, 0.14902, 0.14902, 1)
[node name="FileDialog" type="FileDialog" parent="CreatePlaylistsMenu"]
title = "Open a Directory"
initial_position = 2
size = Vector2i(352, 180)
ok_button_text = "Select Current Folder"
cancel_button_text = "CANCEL"
file_mode = 2
access = 2
filters = PackedStringArray("*")
show_hidden_files = true
use_native_dialog = true
[node name="ScrollContainer" type="ScrollContainer" parent="CreatePlaylistsMenu"]
@@ -500,14 +580,14 @@ size_flags_horizontal = 3
[node name="Title" type="Label" parent="CreatePlaylistsMenu/ScrollContainer/VBoxContainer"]
layout_mode = 2
size_flags_horizontal = 4
text = "CREATE PLAYLIST"
text = "PLAYLIST_CREATE"
label_settings = SubResource("LabelSettings_v1ivf")
[node name="PlaylistName" type="LineEdit" parent="CreatePlaylistsMenu/ScrollContainer/VBoxContainer"]
custom_minimum_size = Vector2(325.08, 0)
layout_mode = 2
size_flags_horizontal = 4
placeholder_text = "Playlist name"
placeholder_text = "PLAYLIST_NAME"
[node name="GoodIndicator" type="Label" parent="CreatePlaylistsMenu/ScrollContainer/VBoxContainer"]
layout_mode = 2
@@ -521,12 +601,12 @@ layout_mode = 2
[node name="SelectDirButton" type="Button" parent="CreatePlaylistsMenu/ScrollContainer/VBoxContainer"]
layout_mode = 2
size_flags_horizontal = 4
text = "Select directory"
text = "DIR_SELECT"
[node name="CurrentDirectory" type="Label" parent="CreatePlaylistsMenu/ScrollContainer/VBoxContainer"]
layout_mode = 2
size_flags_horizontal = 4
text = "No directory selected"
text = "DIR_NONE"
[node name="Seperator2" type="Control" parent="CreatePlaylistsMenu/ScrollContainer/VBoxContainer"]
custom_minimum_size = Vector2(0, 14.865)
@@ -538,7 +618,7 @@ layout_mode = 2
size_flags_horizontal = 4
size_flags_vertical = 4
disabled = true
text = "Create Playlist"
text = "PLAYLIST_CREATE"
[node name="CloseButton" type="Button" parent="CreatePlaylistsMenu"]
layout_mode = 1
@@ -551,6 +631,7 @@ grow_horizontal = 0
focus_mode = 0
icon = ExtResource("14_mioc4")
flat = true
expand_icon = true
[node name="RandomizeList" type="Button" parent="."]
layout_mode = 1
@@ -564,38 +645,14 @@ offset_bottom = 80.0
grow_horizontal = 0
focus_mode = 0
shortcut = SubResource("Shortcut_axi6u")
text = "Randomize"
[node name="SettingsButton" type="Button" parent="."]
layout_mode = 1
anchors_preset = 1
anchor_left = 1.0
anchor_right = 1.0
offset_left = -77.0
offset_top = 23.0
offset_right = -5.0
offset_bottom = 95.0
grow_horizontal = 0
scale = Vector2(0.79, 0.79)
focus_mode = 0
shortcut = SubResource("Shortcut_8p5o4")
icon = ExtResource("11_esjel")
script = ExtResource("12_073mb")
[node name="SettingsPopup" type="Popup" parent="."]
position = Vector2i(319, 85)
size = Vector2i(591, 501)
[node name="SettingsMenuChild" parent="SettingsPopup" instance=ExtResource("13_7atry")]
offset_left = -272.0
offset_top = 8.0
offset_bottom = 458.0
text = "RANDOMIZE"
[node name="FileDialog" type="FileDialog" parent="."]
title = "Open a Directory"
position = Vector2i(28, 115)
size = Vector2i(576, 507)
size = Vector2i(833, 507)
ok_button_text = "Select Current Folder"
cancel_button_text = "CANCEL"
file_mode = 2
access = 2
use_native_dialog = true
@@ -618,6 +675,7 @@ scale = Vector2(0.5, 0.5)
focus_mode = 0
shortcut = SubResource("Shortcut_0ov5v")
icon = ExtResource("8_5v7u3")
expand_icon = true
[node name="CurrentProgress" type="HSlider" parent="."]
layout_mode = 1
@@ -635,7 +693,6 @@ max_value = 1000.0
ticks_on_borders = true
[node name="Skip" type="Button" parent="."]
texture_filter = 1
layout_mode = 1
anchors_preset = 3
anchor_left = 1.0
@@ -648,12 +705,14 @@ offset_right = -65.0
offset_bottom = -35.0
grow_horizontal = 0
grow_vertical = 0
rotation = 3.14159
pivot_offset = Vector2(20, 20)
focus_mode = 0
shortcut = SubResource("Shortcut_qw6pv")
icon = ExtResource("3_4vx67")
expand_icon = true
[node name="Loop" type="Button" parent="."]
texture_filter = 1
layout_mode = 1
anchors_preset = 3
anchor_left = 1.0
@@ -669,6 +728,7 @@ grow_vertical = 0
focus_mode = 0
shortcut = SubResource("Shortcut_vot6l")
icon = ExtResource("5_c2g63")
expand_icon = true
[node name="GoBack" type="Button" parent="."]
layout_mode = 1
@@ -677,16 +737,17 @@ anchor_left = 1.0
anchor_top = 1.0
anchor_right = 1.0
anchor_bottom = 1.0
offset_left = -157.0
offset_top = -35.0
offset_right = -117.0
offset_bottom = 5.0
offset_left = -198.535
offset_top = -75.09
offset_right = -158.535
offset_bottom = -35.09
grow_horizontal = 0
grow_vertical = 0
rotation = 3.14159
pivot_offset = Vector2(20, 20)
focus_mode = 0
shortcut = SubResource("Shortcut_xu6hm")
icon = ExtResource("3_4vx67")
expand_icon = true
[node name="SongName" type="Label" parent="."]
layout_mode = 1
@@ -700,7 +761,7 @@ offset_right = -200.0
offset_bottom = -95.0
grow_horizontal = 2
grow_vertical = 0
text = "Please make a Playlist "
text = "(no song)"
label_settings = SubResource("LabelSettings_6prit")
clip_text = true
text_overrun_behavior = 2
@@ -717,7 +778,6 @@ offset_right = -199.0
offset_bottom = -68.0
grow_horizontal = 2
grow_vertical = 0
text = "Artist name"
label_settings = SubResource("LabelSettings_jg5vn")
clip_text = true
text_overrun_behavior = 2
@@ -734,7 +794,6 @@ offset_right = -199.0
offset_bottom = -53.0
grow_horizontal = 2
grow_vertical = 0
text = "Album"
label_settings = SubResource("LabelSettings_6um0v")
clip_text = true
text_overrun_behavior = 2
@@ -744,9 +803,9 @@ layout_mode = 1
anchors_preset = 1
anchor_left = 1.0
anchor_right = 1.0
offset_left = -318.0
offset_left = -320.0
offset_top = 24.0
offset_right = -246.0
offset_right = -248.0
offset_bottom = 96.0
grow_horizontal = 0
scale = Vector2(0.79, 0.79)
@@ -754,6 +813,7 @@ focus_mode = 0
toggle_mode = true
shortcut = SubResource("Shortcut_g3fcr")
icon = ExtResource("12_cv2gm")
expand_icon = true
script = ExtResource("13_5illk")
PressedIcon = ExtResource("14_mioc4")
NotPressedIcon = ExtResource("12_cv2gm")
@@ -769,12 +829,12 @@ offset_right = -328.0
offset_bottom = 80.0
grow_horizontal = 2
focus_mode = 1
placeholder_text = "Search"
placeholder_text = "SONG_SEARCH"
alignment = 1
caret_blink = true
script = ExtResource("12_mr42x")
[node name="SongsMenu" type="MenuButton" parent="."]
[node name="SongsMenu" type="Button" parent="."]
layout_mode = 1
anchors_preset = -1
anchor_right = 1.0
@@ -783,19 +843,23 @@ offset_top = 24.0
offset_right = -328.0
offset_bottom = 80.0
grow_horizontal = 2
text = "Select Songs"
flat = false
focus_mode = 0
text = "SONG_SELECT"
script = ExtResource("27_f8wx0")
[node name="SearchResults" type="PopupMenu" parent="."]
handle_input_locally = false
position = Vector2i(265, 80)
size = Vector2i(623, 300)
wrap_controls = false
max_size = Vector2i(625, 300)
allow_search = false
[node name="SearchResults" parent="." instance=ExtResource("27_g8wmp")]
visible = false
layout_mode = 1
anchors_preset = -1
anchor_left = 0.0
anchor_right = 1.0
anchor_bottom = 1.0
offset_left = 264.5
offset_top = 84.225
offset_right = -264.5
offset_bottom = -263.775
[node name="VolumeButton" type="Button" parent="."]
texture_filter = 1
layout_mode = 1
anchors_preset = 3
anchor_left = 1.0
@@ -811,6 +875,7 @@ grow_vertical = 0
focus_mode = 0
toggle_mode = true
icon = ExtResource("6_3mi6c")
expand_icon = true
script = ExtResource("14_7q3ja")
[node name="VolumeSlider" type="VSlider" parent="."]
@@ -828,6 +893,7 @@ grow_horizontal = 0
grow_vertical = 0
size_flags_horizontal = 1
size_flags_vertical = 8
tooltip_text = "use Up/Down arrow keys to adjust"
focus_mode = 0
value = 100.0
@@ -842,14 +908,6 @@ offset_right = 179.0
offset_bottom = -11.0
grow_vertical = 0
[node name="DiscordMenuHolder" type="Control" parent="."]
layout_mode = 3
anchors_preset = 0
offset_left = 1042.0
offset_top = 174.0
offset_right = 1082.0
offset_bottom = 214.0
[node name="Version" type="Label" parent="."]
layout_mode = 1
anchors_preset = 3
@@ -861,29 +919,87 @@ offset_left = -64.0
offset_top = -23.0
grow_horizontal = 0
grow_vertical = 0
text = "v1.4.2h2"
text = "v1.6h1"
horizontal_alignment = 2
[node name="SettingsButton" type="Button" parent="."]
layout_mode = 1
anchors_preset = 1
anchor_left = 1.0
anchor_right = 1.0
offset_left = -77.0
offset_top = 23.0
offset_right = -5.0
offset_bottom = 95.0
grow_horizontal = 0
scale = Vector2(0.79, 0.79)
focus_mode = 0
toggle_mode = true
shortcut = SubResource("Shortcut_8p5o4")
icon = ExtResource("11_esjel")
expand_icon = true
script = ExtResource("12_073mb")
[node name="SettingsHolder" type="Control" parent="."]
layout_mode = 1
anchors_preset = 8
anchor_left = 0.5
anchor_top = 0.5
anchor_right = 0.5
anchor_bottom = 0.5
offset_top = -294.0
offset_bottom = -294.0
grow_horizontal = 2
grow_vertical = 2
[node name="SettingsPopup" type="Control" parent="SettingsHolder"]
visible = false
layout_mode = 1
anchors_preset = 5
anchor_left = 0.5
anchor_right = 0.5
offset_left = -295.5
offset_right = 295.5
offset_bottom = 501.0
grow_horizontal = 2
[node name="ColorRect" type="ColorRect" parent="SettingsHolder/SettingsPopup"]
layout_mode = 1
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
color = Color(0.14902, 0.14902, 0.14902, 1)
metadata/_edit_use_anchors_ = true
[node name="SettingsMenuChild" parent="SettingsHolder/SettingsPopup" instance=ExtResource("13_7atry")]
layout_mode = 1
offset_left = -280.0
offset_top = 8.0
offset_right = 296.0
offset_bottom = 501.0
[node name="WavDisclaimer" type="AcceptDialog" parent="."]
transparent_bg = true
title = "WAV disclaimer"
title = "!"
initial_position = 4
size = Vector2i(256, 100)
transparent = true
popup_window = true
force_native = true
dialog_text = "wav files are not supported yet"
dialog_text = "WAV_DISCLAIMER"
[node name="PlaylistOrSong" type="ConfirmationDialog" parent="."]
title = "CONFIRM"
initial_position = 2
size = Vector2i(473, 106)
ok_button_text = "Download Playlist"
dialog_text = "Do you want to download the song or the Entire playlist?"
ok_button_text = "DL_LIST"
dialog_text = "DL_DIALOG"
dialog_autowrap = true
cancel_button_text = "Download Song"
cancel_button_text = "DL_SONG"
[node name="UpdateChecker" type="Control" parent="."]
visible = false
layout_mode = 1
anchors_preset = 3
anchor_left = 1.0
@@ -896,6 +1012,8 @@ grow_horizontal = 0
grow_vertical = 0
script = ExtResource("30_byc5i")
errorColor = Color(0.981984, 0, 0.065929, 1)
IMPUpdateLinkColor = Color(0.51, 0.31008, 0.2652, 1)
IMPUpdatePatchNotesColor = Color(0.35, 0.27125, 0.2555, 1)
[node name="HTTPRequest" type="HTTPRequest" parent="UpdateChecker"]
timeout = 5.0
@@ -904,9 +1022,9 @@ timeout = 5.0
[node name="ColorRect" type="ColorRect" parent="UpdateChecker"]
layout_mode = 0
offset_left = -214.0
offset_top = -144.0
offset_right = -24.0
offset_left = -292.0
offset_top = -256.0
offset_right = -10.0
offset_bottom = -44.0
color = Color(0.14902, 0.14902, 0.14902, 1)
@@ -915,30 +1033,29 @@ layout_mode = 1
anchors_preset = 5
anchor_left = 0.5
anchor_right = 0.5
offset_left = -68.0
offset_right = 68.0
offset_left = -136.0
offset_right = 113.0
offset_bottom = 23.0
grow_horizontal = 2
text = "Update Available!"
text = "UPDATE_AVAILABLE"
horizontal_alignment = 1
vertical_alignment = 1
[node name="PatchNotesButton" type="Button" parent="UpdateChecker/ColorRect"]
z_index = 4
[node name="Patchnotes" type="RichTextLabel" parent="UpdateChecker/ColorRect"]
z_index = 2
layout_mode = 1
anchors_preset = 14
anchor_top = 0.5
anchors_preset = -1
anchor_top = 0.150943
anchor_right = 1.0
anchor_bottom = 0.5
offset_top = -24.0
offset_bottom = 12.0
anchor_bottom = 0.820755
grow_horizontal = 2
grow_vertical = 2
text = "View patch notes"
flat = true
script = ExtResource("31_hjsj1")
text = "PatchNotes
(!IT) for important updates"
context_menu_enabled = true
metadata/_edit_use_anchors_ = true
[node name="ColorRect" type="ColorRect" parent="UpdateChecker/ColorRect/PatchNotesButton"]
[node name="PatchnotesBG" type="ColorRect" parent="UpdateChecker/ColorRect/Patchnotes"]
z_index = -1
layout_mode = 1
anchors_preset = 15
@@ -946,9 +1063,7 @@ anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
mouse_filter = 2
color = Color(0.19706, 0.279877, 0.326012, 1)
script = ExtResource("32_pwgec")
color = Color(0.257219, 0.338913, 0.352311, 1)
[node name="LinkButton" type="Button" parent="UpdateChecker/ColorRect"]
z_index = 1
@@ -960,10 +1075,10 @@ anchor_bottom = 1.0
offset_top = -38.0
grow_horizontal = 2
grow_vertical = 0
text = "Update"
text = "UPDATE"
flat = true
[node name="ColorRect" type="ColorRect" parent="UpdateChecker/ColorRect/LinkButton"]
[node name="LinkBTTNBG" type="ColorRect" parent="UpdateChecker/ColorRect/LinkButton"]
z_index = -1
layout_mode = 1
anchors_preset = 15
@@ -976,6 +1091,7 @@ color = Color(0.264012, 0.463229, 0.504783, 1)
script = ExtResource("32_pwgec")
[node name="CloseBuen" type="Button" parent="UpdateChecker/ColorRect"]
texture_filter = 1
layout_mode = 1
anchors_preset = 1
anchor_left = 1.0
@@ -983,10 +1099,11 @@ anchor_right = 1.0
offset_left = -72.0
offset_bottom = 72.0
grow_horizontal = 0
scale = Vector2(0.25, 0.25)
scale = Vector2(0.4, 0.4)
pivot_offset = Vector2(72, 0)
icon = ExtResource("14_mioc4")
flat = true
expand_icon = true
[node name="UpdatingNotification" type="Control" parent="."]
visible = false
@@ -1030,7 +1147,7 @@ offset_left = -20.0
offset_right = 20.0
offset_bottom = 23.0
grow_horizontal = 2
text = "Simplaudio is Updating!"
text = "S_UPDATING"
label_settings = SubResource("LabelSettings_b1152")
horizontal_alignment = 1
vertical_alignment = 1
@@ -1045,10 +1162,7 @@ offset_top = 52.0
offset_right = 142.0
offset_bottom = 153.0
grow_horizontal = 2
text = "Please wait.
Simplaudio will restart automatically
this wont take long"
text = "S_UPT_NOTE"
horizontal_alignment = 1
[node name="LoadingIMG" type="Sprite2D" parent="UpdatingNotification"]
@@ -1074,20 +1188,161 @@ grow_vertical = 2
label_settings = SubResource("LabelSettings_ivhc6")
horizontal_alignment = 1
[node name="deleteConfirm" type="ConfirmationDialog" parent="."]
title = "CONFIRM"
initial_position = 2
size = Vector2i(263, 100)
dialog_text = "DELETE_DIALOG"
cancel_button_text = "CANCEL"
[node name="LoadingFailedScreen" type="Control" parent="."]
visible = false
layout_mode = 1
anchors_preset = 8
anchor_left = 0.5
anchor_top = 0.5
anchor_right = 0.5
anchor_bottom = 0.5
offset_left = -235.0
offset_top = -159.0
offset_right = 235.0
offset_bottom = 159.0
grow_horizontal = 2
grow_vertical = 2
script = ExtResource("37_mkkhu")
[node name="ColorRect" type="ColorRect" parent="LoadingFailedScreen"]
layout_mode = 1
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
color = Color(0.681657, 0.492205, 3.85046e-07, 1)
[node name="VBoxContainer" type="VBoxContainer" parent="LoadingFailedScreen"]
layout_mode = 1
anchors_preset = 5
anchor_left = 0.5
anchor_right = 0.5
offset_left = -187.0
offset_right = 187.0
offset_bottom = 91.0
grow_horizontal = 2
alignment = 1
[node name="LoadingFailedLabel" type="Label" parent="LoadingFailedScreen/VBoxContainer"]
layout_mode = 2
size_flags_horizontal = 4
text = "LOADINGF_NOTE1"
label_settings = SubResource("LabelSettings_spe36")
[node name="Label2" type="Label" parent="LoadingFailedScreen/VBoxContainer"]
layout_mode = 2
text = "LOADINGF_NOTE1"
label_settings = SubResource("LabelSettings_amome")
horizontal_alignment = 1
[node name="Label3" type="Label" parent="LoadingFailedScreen/VBoxContainer"]
layout_mode = 2
text = "LOADINGF_NOTE2"
label_settings = SubResource("LabelSettings_drf2g")
horizontal_alignment = 1
[node name="HBoxContainer" type="HBoxContainer" parent="LoadingFailedScreen/VBoxContainer"]
layout_mode = 2
size_flags_horizontal = 4
alignment = 1
[node name="ContinueAnyways" type="Button" parent="LoadingFailedScreen/VBoxContainer/HBoxContainer"]
layout_mode = 2
text = "LOADINGF_CONTINUE"
[node name="Contact" type="Button" parent="LoadingFailedScreen/VBoxContainer/HBoxContainer"]
layout_mode = 2
text = "LOADINGF_CONTACT"
[node name="ConfirmationDialog" type="ConfirmationDialog" parent="LoadingFailedScreen"]
title = "Are you sure?"
initial_position = 2
size = Vector2i(242, 106)
force_native = true
ok_button_text = "Yes, i will take the risk"
dialog_text = "This is *irreversable*"
cancel_button_text = "No"
[node name="FailedAudioCue" type="AudioStreamPlayer" parent="LoadingFailedScreen"]
stream = ExtResource("38_nkjlp")
[node name="BirthdayContainer" type="Control" parent="."]
layout_mode = 1
anchors_preset = 7
anchor_left = 0.5
anchor_top = 1.0
anchor_right = 0.5
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 0
script = ExtResource("38_pitc3")
opacitycurve = SubResource("Curve_ilc1k")
[node name="BirthdayParticles" type="GPUParticles2D" parent="BirthdayContainer"]
emitting = false
amount = 120
lifetime = 5.0
one_shot = true
explosiveness = 0.9
visibility_rect = Rect2(-750, -750, 1500, 1000)
process_material = SubResource("ParticleProcessMaterial_cr82i")
[node name="AudioStreamPlayer" type="AudioStreamPlayer" parent="BirthdayContainer"]
stream = ExtResource("39_3er0p")
volume_db = -10.0
bus = &"Music"
[node name="BirthdayHappy" type="Label" parent="."]
visible = false
layout_mode = 1
anchors_preset = 8
anchor_left = 0.5
anchor_top = 0.5
anchor_right = 0.5
anchor_bottom = 0.5
offset_left = -62.5
offset_top = -11.5
offset_right = 62.5
offset_bottom = 11.5
grow_horizontal = 2
grow_vertical = 2
text = "BDAY"
label_settings = SubResource("LabelSettings_f1d3e")
[node name="PlayingNow" type="Window" parent="."]
transparent_bg = true
initial_position = 4
size = Vector2i(400, 200)
visible = false
unresizable = true
borderless = true
transparent = true
force_native = true
[node name="PlayingNowWindow" parent="PlayingNow" node_paths=PackedStringArray("ParentScene") instance=ExtResource("40_ismud")]
ParentScene = NodePath("../..")
[connection signal="toggled" from="SelectPlaylist" to="SelectPlaylist" method="_on_toggled"]
[connection signal="pressed" from="PlaylistsPanel/PlaylistsContainer/VBoxContainer/HBoxContainer/CreatePlaylist" to="PlaylistsPanel" method="_on_create_playlist_pressed"]
[connection signal="toggled" from="PlaylistsPanel/PlaylistsContainer/VBoxContainer/HBoxContainer/PlayAll" to="PlaylistsPanel" method="_on_play_all_toggled"]
[connection signal="pressed" from="PlaylistPanelHolder/PlaylistsPanel/PlaylistsContainer/VBoxContainer/HBoxContainer/CreatePlaylist" to="PlaylistPanelHolder/PlaylistsPanel" method="_on_create_playlist_pressed"]
[connection signal="toggled" from="PlaylistPanelHolder/PlaylistsPanel/PlaylistsContainer/VBoxContainer/HBoxContainer/PlayAll" to="PlaylistPanelHolder/PlaylistsPanel" method="_on_play_all_toggled"]
[connection signal="toggled" from="YtTabButton" to="YtTabButton" method="_on_toggled"]
[connection signal="dir_selected" from="CreatePlaylistsMenu/FileDialog" to="CreatePlaylistsMenu" method="_on_file_dialog_dir_selected"]
[connection signal="text_changed" from="CreatePlaylistsMenu/ScrollContainer/VBoxContainer/PlaylistName" to="CreatePlaylistsMenu" method="_on_playlist_name_text_changed"]
[connection signal="pressed" from="CreatePlaylistsMenu/ScrollContainer/VBoxContainer/SelectDirButton" to="CreatePlaylistsMenu" method="_on_select_dir_button_pressed"]
[connection signal="pressed" from="CreatePlaylistsMenu/ScrollContainer/VBoxContainer/CreatePlaylistButton" to="CreatePlaylistsMenu" method="_on_create_playlist_button_pressed"]
[connection signal="pressed" from="CreatePlaylistsMenu/CloseButton" to="CreatePlaylistsMenu" method="_on_close_button_pressed"]
[connection signal="pressed" from="SettingsButton" to="SettingsButton" method="_on_pressed"]
[connection signal="toggled" from="SearchToggle" to="SearchToggle" method="_on_toggled"]
[connection signal="text_submitted" from="SearchBar" to="SearchBar" method="_on_text_submitted"]
[connection signal="index_pressed" from="SearchResults" to="SearchBar" method="_on_search_results_index_pressed"]
[connection signal="toggled" from="VolumeButton" to="VolumeButton" method="_on_toggled"]
[connection signal="toggled" from="SettingsButton" to="SettingsButton" method="_on_toggled"]
[connection signal="request_completed" from="UpdateChecker/HTTPRequest" to="UpdateChecker" method="_on_http_request_completed"]
[connection signal="request_completed" from="UpdateChecker/DownloadRequest" to="UpdateChecker" method="_on_download_request_completed"]
[connection signal="pressed" from="UpdateChecker/ColorRect/LinkButton" to="UpdateChecker" method="_on_link_button_pressed"]
@@ -0,0 +1 @@
uid://rnxfmtoo2yn4
@@ -0,0 +1 @@
uid://cdigfnlqg2r8l
@@ -0,0 +1 @@
uid://bs5vnv3baji7f
BIN
View File
Binary file not shown.

Before

Width:  |  Height:  |  Size: 728 B

After

Width:  |  Height:  |  Size: 4.3 KiB

BIN
View File
Binary file not shown.

Before

Width:  |  Height:  |  Size: 859 B

After

Width:  |  Height:  |  Size: 7.8 KiB

+1 -1
View File
@@ -1,6 +1,6 @@
[gd_scene load_steps=4 format=3 uid="uid://c33qaelwn46f4"]
[ext_resource type="Script" path="res://playlist_display.gd" id="1_h0jh1"]
[ext_resource type="Script" uid="uid://cs12qambyvou8" path="res://playlist_display.gd" id="1_h0jh1"]
[ext_resource type="Texture2D" uid="uid://dwvy6crqhardn" path="res://Dropdown.png" id="2_im6ur"]
[sub_resource type="LabelSettings" id="LabelSettings_ky8oc"]
+112 -21
View File
@@ -1,9 +1,10 @@
[gd_scene load_steps=9 format=3 uid="uid://dqg674t6kun4e"]
[gd_scene load_steps=11 format=3 uid="uid://dqg674t6kun4e"]
[ext_resource type="Script" path="res://settings.gd" id="1_uaa7d"]
[ext_resource type="Script" path="res://eq_settings.gd" id="2_1n4m6"]
[ext_resource type="Script" uid="uid://vnpslgl788du" path="res://settings.gd" id="1_uaa7d"]
[ext_resource type="Script" uid="uid://kt7n1epi3ng8" path="res://eq_settings.gd" id="2_1n4m6"]
[ext_resource type="Texture2D" uid="uid://1rstn6r2wisy" path="res://X.png" id="2_iuivb"]
[ext_resource type="Texture2D" uid="uid://pgij783wgbhn" path="res://File.png" id="2_jmen4"]
[ext_resource type="Script" uid="uid://cej7efsj2cyen" path="res://language_button.gd" id="2_sfvul"]
[sub_resource type="LabelSettings" id="LabelSettings_ouq8m"]
font_size = 30
@@ -17,6 +18,9 @@ font_size = 11
[sub_resource type="LabelSettings" id="LabelSettings_cwn10"]
font_size = 15
[sub_resource type="LabelSettings" id="LabelSettings_i51gs"]
font_size = 50
[node name="SettingsMenuChild" type="Control"]
custom_minimum_size = Vector2(576, 493)
layout_mode = 3
@@ -64,7 +68,7 @@ custom_minimum_size = Vector2(400, 26.975)
layout_mode = 2
size_flags_horizontal = 4
size_flags_vertical = 3
text = "THIRD PARTY APPS"
text = "INTIGRATIONS"
label_settings = SubResource("LabelSettings_2bhor")
horizontal_alignment = 1
vertical_alignment = 1
@@ -74,13 +78,13 @@ autowrap_mode = 2
layout_mode = 2
size_flags_horizontal = 0
focus_mode = 0
text = "Discord Rich Presence"
text = "DRPC"
[node name="disclaimer" type="Label" parent="ScrollContainer/VBoxContainer"]
custom_minimum_size = Vector2(229.895, 0)
layout_mode = 2
size_flags_horizontal = 0
text = "NOTE: After disableing a restart is needed"
text = "DRPC_NOTE"
label_settings = SubResource("LabelSettings_p55k3")
horizontal_alignment = 1
vertical_alignment = 1
@@ -94,13 +98,32 @@ layout_mode = 2
custom_minimum_size = Vector2(400, 26.975)
layout_mode = 2
size_flags_vertical = 3
text = "LOOKs"
text = "LOOKS"
label_settings = SubResource("LabelSettings_2bhor")
horizontal_alignment = 1
vertical_alignment = 1
autowrap_mode = 2
uppercase = true
[node name="Seperator8" type="Control" parent="ScrollContainer/VBoxContainer"]
custom_minimum_size = Vector2(0, 16.07)
layout_mode = 2
[node name="HBoxContainer" type="HBoxContainer" parent="ScrollContainer/VBoxContainer"]
layout_mode = 2
[node name="Label" type="Label" parent="ScrollContainer/VBoxContainer/HBoxContainer"]
layout_mode = 2
text = "LANGUAGE"
[node name="LanguageButton" type="MenuButton" parent="ScrollContainer/VBoxContainer/HBoxContainer" node_paths=PackedStringArray("settings")]
custom_minimum_size = Vector2(50, 0)
layout_mode = 2
text = "SELECT"
flat = false
script = ExtResource("2_sfvul")
settings = NodePath("../../../..")
[node name="Seperator3" type="Control" parent="ScrollContainer/VBoxContainer"]
custom_minimum_size = Vector2(0, 16.07)
layout_mode = 2
@@ -133,13 +156,13 @@ size_flags_horizontal = 0
custom_minimum_size = Vector2(0, 25.35)
layout_mode = 2
size_flags_horizontal = 4
text = "Select Background"
text = "BS_SELECT"
[node name="ResetBG" type="Button" parent="ScrollContainer/VBoxContainer/VBoxContainer/HBoxContainer"]
custom_minimum_size = Vector2(0, 25.35)
layout_mode = 2
size_flags_horizontal = 4
text = "Reset BG"
text = "RESET_BG"
[node name="SelectBGDialog" type="FileDialog" parent="ScrollContainer/VBoxContainer"]
title = "Open a File"
@@ -148,7 +171,7 @@ transient = false
ok_button_text = "Open"
file_mode = 0
access = 2
filters = PackedStringArray("*.png", "*.jpg", "*.jpeg", "*")
filters = PackedStringArray("*.png", "*.jpg ", "*.jpeg", "*.gif", "*")
show_hidden_files = true
use_native_dialog = true
@@ -160,7 +183,7 @@ layout_mode = 2
custom_minimum_size = Vector2(400, 26.975)
layout_mode = 2
size_flags_vertical = 3
text = "SOUND SETTINGS"
text = "SETTINGS_SOUND"
label_settings = SubResource("LabelSettings_2bhor")
horizontal_alignment = 1
vertical_alignment = 1
@@ -204,11 +227,11 @@ vertical_alignment = 1
autowrap_mode = 2
[node name="FUN" type="Label" parent="ScrollContainer/VBoxContainer/PitchAdjustSettings/PitchAdjustSettings"]
custom_minimum_size = Vector2(94.52, 7.51)
custom_minimum_size = Vector2(100.49, 7.51)
layout_mode = 2
size_flags_horizontal = 4
size_flags_vertical = 6
text = "pitch/speed"
text = "PITCH_SPEED"
horizontal_alignment = 1
vertical_alignment = 1
autowrap_mode = 2
@@ -217,7 +240,7 @@ autowrap_mode = 2
layout_mode = 2
size_flags_horizontal = 0
focus_mode = 0
text = "Reverb"
text = "REVERB"
[node name="ReverbSettings" type="VBoxContainer" parent="ScrollContainer/VBoxContainer"]
visible = false
@@ -260,7 +283,7 @@ custom_minimum_size = Vector2(94.52, 7.51)
layout_mode = 2
size_flags_horizontal = 4
size_flags_vertical = 6
text = "Room size"
text = "ROOM_SIZE"
horizontal_alignment = 1
vertical_alignment = 1
autowrap_mode = 2
@@ -344,7 +367,7 @@ custom_minimum_size = Vector2(94.52, 7.51)
layout_mode = 2
size_flags_horizontal = 4
size_flags_vertical = 6
text = "Spread"
text = "SPREAD"
horizontal_alignment = 1
vertical_alignment = 1
autowrap_mode = 2
@@ -364,7 +387,7 @@ script = ExtResource("2_1n4m6")
layout_mode = 2
size_flags_horizontal = 0
focus_mode = 0
text = "Compression"
text = "COMPRESSION"
[node name="CompressionContainer" type="VBoxContainer" parent="ScrollContainer/VBoxContainer"]
visible = false
@@ -408,7 +431,7 @@ custom_minimum_size = Vector2(94.52, 7.51)
layout_mode = 2
size_flags_horizontal = 4
size_flags_vertical = 6
text = "Threshold"
text = "THRESHOLD"
horizontal_alignment = 1
vertical_alignment = 1
autowrap_mode = 2
@@ -503,6 +526,72 @@ autowrap_mode = 2
custom_minimum_size = Vector2(0, 16.07)
layout_mode = 2
[node name="MISC" type="Label" parent="ScrollContainer/VBoxContainer"]
custom_minimum_size = Vector2(400, 26.975)
layout_mode = 2
size_flags_horizontal = 4
size_flags_vertical = 3
text = "MISC"
label_settings = SubResource("LabelSettings_2bhor")
horizontal_alignment = 1
vertical_alignment = 1
autowrap_mode = 2
[node name="NowPlayingWindowButton" type="CheckBox" parent="ScrollContainer/VBoxContainer"]
layout_mode = 2
focus_mode = 0
text = "STREAMER_WINDOW"
[node name="NowPlayingInfo" type="Label" parent="ScrollContainer/VBoxContainer"]
custom_minimum_size = Vector2(229.895, 0)
layout_mode = 2
size_flags_horizontal = 0
text = "STREAMER_NOTE"
label_settings = SubResource("LabelSettings_p55k3")
vertical_alignment = 1
autowrap_mode = 2
[node name="Credits" type="VBoxContainer" parent="ScrollContainer/VBoxContainer"]
layout_mode = 2
[node name="Label" type="Label" parent="ScrollContainer/VBoxContainer/Credits"]
layout_mode = 2
size_flags_horizontal = 4
text = "CREDITS"
label_settings = SubResource("LabelSettings_i51gs")
[node name="Label5" type="LinkButton" parent="ScrollContainer/VBoxContainer/Credits"]
layout_mode = 2
size_flags_horizontal = 4
text = "Godot"
underline = 1
uri = "https://godotengine.org"
[node name="Label2" type="LinkButton" parent="ScrollContainer/VBoxContainer/Credits"]
layout_mode = 2
size_flags_horizontal = 4
text = "YT_DL"
underline = 1
uri = "https://github.com/Nolkaloid/godot-yt-dlp"
[node name="Label3" type="LinkButton" parent="ScrollContainer/VBoxContainer/Credits"]
layout_mode = 2
size_flags_horizontal = 4
text = "DRPCL"
underline = 1
uri = "https://github.com/vaporvee/discord-rpc-godot"
[node name="Label4" type="LinkButton" parent="ScrollContainer/VBoxContainer/Credits"]
layout_mode = 2
size_flags_horizontal = 4
text = "GDGIF"
underline = 1
uri = "https://github.com/BOTLANNER/godot-gif"
[node name="Seperator7" type="Control" parent="ScrollContainer/VBoxContainer"]
custom_minimum_size = Vector2(0, 16.07)
layout_mode = 2
[node name="TimeListening" type="Label" parent="ScrollContainer/VBoxContainer"]
layout_mode = 2
size_flags_horizontal = 4
@@ -513,21 +602,22 @@ layout_mode = 2
size_flags_horizontal = 4
size_flags_vertical = 4
focus_mode = 0
text = "RESET SETTINGS"
text = "RESET_SETTINGS"
[node name="Exit" type="Button" parent="."]
layout_mode = 1
anchors_preset = 1
anchor_left = 1.0
anchor_right = 1.0
offset_left = -72.0
offset_bottom = 72.0
offset_left = -40.0
offset_bottom = 40.0
grow_horizontal = 0
size_flags_horizontal = 8
size_flags_vertical = 0
focus_mode = 0
icon = ExtResource("2_iuivb")
flat = true
expand_icon = true
[connection signal="toggled" from="ScrollContainer/VBoxContainer/DiscordRichPresenceButton" to="." method="_on_discord_rich_presence_button_toggled"]
[connection signal="pressed" from="ScrollContainer/VBoxContainer/VBoxContainer/HBoxContainer/SelectBG" to="." method="_on_select_bg_pressed"]
@@ -543,6 +633,7 @@ flat = true
[connection signal="drag_ended" from="ScrollContainer/VBoxContainer/CompressionContainer/ThresholdSettings/ThresholdSlider" to="." method="_on_threshold_slider_drag_ended"]
[connection signal="drag_ended" from="ScrollContainer/VBoxContainer/CompressionContainer/RatioSettings/RatioSlider" to="." method="_on_ratio_slider_drag_ended"]
[connection signal="drag_ended" from="ScrollContainer/VBoxContainer/CompressionContainer/GainSettings/GainSlider" to="." method="_on_gain_slider_drag_ended"]
[connection signal="toggled" from="ScrollContainer/VBoxContainer/NowPlayingWindowButton" to="." method="_on_now_playing_window_button_toggled"]
[connection signal="pressed" from="ScrollContainer/VBoxContainer/Reset" to="." method="_on_reset_pressed"]
[connection signal="pressed" from="ScrollContainer/VBoxContainer/Reset" to="ScrollContainer/VBoxContainer/EQSettings" method="_on_reset_pressed"]
[connection signal="pressed" from="Exit" to="." method="_on_exit_pressed"]
BIN
View File
Binary file not shown.

Before

Width:  |  Height:  |  Size: 849 B

After

Width:  |  Height:  |  Size: 8.0 KiB

+1
View File
@@ -0,0 +1 @@
uid://bx75h6xic1hi7
BIN
View File
Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.2 KiB

After

Width:  |  Height:  |  Size: 7.7 KiB

BIN
View File
Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

@@ -2,16 +2,16 @@
importer="texture"
type="CompressedTexture2D"
uid="uid://drj8iwoxqu7kk"
path="res://.godot/imported/Cat_August_2010-4.jpg-ee22e0b2d7c21625ade8bb157ecd9ac0.ctex"
uid="uid://cm5ps3a716wr0"
path="res://.godot/imported/XSmall.png-2fa29ed3d6c0476862944f7e0885c6ed.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://Cat_August_2010-4.jpg"
dest_files=["res://.godot/imported/Cat_August_2010-4.jpg-ee22e0b2d7c21625ade8bb157ecd9ac0.ctex"]
source_file="res://XSmall.png"
dest_files=["res://.godot/imported/XSmall.png-2fa29ed3d6c0476862944f7e0885c6ed.ctex"]
[params]
@@ -0,0 +1 @@
uid://0jnn2i3r56m3
+1
View File
@@ -0,0 +1 @@
uid://cu21wq8hdk6mq
+2 -2
View File
@@ -112,8 +112,8 @@ tracks/0/keys = {
[sub_resource type="AnimationLibrary" id="AnimationLibrary_a7ofc"]
_data = {
"RESET": SubResource("Animation_mmtmn"),
"pulsate": SubResource("Animation_5u02v")
&"RESET": SubResource("Animation_mmtmn"),
&"pulsate": SubResource("Animation_5u02v")
}
[node name="DebugNodeGroup" type="Node"]
+1
View File
@@ -0,0 +1 @@
uid://bupnp7dee8k3a
@@ -0,0 +1 @@
uid://bb81mf7sks0g4
+1
View File
@@ -0,0 +1 @@
uid://ec3hjq1x03oq
+2 -4
View File
@@ -9,8 +9,7 @@ Button/styles/focus = SubResource("StyleBoxEmpty_1t7mm")
[sub_resource type="StyleBoxEmpty" id="StyleBoxEmpty_5vqdt"]
[sub_resource type="Image" id="Image_j0vw3"]
[sub_resource type="Image" id="Image_4rf8i"]
data = {
"data": PackedByteArray(255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 227, 227, 227, 36, 224, 224, 224, 168, 224, 224, 224, 233, 224, 224, 224, 236, 224, 224, 224, 170, 231, 231, 231, 31, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 227, 227, 227, 36, 224, 224, 224, 234, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 239, 230, 230, 230, 30, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 168, 224, 224, 224, 255, 224, 224, 224, 186, 224, 224, 224, 32, 224, 224, 224, 33, 224, 224, 224, 187, 224, 224, 224, 255, 225, 225, 225, 167, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 237, 224, 224, 224, 255, 224, 224, 224, 33, 255, 255, 255, 0, 255, 255, 255, 0, 227, 227, 227, 36, 224, 224, 224, 255, 224, 224, 224, 234, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 237, 224, 224, 224, 255, 224, 224, 224, 33, 255, 255, 255, 0, 255, 255, 255, 0, 229, 229, 229, 38, 224, 224, 224, 255, 224, 224, 224, 229, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 164, 224, 224, 224, 255, 224, 224, 224, 187, 225, 225, 225, 34, 227, 227, 227, 36, 224, 224, 224, 192, 224, 224, 224, 255, 224, 224, 224, 162, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 24, 225, 225, 225, 215, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 229, 224, 224, 224, 32, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 24, 224, 224, 224, 216, 224, 224, 224, 255, 224, 224, 224, 210, 224, 224, 224, 161, 224, 224, 224, 232, 224, 224, 224, 231, 225, 225, 225, 159, 230, 230, 230, 30, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 107, 224, 224, 224, 255, 224, 224, 224, 210, 230, 230, 230, 20, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 105, 230, 230, 230, 20, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 221, 224, 224, 224, 130, 255, 255, 255, 1, 255, 255, 255, 1, 225, 225, 225, 134, 224, 224, 224, 224, 225, 225, 225, 223, 224, 224, 224, 132, 255, 255, 255, 1, 255, 255, 255, 6, 224, 224, 224, 137, 224, 224, 224, 231, 224, 224, 224, 255, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 130, 225, 225, 225, 133, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 129, 224, 224, 224, 137, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 65, 224, 224, 224, 255, 224, 224, 224, 220, 225, 225, 225, 223, 224, 224, 224, 255, 226, 226, 226, 61, 224, 224, 224, 65, 224, 224, 224, 255, 224, 224, 224, 222, 224, 224, 224, 231, 224, 224, 224, 255, 227, 227, 227, 62, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 225, 225, 225, 67, 224, 224, 224, 255, 224, 224, 224, 219, 224, 224, 224, 222, 224, 224, 224, 255, 227, 227, 227, 63, 225, 225, 225, 67, 224, 224, 224, 255, 224, 224, 224, 219, 224, 224, 224, 230, 224, 224, 224, 255, 227, 227, 227, 63, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 225, 225, 225, 127, 224, 224, 224, 129, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 225, 225, 225, 126, 225, 225, 225, 135, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 221, 225, 225, 225, 127, 255, 255, 255, 0, 255, 255, 255, 1, 224, 224, 224, 128, 224, 224, 224, 220, 224, 224, 224, 219, 225, 225, 225, 127, 255, 255, 255, 0, 255, 255, 255, 5, 225, 225, 225, 134, 224, 224, 224, 229, 224, 224, 224, 255, 255, 255, 255, 0),
"format": "RGBA8",
@@ -20,8 +19,7 @@ data = {
}
[sub_resource type="ImageTexture" id="ImageTexture_gdtpn"]
image = SubResource("Image_j0vw3")
image = SubResource("Image_4rf8i")
[sub_resource type="StyleBoxEmpty" id="StyleBoxEmpty_7v0rg"]
@@ -0,0 +1 @@
uid://bkptv02am6p88
+1
View File
@@ -0,0 +1 @@
uid://rxllqh6yapvt
@@ -0,0 +1 @@
uid://osytjsx5x5lb
+50 -18
View File
@@ -36,13 +36,22 @@ func download(url: String) -> Download:
func FilesMissing() -> bool:
var executable_name: String = "yt-dlp.exe" if OS.get_name() == "Windows" else "yt-dlp"
if not FileAccess.file_exists("user://%s" % executable_name):
return true
if not FileAccess.file_exists("user://ffmpeg.exe"):
return true
if not FileAccess.file_exists("user://ffprobe.exe"):
return true
if OS.get_name() == "Windows":
if not FileAccess.file_exists("user://%s" % executable_name):
return true
if not FileAccess.file_exists("user://ffmpeg.exe"):
return true
if not FileAccess.file_exists("user://ffprobe.exe"):
return true
elif OS.get_name() == "Linux":
var stuff = OS.execute("bash",PackedStringArray(["-c","ffprobe"]))
print(stuff)
if stuff != 1:
return true
var stuff2 = OS.execute("bash",PackedStringArray(["-c","ffmpeg"]))
print(stuff2)
if stuff2 != 1:
return true
return false
func setup() -> void:
@@ -59,9 +68,8 @@ func setup() -> void:
await (Engine.get_main_loop() as SceneTree).process_frame
_thread.wait_to_finish()
if OS.get_name() == "Windows":
await _setup_ffmpeg()
else:
await _setup_ffmpeg()
if OS.get_name() == "Linux":
OS.execute("chmod", PackedStringArray(["+x", OS.get_user_data_dir() + "/yt-dlp"]))
_is_setup = true
@@ -70,12 +78,33 @@ func setup() -> void:
func _setup_ffmpeg() -> void:
if not FileAccess.file_exists("user://ffmpeg.exe"):
_downloader.download(ffmpeg_sources["ffmpeg"], "user://ffmpeg.exe")
await _downloader.download_completed
if OS.get_name() == "Windows":
_downloader.download(ffmpeg_sources["ffmpeg"], "user://ffmpeg.exe")
await _downloader.download_completed
print(OS.get_distribution_name())
elif OS.get_distribution_name() in ["Ubuntu","Linux Mint","Debian"]:
var stuff = OS.execute("bash",PackedStringArray(["-c","ffmpeg"]))
print(stuff)
if stuff !=1:
push_error("FFMPEG NOT INSTALLED")
print(OS.get_distribution_name())
else:
print(OS.get_distribution_name())
if not FileAccess.file_exists("user://ffprobe.exe"):
_downloader.download(ffmpeg_sources["ffprobe"], "user://ffprobe.exe")
await _downloader.download_completed
if OS.get_name() == "Windows":
_downloader.download(ffmpeg_sources["ffprobe"], "user://ffprobe.exe")
print(OS.get_distribution_name())
await _downloader.download_completed
elif OS.get_name() == "Linux":
var stuff = OS.execute("bash",PackedStringArray(["-c","ffprobe"]))
print(stuff)
if stuff != 1:
push_error("FFPROBE NOT INSTALLED")
print(OS.get_distribution_name())
else:
print(OS.get_distribution_name())
func _update_yt_dlp(filename: String) -> void:
@@ -100,7 +129,6 @@ class Download extends RefCounted:
var _status: Status = Status.READY
var _thread: Thread = null
var _process_id:int
# Fields
var _url: String
@@ -110,7 +138,7 @@ class Download extends RefCounted:
var _renameAudioToDiffName:bool = false
var _video_format: Video = Video.WEBM
var _audio_format: Audio = Audio.MP3
var _download_playlist:bool
func _init(url: String):
_url = url
@@ -159,7 +187,6 @@ class Download extends RefCounted:
func _execute_on_thread() -> void:
var _process_id:int
var executable: String = OS.get_user_data_dir() + \
("/yt-dlp.exe" if OS.get_name() == "Windows" else "/yt-dlp")
@@ -185,9 +212,14 @@ class Download extends RefCounted:
"destination": _destination
})
options_and_arguments.append_array(["--yes-playlist","--embed-metadata","--embed-thumbnail",str("-o" + "%(title)s.%(ext)s")])
options_and_arguments.append_array(["--embed-metadata","--embed-thumbnail",str("-o" + "%(title)s.%(ext)s")])
options_and_arguments.append_array(["--no-continue", "-P", file_path, _url])
if _download_playlist:
options_and_arguments.append("--yes-playlist")
else:
options_and_arguments.append("--no-playlist")
print(options_and_arguments)
var output: Array = []
OS.execute(executable, PackedStringArray(options_and_arguments), output)
+1
View File
@@ -0,0 +1 @@
uid://c0dklnw4cfoe3
+21
View File
@@ -0,0 +1,21 @@
MIT License
Copyright (c) 2023 B0TLANNER Games
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
+139
View File
@@ -0,0 +1,139 @@
# Godot GIF
<br>
<p align="center">
<img src="./docs-images/logo.gif" alt="Logo" width="128" height="128" />
</p>
<p align="center">
<a href="https://github.com/BOTLANNER/godot-gif/actions/workflows/build_releases.yml"><img alt="GitHub Build" src="https://github.com/BOTLANNER/godot-gif/actions/workflows/build_releases.yml/badge.svg" height="20"/></a>
<a href="https://github.com/BOTLANNER/godot-gif/blob/develop/LICENSE.txt"><img alt="MIT License" src="https://img.shields.io/github/license/BOTLANNER/godot-gif" height="20"/></a>
</p>
## Description
GDExtension for Godot 4+ to load GIF files as [AnimatedTexture](https://docs.godotengine.org/en/stable/classes/class_animatedtexture.html) and/or [SpriteFrames](https://docs.godotengine.org/en/stable/classes/class_spriteframes.html).
NOTE: ~~**AnimatedTexture**~~ has been marked as deprecated according to development docs and could be removed in a future version of Godot.
## Usage
### Editor
Gif files can be imported at edit time as one of the supported types via Import options.
<details open>
<summary>Editor Imports Options</summary>
![Editor Imports Options](./docs-images/EditorImportSettings.gif)
</details>
See the [Editor Imports](./demo/editor_imports_example.tscn) example scene.
<details open>
<summary>Editor Imports Example</summary>
![Editor Imports](./docs-images/EditorImports.gif)
</details>
<hr/>
### Runtime
Gif files can be loaded at runtime as one of the supported types via the `GifManager` singleton.
`GifManager` exposes the following methods for loading gifs either from file or from bytes directly:
![GifManager Methods](./docs-images/methods.png)
e.g. to load from file
```py
get_node("AnimFromRuntimeFile").texture = GifManager.animated_texture_from_file("res://examples/file/optic.gif")
get_node("AnimatedSprite2RuntimeFile").sprite_frames = GifManager.sprite_frames_from_file("res://examples/file/optic.gif")
```
See the [Runtime Imports](./demo/main.tscn) example scene.
<details open>
<summary>Runtime Imports Example</summary>
![Runtime Imports](./docs-images/RuntimeImports.gif)
</details>
## Installation
Download the `gdextension` artifact from the [latest successful build](https://github.com/BOTLANNER/godot-gif/actions/workflows/build_releases.yml). (It should be right at the bottom of the **Summary**)
![image](https://github.com/BOTLANNER/godot-gif/assets/16349308/f28867c6-f669-45f2-9309-dbb17cec2031)
Extract the contents to your Godot project directory.
You should have an `addons` directory at the root with the following structure:
```bash
└───addons
└───godotgif
│ godotgif.gdextension
│ LICENSE.txt
│ README.md
└───bin
│ godotgif.windows.template_debug.x86_32.dll
│ godotgif.windows.template_debug.x86_64.dll
│ godotgif.windows.template_release.x86_32.dll
│ godotgif.windows.template_release.x86_64.dll
│ libgodotgif.android.template_debug.arm64.so
│ libgodotgif.android.template_release.arm64.so
│ libgodotgif.linux.template_debug.x86_32.so
│ libgodotgif.linux.template_debug.x86_64.so
│ libgodotgif.linux.template_release.x86_32.so
│ libgodotgif.linux.template_release.x86_64.so
├───godotgif.macos.template_debug.framework
│ libgodotgif.macos.template_debug
└───godotgif.macos.template_release.framework
libgodotgif.macos.template_release
```
Open your project. Any exisitng gifs should auto-import. New gifs in the project directory will automatically import as `SpriteFrames`. To convert them into `AnimatedTexture`, update the [import settings](#editor).
The `GifManager` class should also now be available for access within GDScript.
## Contributing
### Setup
Ensure **SCons** is setup. Refer to [Introduction to the buildsystem](https://docs.godotengine.org/en/stable/contributing/development/compiling/introduction_to_the_buildsystem.html)
* If using a different version of Godot, be sure to dump the bindings e.g.
```sh
godot --dump-extension-api extension_api.json
```
* Compile with
```sh
scons platform=<platform> custom_api_file=extension_api.json
```
### Debugging
This repository is configured for use with [VSCode](https://code.visualstudio.com/)
[Launch configurations](./.vscode/launch.json) have been setup for both debugging in editor and in runtime provided certain **VSCode** extensions are present and environment variables are defined.
The following environment variables are required:
1. `GODOT_PATH` - The directory in which Godot is installed
1. `GODOT_EXECUTABLE` - The executable name of the Godot installation
### More Details
Refer to [GDExtension C++ example](https://docs.godotengine.org/en/stable/tutorials/scripting/gdextension/gdextension_cpp_example.html)
## License
Unless otherwise specified, the extension is released under the
[MIT license](LICENSE.txt).
See the full list of third-party libraries with their licenses used by this
extension at [src/thirdparty/README.md](src/thirdparty/README.md).
This implementation heavily borrowed inspiration from the [gif module](https://github.com/goostengine/goost/tree/gd3/modules/gif) for [Goost](https://github.com/goostengine/goost) that is currently only based on Godot 3
+23
View File
@@ -0,0 +1,23 @@
[configuration]
entry_symbol = "godot_gif_library_init"
compatibility_minimum = "4.1"
[libraries]
macos.debug = "bin/godotgif.macos.template_debug.framework/libgodotgif.macos.template_debug"
macos.release = "bin/godotgif.macos.template_release.framework/libgodotgif.macos.template_release"
windows.debug.x86_32 = "bin/godotgif.windows.template_debug.x86_32.dll"
windows.release.x86_32 = "bin/godotgif.windows.template_release.x86_32.dll"
windows.debug.x86_64 = "bin/godotgif.windows.template_debug.x86_64.dll"
windows.release.x86_64 = "bin/godotgif.windows.template_release.x86_64.dll"
linux.debug.x86_64 = "bin/libgodotgif.linux.template_debug.x86_64.so"
linux.release.x86_64 = "bin/libgodotgif.linux.template_release.x86_64.so"
linux.debug.arm64 = "bin/libgodotgif.linux.template_debug.arm64.so"
linux.release.arm64 = "bin/libgodotgif.linux.template_release.arm64.so"
linux.debug.rv64 = "bin/libgodotgif.linux.template_debug.rv64.so"
linux.release.rv64 = "bin/libgodotgif.linux.template_release.rv64.so"
android.debug.x86_64 = "bin/libgodotgif.android.template_debug.x86_64.so"
android.release.x86_64 = "bin/libgodotgif.android.template_release.x86_64.so"
android.debug.arm64 = "bin/libgodotgif.android.template_debug.arm64.so"
android.release.arm64 = "bin/libgodotgif.android.template_release.arm64.so"
+1
View File
@@ -0,0 +1 @@
uid://b5mou30wr43g
+38
View File
@@ -0,0 +1,38 @@
extends Control
@onready var birthday_particles: GPUParticles2D = $BirthdayParticles
@onready var audio_stream_player: AudioStreamPlayer = $AudioStreamPlayer
@onready var birthday_happy: Label = $"../BirthdayHappy"
@export var opacitycurve:Curve
var opacity:float = 1
var awaitingJumpscare:bool
var IsFocused:bool
# Called when the node enters the scene tree for the first time.
func _ready() -> void:
birthday_happy.hide()
var bday:bool
if Time.get_datetime_dict_from_system().day == 9:
if Time.get_datetime_dict_from_system().month == 9:
await get_tree().create_timer(0.2).timeout
awaitingJumpscare = true
bday = true
func _notification(what):
if what == get_tree().NOTIFICATION_APPLICATION_FOCUS_IN:
IsFocused = true
if what == get_tree().NOTIFICATION_APPLICATION_FOCUS_OUT:
IsFocused = false
# Called every frame. 'delta' is the elapsed time since the previous frame.
func _process(delta: float) -> void:
if awaitingJumpscare && IsFocused:
birthday_happy.show()
awaitingJumpscare = false
birthday_particles.emitting = true
audio_stream_player.play()
if !awaitingJumpscare:
opacity -= delta/5
birthday_happy.modulate.a = opacitycurve.sample_baked(opacity)
if opacity <= 0.0:
process_mode = ProcessMode.PROCESS_MODE_DISABLED
+1
View File
@@ -0,0 +1 @@
uid://n3koklp0funr
+1
View File
@@ -0,0 +1 @@
uid://dg68hvw773xu6
+4 -4
View File
@@ -4,7 +4,7 @@ extends Control
@onready var file_dialog: FileDialog = $FileDialog
@onready var current_directory: Label = $ScrollContainer/VBoxContainer/CurrentDirectory
@onready var playlist_name: LineEdit = $ScrollContainer/VBoxContainer/PlaylistName
@onready var playlists_holder: VBoxContainer = $"../PlaylistsPanel/PlaylistsContainer/VBoxContainer/PlaylistsHolder"
@onready var playlists_holder: VBoxContainer = $"../PlaylistPanelHolder/PlaylistsPanel/PlaylistsContainer/VBoxContainer/PlaylistsHolder"
const PLAYLIST_DISPLAY = preload("res://PlaylistDisplay.tscn")
@@ -33,15 +33,15 @@ func _on_playlist_name_text_changed(new_text: String) -> void:
#elif new_text.unicode_at()
if !Parent.Playlists.has(new_text):
if new_text != "":
good_indicator.text = "Name Valid"
good_indicator.text = tr("NAME_VALID")
good_indicator.label_settings.font_color = Color(0,1,0,1)
NameValid =true
else:
good_indicator.text = "Name needs to be something"
good_indicator.text = tr("NAME_EMPTY")
good_indicator.label_settings.font_color = Color(1,0,0,1)
NameValid = false
else:
good_indicator.text = "Name Already used"
good_indicator.text = tr("NAME_USED")
good_indicator.label_settings.font_color = Color(1,0,0,1)
NameValid = false
IsValid()
+1
View File
@@ -0,0 +1 @@
uid://bsnt1irskti8d
+1
View File
@@ -0,0 +1 @@
uid://dl37gwyodonea
+1 -2
View File
@@ -5,8 +5,7 @@ var HzDec = {0:"32 Hz",
2:"320 Hz",
3:"1000 Hz",
4:"3200 Hz",
5:"3200 Hz",
6:"10000 Hz"}
5:"10000 Hz"}
var gainValueLabels:Array = []
var gainValueSlider:Array = []
+1
View File
@@ -0,0 +1 @@
uid://kt7n1epi3ng8
+17 -223
View File
@@ -9,9 +9,11 @@ custom_features=""
export_filter="all_resources"
include_filter=""
exclude_filter=""
export_path="../MusicPlayerExports/MusicPlayer.exe"
export_path="../SimplaudioExports/Windows/Simplaudio.exe"
patches=PackedStringArray()
encryption_include_filters=""
encryption_exclude_filters=""
seed=0
encrypt_pck=false
encrypt_directory=false
script_export_mode=2
@@ -68,8 +70,8 @@ dotnet/embed_build_outputs=false
[preset.1]
name="macOS"
platform="macOS"
name="Linux"
platform="Linux"
runnable=true
advanced_options=false
dedicated_server=false
@@ -77,244 +79,36 @@ custom_features=""
export_filter="all_resources"
include_filter=""
exclude_filter=""
export_path="../MusicPlayerMACExports/MusicPlayer.zip"
export_path="../SimplaudioExports/Linux/Simplaudio.x86_64"
patches=PackedStringArray()
encryption_include_filters=""
encryption_exclude_filters=""
seed=0
encrypt_pck=false
encrypt_directory=false
script_export_mode=2
[preset.1.options]
export/distribution_type=1
binary_format/architecture="universal"
custom_template/debug=""
custom_template/release=""
debug/export_console_wrapper=2
application/icon=""
application/icon_interpolation=4
application/bundle_identifier="com.bucket.simplaudio"
application/signature=""
application/app_category="Music"
application/short_version=""
application/version=""
application/copyright=""
application/copyright_localized={}
application/min_macos_version="10.12"
application/export_angle=0
display/high_res=true
application/additional_plist_content=""
xcode/platform_build="14C18"
xcode/sdk_version="13.1"
xcode/sdk_build="22C55"
xcode/sdk_name="macosx13.1"
xcode/xcode_version="1420"
xcode/xcode_build="14C18"
codesign/codesign=1
codesign/installer_identity=""
codesign/apple_team_id=""
codesign/identity=""
codesign/entitlements/custom_file=""
codesign/entitlements/allow_jit_code_execution=false
codesign/entitlements/allow_unsigned_executable_memory=false
codesign/entitlements/allow_dyld_environment_variables=false
codesign/entitlements/disable_library_validation=false
codesign/entitlements/audio_input=false
codesign/entitlements/camera=false
codesign/entitlements/location=false
codesign/entitlements/address_book=false
codesign/entitlements/calendars=false
codesign/entitlements/photos_library=false
codesign/entitlements/apple_events=false
codesign/entitlements/debugging=false
codesign/entitlements/app_sandbox/enabled=false
codesign/entitlements/app_sandbox/network_server=false
codesign/entitlements/app_sandbox/network_client=false
codesign/entitlements/app_sandbox/device_usb=false
codesign/entitlements/app_sandbox/device_bluetooth=false
codesign/entitlements/app_sandbox/files_downloads=0
codesign/entitlements/app_sandbox/files_pictures=0
codesign/entitlements/app_sandbox/files_music=0
codesign/entitlements/app_sandbox/files_movies=0
codesign/entitlements/app_sandbox/files_user_selected=0
codesign/entitlements/app_sandbox/helper_executables=[]
codesign/custom_options=PackedStringArray()
notarization/notarization=0
privacy/microphone_usage_description=""
privacy/microphone_usage_description_localized={}
privacy/camera_usage_description=""
privacy/camera_usage_description_localized={}
privacy/location_usage_description=""
privacy/location_usage_description_localized={}
privacy/address_book_usage_description=""
privacy/address_book_usage_description_localized={}
privacy/calendar_usage_description=""
privacy/calendar_usage_description_localized={}
privacy/photos_library_usage_description=""
privacy/photos_library_usage_description_localized={}
privacy/desktop_folder_usage_description=""
privacy/desktop_folder_usage_description_localized={}
privacy/documents_folder_usage_description=""
privacy/documents_folder_usage_description_localized={}
privacy/downloads_folder_usage_description=""
privacy/downloads_folder_usage_description_localized={}
privacy/network_volumes_usage_description=""
privacy/network_volumes_usage_description_localized={}
privacy/removable_volumes_usage_description=""
privacy/removable_volumes_usage_description_localized={}
privacy/tracking_enabled=false
privacy/tracking_domains=PackedStringArray()
privacy/collected_data/name/collected=false
privacy/collected_data/name/linked_to_user=false
privacy/collected_data/name/used_for_tracking=false
privacy/collected_data/name/collection_purposes=0
privacy/collected_data/email_address/collected=false
privacy/collected_data/email_address/linked_to_user=false
privacy/collected_data/email_address/used_for_tracking=false
privacy/collected_data/email_address/collection_purposes=0
privacy/collected_data/phone_number/collected=false
privacy/collected_data/phone_number/linked_to_user=false
privacy/collected_data/phone_number/used_for_tracking=false
privacy/collected_data/phone_number/collection_purposes=0
privacy/collected_data/physical_address/collected=false
privacy/collected_data/physical_address/linked_to_user=false
privacy/collected_data/physical_address/used_for_tracking=false
privacy/collected_data/physical_address/collection_purposes=0
privacy/collected_data/other_contact_info/collected=false
privacy/collected_data/other_contact_info/linked_to_user=false
privacy/collected_data/other_contact_info/used_for_tracking=false
privacy/collected_data/other_contact_info/collection_purposes=0
privacy/collected_data/health/collected=false
privacy/collected_data/health/linked_to_user=false
privacy/collected_data/health/used_for_tracking=false
privacy/collected_data/health/collection_purposes=0
privacy/collected_data/fitness/collected=false
privacy/collected_data/fitness/linked_to_user=false
privacy/collected_data/fitness/used_for_tracking=false
privacy/collected_data/fitness/collection_purposes=0
privacy/collected_data/payment_info/collected=false
privacy/collected_data/payment_info/linked_to_user=false
privacy/collected_data/payment_info/used_for_tracking=false
privacy/collected_data/payment_info/collection_purposes=0
privacy/collected_data/credit_info/collected=false
privacy/collected_data/credit_info/linked_to_user=false
privacy/collected_data/credit_info/used_for_tracking=false
privacy/collected_data/credit_info/collection_purposes=0
privacy/collected_data/other_financial_info/collected=false
privacy/collected_data/other_financial_info/linked_to_user=false
privacy/collected_data/other_financial_info/used_for_tracking=false
privacy/collected_data/other_financial_info/collection_purposes=0
privacy/collected_data/precise_location/collected=false
privacy/collected_data/precise_location/linked_to_user=false
privacy/collected_data/precise_location/used_for_tracking=false
privacy/collected_data/precise_location/collection_purposes=0
privacy/collected_data/coarse_location/collected=false
privacy/collected_data/coarse_location/linked_to_user=false
privacy/collected_data/coarse_location/used_for_tracking=false
privacy/collected_data/coarse_location/collection_purposes=0
privacy/collected_data/sensitive_info/collected=false
privacy/collected_data/sensitive_info/linked_to_user=false
privacy/collected_data/sensitive_info/used_for_tracking=false
privacy/collected_data/sensitive_info/collection_purposes=0
privacy/collected_data/contacts/collected=false
privacy/collected_data/contacts/linked_to_user=false
privacy/collected_data/contacts/used_for_tracking=false
privacy/collected_data/contacts/collection_purposes=0
privacy/collected_data/emails_or_text_messages/collected=false
privacy/collected_data/emails_or_text_messages/linked_to_user=false
privacy/collected_data/emails_or_text_messages/used_for_tracking=false
privacy/collected_data/emails_or_text_messages/collection_purposes=0
privacy/collected_data/photos_or_videos/collected=false
privacy/collected_data/photos_or_videos/linked_to_user=false
privacy/collected_data/photos_or_videos/used_for_tracking=false
privacy/collected_data/photos_or_videos/collection_purposes=0
privacy/collected_data/audio_data/collected=false
privacy/collected_data/audio_data/linked_to_user=false
privacy/collected_data/audio_data/used_for_tracking=false
privacy/collected_data/audio_data/collection_purposes=0
privacy/collected_data/gameplay_content/collected=false
privacy/collected_data/gameplay_content/linked_to_user=false
privacy/collected_data/gameplay_content/used_for_tracking=false
privacy/collected_data/gameplay_content/collection_purposes=0
privacy/collected_data/customer_support/collected=false
privacy/collected_data/customer_support/linked_to_user=false
privacy/collected_data/customer_support/used_for_tracking=false
privacy/collected_data/customer_support/collection_purposes=0
privacy/collected_data/other_user_content/collected=false
privacy/collected_data/other_user_content/linked_to_user=false
privacy/collected_data/other_user_content/used_for_tracking=false
privacy/collected_data/other_user_content/collection_purposes=0
privacy/collected_data/browsing_history/collected=false
privacy/collected_data/browsing_history/linked_to_user=false
privacy/collected_data/browsing_history/used_for_tracking=false
privacy/collected_data/browsing_history/collection_purposes=0
privacy/collected_data/search_hhistory/collected=false
privacy/collected_data/search_hhistory/linked_to_user=false
privacy/collected_data/search_hhistory/used_for_tracking=false
privacy/collected_data/search_hhistory/collection_purposes=0
privacy/collected_data/user_id/collected=false
privacy/collected_data/user_id/linked_to_user=false
privacy/collected_data/user_id/used_for_tracking=false
privacy/collected_data/user_id/collection_purposes=0
privacy/collected_data/device_id/collected=false
privacy/collected_data/device_id/linked_to_user=false
privacy/collected_data/device_id/used_for_tracking=false
privacy/collected_data/device_id/collection_purposes=0
privacy/collected_data/purchase_history/collected=false
privacy/collected_data/purchase_history/linked_to_user=false
privacy/collected_data/purchase_history/used_for_tracking=false
privacy/collected_data/purchase_history/collection_purposes=0
privacy/collected_data/product_interaction/collected=false
privacy/collected_data/product_interaction/linked_to_user=false
privacy/collected_data/product_interaction/used_for_tracking=false
privacy/collected_data/product_interaction/collection_purposes=0
privacy/collected_data/advertising_data/collected=false
privacy/collected_data/advertising_data/linked_to_user=false
privacy/collected_data/advertising_data/used_for_tracking=false
privacy/collected_data/advertising_data/collection_purposes=0
privacy/collected_data/other_usage_data/collected=false
privacy/collected_data/other_usage_data/linked_to_user=false
privacy/collected_data/other_usage_data/used_for_tracking=false
privacy/collected_data/other_usage_data/collection_purposes=0
privacy/collected_data/crash_data/collected=false
privacy/collected_data/crash_data/linked_to_user=false
privacy/collected_data/crash_data/used_for_tracking=false
privacy/collected_data/crash_data/collection_purposes=0
privacy/collected_data/performance_data/collected=false
privacy/collected_data/performance_data/linked_to_user=false
privacy/collected_data/performance_data/used_for_tracking=false
privacy/collected_data/performance_data/collection_purposes=0
privacy/collected_data/other_diagnostic_data/collected=false
privacy/collected_data/other_diagnostic_data/linked_to_user=false
privacy/collected_data/other_diagnostic_data/used_for_tracking=false
privacy/collected_data/other_diagnostic_data/collection_purposes=0
privacy/collected_data/environment_scanning/collected=false
privacy/collected_data/environment_scanning/linked_to_user=false
privacy/collected_data/environment_scanning/used_for_tracking=false
privacy/collected_data/environment_scanning/collection_purposes=0
privacy/collected_data/hands/collected=false
privacy/collected_data/hands/linked_to_user=false
privacy/collected_data/hands/used_for_tracking=false
privacy/collected_data/hands/collection_purposes=0
privacy/collected_data/head/collected=false
privacy/collected_data/head/linked_to_user=false
privacy/collected_data/head/used_for_tracking=false
privacy/collected_data/head/collection_purposes=0
privacy/collected_data/other_data_types/collected=false
privacy/collected_data/other_data_types/linked_to_user=false
privacy/collected_data/other_data_types/used_for_tracking=false
privacy/collected_data/other_data_types/collection_purposes=0
debug/export_console_wrapper=1
binary_format/embed_pck=false
texture_format/s3tc_bptc=true
texture_format/etc2_astc=false
binary_format/architecture="x86_64"
ssh_remote_deploy/enabled=false
ssh_remote_deploy/host="user@host_ip"
ssh_remote_deploy/port="22"
ssh_remote_deploy/extra_args_ssh=""
ssh_remote_deploy/extra_args_scp=""
ssh_remote_deploy/run_script="#!/usr/bin/env bash
export DISPLAY=:0
unzip -o -q \"{temp_dir}/{archive_name}\" -d \"{temp_dir}\"
open \"{temp_dir}/{exe_name}.app\" --args {cmd_args}"
\"{temp_dir}/{exe_name}\" {cmd_args}"
ssh_remote_deploy/cleanup_script="#!/usr/bin/env bash
kill $(pgrep -x -f \"{temp_dir}/{exe_name}.app/Contents/MacOS/{exe_name} {cmd_args}\")
kill $(pgrep -x -f \"{temp_dir}/{exe_name} {cmd_args}\")
rm -rf \"{temp_dir}\""
dotnet/include_scripts_content=false
dotnet/include_debug_symbols=false
dotnet/include_debug_symbols=true
dotnet/embed_build_outputs=false
+1
View File
@@ -0,0 +1 @@
uid://bn0iqqmor3b2b
+14
View File
@@ -0,0 +1,14 @@
extends MenuButton
@export var settings:Settings
func _ready() -> void:
for trans_language in TranslationServer.get_loaded_locales():
get_popup().add_item(trans_language)
get_popup().id_pressed.connect(got_pressed)
func got_pressed(id:int) -> void:
settings.Parent.overridden_locale = get_popup().get_item_text(id)
TranslationServer.set_locale(get_popup().get_item_text(id))
settings.Parent.SaveEverything()
+1
View File
@@ -0,0 +1 @@
uid://cej7efsj2cyen
+29
View File
@@ -0,0 +1,29 @@
extends Control
@onready var continue_anyways: Button = $VBoxContainer/HBoxContainer/ContinueAnyways
@onready var contact: Button = $VBoxContainer/HBoxContainer/Contact
@onready var failed_audio_cue: AudioStreamPlayer = $FailedAudioCue
@onready var confirmation_dialog: ConfirmationDialog = $ConfirmationDialog
func Show():
failed_audio_cue.play()
show()
continue_anyways.pressed.connect(confirmation_dialog.show)
confirmation_dialog.confirmed.connect(Confiremed)
contact.pressed.connect(Contact)
func Confiremed():
owner.LoadingSaveFailed = false
hide()
# Called when the node enters the scene tree for the first time.
func _ready() -> void:
hide()
func Contact():
print("Contact pressed")
OS.shell_open("https://notdraimdev.github.io/SimplSite/Contact.html")
# Called every frame. 'delta' is the elapsed time since the previous frame.
func _process(delta: float) -> void:
pass
+1
View File
@@ -0,0 +1 @@
uid://cbdcs7oie12g5
+207 -87
View File
@@ -18,20 +18,23 @@ extends Control
@onready var yt_link: LineEdit = $"YoutubeMenuHolder/Youtube menu/YTLink"
@onready var yt_download: Button = $"YoutubeMenuHolder/Youtube menu/YTDownload"
@onready var loading_img: Sprite2D = $"YoutubeMenuHolder/Youtube menu/LoadingIMG"
@onready var songs_menu: MenuButton = $SongsMenu
@onready var songs_menu: Button = $SongsMenu
@onready var version: Label = $Version
@onready var paused_indicator: TextureRect = $PausedIndicator
@onready var settings_popup: Popup = $SettingsPopup
@onready var settings_menu_child: Settings = $SettingsPopup/SettingsMenuChild
@onready var settings_menu_child: Settings = $SettingsHolder/SettingsPopup/SettingsMenuChild
@onready var artist_name: Label = $ArtistName
@onready var user_bg: TextureRect = $UserBG
@onready var playlists_panel: Control = $PlaylistsPanel
@onready var playlists_holder: VBoxContainer = $PlaylistsPanel/PlaylistsContainer/VBoxContainer/PlaylistsHolder
@onready var play_all: Button = $PlaylistsPanel/PlaylistsContainer/VBoxContainer/HBoxContainer/PlayAll
@onready var playlists_holder: VBoxContainer = $PlaylistPanelHolder/PlaylistsPanel/PlaylistsContainer/VBoxContainer/PlaylistsHolder
@onready var play_all: Button = $PlaylistPanelHolder/PlaylistsPanel/PlaylistsContainer/VBoxContainer/HBoxContainer/PlayAll
@onready var album_name: Label = $Album
@onready var playlist_or_song: ConfirmationDialog = $PlaylistOrSong
@onready var search_results: SearchResults = $SearchResults
@onready var delete_confirm: ConfirmationDialog = $deleteConfirm
@onready var search_bar: LineEdit = $SearchBar
@onready var playing_now: Window = $PlayingNow
@export var overridden_locale:String
var DiscordUsername:String
const PLAYLIST_DISPLAY = preload("res://PlaylistDisplay.tscn")
const PAUSE = preload("res://Pause.png")
@@ -61,12 +64,26 @@ var PlaylistsLocation:Dictionary
var BackroundSetup:bool
var CurrentPlaylist:String
var PlayAllLists:bool
var UsingPlayingNow:bool
@export var LoopPressed:Texture2D
@export var LoopNotPressed:Texture2D
signal ContinueDelete
var deleteSong:bool
signal SongChanged
var currentSongName:String
var currentArtistName:String
var currentAlbumName:String
var LoadingSaveFailed:bool = true
@onready var loading_failed_screen: Control = $LoadingFailedScreen
# Called when the node enters the scene tree for the first time.
func _ready() -> void:
playing_now.visible = false
get_tree().root.min_size = Vector2(850,492)
current_progress.drag_ended.connect(SongDragStopped)
current_progress.drag_started.connect(SongDragStarted)
loop.pressed.connect(LoopSong)
@@ -76,15 +93,14 @@ func _ready() -> void:
volume_slider.value_changed.connect(SetVolume)
skip.pressed.connect(Skip)
go_back.pressed.connect(GoBack)
songs_menu.get_popup().index_pressed.connect(SetSong)
search_results.index_pressed.connect(SetSong)
search_results.song_deleted.connect(deletesong)
var Strin:String
for Arg in OS.get_cmdline_args():
if Arg.to_lower().ends_with(".mp3") or Arg.to_lower().ends_with(".wav"):
OS.alert("opening files like this\nis no longer supported")
var data:Dictionary
var save = loadUserdata()
if save != {}:
data = save
loadPlaylists()
if loadUserdata() != null:
data = loadUserdata()
if Strin.is_empty():
if !Playlists.is_empty():
PlaylistSelected(Playlists.keys()[0],PlaylistsLocation[Playlists.keys()[0]])
@@ -120,6 +136,13 @@ func _ready() -> void:
if data.has("DiscordRichPresenceEnabled"):
settings_menu_child.discord_rich_presence_button.set_pressed_no_signal(data["DiscordRichPresenceEnabled"])
DiscordRichPresenceEnabled = data["DiscordRichPresenceEnabled"]
if data["DiscordRichPresenceEnabled"]:
setUpDiscord()
if data.has("DiscordUsername"):
if data["DiscordUsername"]:
if DiscordRichPresenceEnabled:
DiscordUsername = data["DiscordUsername"]
print("stiff ",data)
if data.has("ReverbEnabled") :
settings_menu_child.reverb_check.button_pressed = data["ReverbEnabled"]
if data.has("ReverbRoomSize") :
@@ -143,6 +166,11 @@ func _ready() -> void:
PlayAllLists = data["PlayAllLists"]
if PlayAllLists:
play_all.button_pressed = true
if data.has("UsingPlayingNow"):
UsingPlayingNow = data["UsingPlayingNow"]
if data.has("OverriddenLocale"):
TranslationServer.set_locale(data["OverriddenLocale"])
overridden_locale = data["OverriddenLocale"]
else:
if data != null:
print(data["Volume"])
@@ -165,9 +193,27 @@ func _ready() -> void:
DirectorySelected(Strin)
PlaySongs()
#PlaySongs()
DiscordRPC.app_id = 1276916292170809426
DiscordRPC.refresh()
for child in get_children(true):
if child is Control:
child.focus_mode = child is LineEdit
if LoadingSaveFailed:
var file2 = FileAccess.open("user://playlists.dat", FileAccess.READ)
if (file2.get_error() != ERR_FILE_NOT_FOUND) or (file2.get_error() != ERR_FILE_BAD_PATH):
loading_failed_screen.Show()
ERR_PRINTER_ON_FIRE
func setUpDiscord():
DiscordRPC.app_id = 1276916292170809426
DiscordRPC.refresh()
print("stiff chicks ",DiscordRPC.get_current_user())
SplashStrings = ["the party just started!"]
var LText = SplashStrings.pick_random()
print(LText)
DiscordRPC.large_image_text = LText
DiscordRPC.large_image = "logo"
DiscordUsername = DiscordRPC.get_current_user().get("username")
DiscordRPC.refresh()
# this is boolean if everything worked
print("Discord working: " + str(DiscordRPC.get_is_discord_working()))
# Set the first custom text row of the activity here
@@ -177,12 +223,7 @@ func _ready() -> void:
# Set the second custom text row of the activity here
DiscordRPC.state = ""
# Image key for small image from "Art Assets" from the Discord Developer website
DiscordRPC.large_image = "logo"
# Tooltip text for the large image
SplashStrings = ["the party just started!"]
var LText = SplashStrings.pick_random()
print(LText)
DiscordRPC.large_image_text = LText
# Image key for large image from "Art Assets" from the Discord Developer website
DiscordRPC.small_image = ""
# Tooltip text for the small image
@@ -191,12 +232,43 @@ func _ready() -> void:
# Always refresh after changing the values!
DiscordRPC.refresh()
func deletesong(idx:int):
var currentDir:String= CurrentDir
currentDir += "/" + textSongs[idx]
delete_confirm.show()
delete_confirm.dialog_text = tr("DELETE_DIALOG") + textSongs[idx] +"?"
delete_confirm.confirmed.connect(deleteConfirmed)
delete_confirm.canceled.connect(deleteCancelled)
await ContinueDelete
delete_confirm.canceled.disconnect(deleteCancelled)
delete_confirm.confirmed.disconnect(deleteConfirmed)
if deleteSong:
print("deleted + " + currentDir)
deleteSong = false
var dir = DirAccess.remove_absolute(currentDir)
print("error code " +str(dir) + " (zero is good)")
if dir == 0:
textSongs.remove_at(idx)
if search_bar.visible:
search_bar.updateResults()
else:
songs_menu._pressed()
Playlists[CurrentPlaylist].erase(textSongs[idx])
func deleteCancelled():
deleteSong = false
ContinueDelete.emit()
func deleteConfirmed():
deleteSong = true
ContinueDelete.emit()
func SongDragStopped(Changed:bool):
if Changed:
music_player.play(current_progress.value * CurrentSongLenth / current_progress.max_value)
if Paused:
pausePlay()
UpdateProgressSlider = true
DiscordRPC.start_timestamp = int(Time.get_unix_time_from_system() - (current_progress.value * CurrentSongLenth / current_progress.max_value))
DiscordRPC.refresh()
@@ -221,7 +293,8 @@ func SetSong(IDX:int):
CurrentIDX = IDX -1
PlaySongs()
music_player.stop()
SaveEverything()
if !LoadingSaveFailed:
SaveEverything()
print("SetSong")
func pausePlay():
@@ -249,16 +322,15 @@ func SetVolume(Volume:float):
var volume = (-50 + (Volume/2))
if Volume >= 2:
AudioServer.set_bus_volume_db(0,volume)
AudioServer.set_bus_volume_db(1,volume)
else:
AudioServer.set_bus_volume_db(0,-1000)
print("Chnaged Volume")
SaveEverything()
AudioServer.set_bus_volume_db(1,-1000)
volume_slider.value = Volume
func SelectPlaylistDir():
file_dialog.show()
SaveEverything()
if !LoadingSaveFailed:
SaveEverything()
print("Select Playtlist dir")
func DirectorySelected(dir:String):
@@ -271,17 +343,15 @@ func PlaySongs():
if music_player.playing:
Paused = true
DiscordRPC.state = "Paused"
music_player.stream_paused = true
play_list.icon = PLAY
DiscordRPC.state = tr("DELETE_DIALOG")
print(DiscordRPC.get_current_user())
else:
DiscordRPC.start_timestamp = int(Time.get_unix_time_from_system() - (current_progress.value * CurrentSongLenth / current_progress.max_value))
print(DiscordRPC.get_current_user())
if DiscordRPC.get_current_user().get("username") == "_bucketofchicken":
DiscordRPC.state = "i made the music player btw"
else:
DiscordRPC.state = "Listening To Music"
DiscordRPC.state = tr("STATE_LISTENING")
Paused = false
music_player.stream_paused = false
play_list.icon = PAUSE
@@ -290,25 +360,24 @@ func PlaySongs():
if LoopingSong:
music_player.play()
elif textSongs.size() != 0:
var index
var index:int
if OpenedSong.is_empty():
if PlayAllLists:
if CurrentIDX >= (textSongs.size()):
CurrentPlaylist = Playlists.keys()[(Playlists.keys().find(CurrentPlaylist)+1) % Playlists.keys().size()]
print("ASSS")
print(CurrentPlaylist)
index = CurrentIDX % textSongs.size()
else:
if PlayAllLists:
if CurrentIDX+1 >= (textSongs.size()-1):
CurrentPlaylist = Playlists.keys()[(Playlists.keys().find(CurrentPlaylist)+1) % Playlists.keys().size()]
print("AS")
index = textSongs.find(OpenedSong) % textSongs.size()
if PlayAllLists:
if !CurrentDir.ends_with(CurrentPlaylist):
GetSongs(PlaylistsLocation[CurrentPlaylist])
var CurrentSongDir:String = PlaylistsLocation[CurrentPlaylist] + "/" + textSongs[index]
DiscordRPC.details = textSongs[index].replace(".mp3","")
currentSongName = textSongs[index].replace(".mp3","")
print(CurrentSongDir)
var sonnname:String = textSongs[index]
sonnname = sonnname.replace(".mp3", "")
@@ -325,17 +394,21 @@ func PlaySongs():
if MusicMetadataAutoload.get_mp3_metadata(song).title != "":
song_name.text = MusicMetadataAutoload.get_mp3_metadata(song).title
if MusicMetadataAutoload.get_mp3_metadata(song).artist != "":
artist_name.text = MusicMetadataAutoload.get_mp3_metadata(song).artist
else: artist_name.text = ""
currentArtistName = MusicMetadataAutoload.get_mp3_metadata(song).artist
else: currentArtistName = ""
artist_name.text = currentArtistName
if MusicMetadataAutoload.get_mp3_metadata(song).album != "":
album_name.text = MusicMetadataAutoload.get_mp3_metadata(song).album
else: album_name.text = ""
currentAlbumName = MusicMetadataAutoload.get_mp3_metadata(song).album
else: currentAlbumName = ""
album_name.text = currentAlbumName
if song != null:
CurrentSongLenth = song.get_length()
music_player.stream = song
music_player.play()
SaveEverything()
if !LoadingSaveFailed:
SaveEverything()
print("set stream")
SongChanged.emit()
func GetSongs(dir:String):
@@ -358,11 +431,11 @@ func GetSongs(dir:String):
wav_disclaimer.show()
SeenWAVDisclaimer = true
#print(songs)
songs_menu.get_popup().clear(true)
search_results.clear()
textSongs = songs
for song in textSongs:
var nam = song.replace(".mp3", "")
songs_menu.get_popup().add_item(nam)
var nam = song
search_results.add_item(nam)
func Randomize():
if textSongs.size() != 0:
@@ -381,10 +454,10 @@ func Randomize():
Randomized = true
songs_menu.get_popup().clear(true)
search_results.clear()
for song in textSongs:
var nam = song.replace(".mp3", "")
songs_menu.get_popup().add_item(nam)
var nam = song
search_results.add_item(nam)
#print(textSongs)
func PlaylistSelected(Playlist:String,PlaylistLocation:String):
@@ -404,6 +477,7 @@ func PlaylistSelected(Playlist:String,PlaylistLocation:String):
# Called every frame. 'delta' is the elapsed time since the previous frame.
func _process(_delta: float) -> void:
playing_now.visible = UsingPlayingNow
currentSaveTime -= _delta
if !BackroundSetup:
if CurrentCustomBackroundImageDirectory != null and CurrentCustomBackroundImageDirectory != "":
@@ -411,43 +485,30 @@ func _process(_delta: float) -> void:
BackroundSetup = true
if currentSaveTime < 0:
currentSaveTime = SaveInterval
SaveEverything()
print("yoo")
if DiscordRichPresenceEnabled:
DiscordUsername = DiscordRPC.get_current_user().get("username")
if !LoadingSaveFailed:
SaveEverything()
@warning_ignore("integer_division")
SplashStrings = ["Total listening time: %s!" % str(str(int(TimeSpentListening/60)/60 )
+ "h : " + str((int(TimeSpentListening) / 60) % 60) + "m : " +
str(int(TimeSpentListening) % 60) + "s"),
"Version: %s" % version.text,"🤷‍♂️","This Changes every ~11 seconds",
"hello everybody my name is %s" % DiscordRPC.get_current_user()["username"],
"wash your dishes, i know you got some","Running on %s" % OS.get_distribution_name(),
"%s is cooking" % DiscordRPC.get_current_user()["username"], "debugging" if OS.has_feature("editor") else "Release build",
"this user chose to show you all this info","Playing a Banger",
":steamhappy:","This is a sign that crocodiles live in water",
"Space? SPACE?! SPAAAAAAAAAAAAACE!!!",
"i love gd colonge",
"listening with reverb" if settings_menu_child.reverb_check.button_pressed else
"not listening with reverb","the cake is edible",
"what a great song!","this message is useless",
"stop reading these","why are you reading these",
"hello from mars", "hello to mars","there is a fly in my room",
"yippee!","What, are they allergic to bathtubs or something"]
print(DiscordRPC.get_current_user()["username"])
print(TimeSpentListening)
var LText = SplashStrings.pick_random()
DiscordRPC.large_image_text = LText
DiscordRPC.refresh()
if DiscordRichPresenceEnabled:
UpdateSplashes()
if DiscordRPC.get_is_discord_working():
print(DiscordRPC.get_current_user()["username"])
print(TimeSpentListening)
var LText = SplashStrings.pick_random()
DiscordRPC.large_image_text = LText
if DiscordRPC.get_is_discord_working():
DiscordRPC.refresh()
# "59:59 remaining" timestamp for the activity
if music_player.playing:
TimeSpentListening += _delta
if DiscordRPC.get_current_user().get("username") == "_bucketofchicken":
DiscordRPC.state = "i made the music player btw"
else:
DiscordRPC.state = "Listening To Music"
CurrentPausedIndicatorShaderIntensity = lerp(CurrentPausedIndicatorShaderIntensity,0.0,0.1)
DiscordRPC.state = tr("STATE_LISTENING")
else:
DiscordRPC.start_timestamp = int(0)
DiscordRPC.state = "Paused"
DiscordRPC.refresh()
DiscordRPC.state = tr("STATE_PAUSED")
if DiscordRPC.get_is_discord_working():
DiscordRPC.refresh()
CurrentPausedIndicatorShaderIntensity = lerp(CurrentPausedIndicatorShaderIntensity,1.0,0.1)
if DiscordRichPresenceEnabled:
DiscordRPC.run_callbacks()
@@ -486,7 +547,31 @@ func _process(_delta: float) -> void:
DiscordRPC.refresh()
func UpdateSplashes():
if DiscordRPC.get_is_discord_working():
SplashStrings = ["Total listening time: %s!" % str(str(int(TimeSpentListening/60)/60 )
+ "h : " + str((int(TimeSpentListening) / 60) % 60) + "m : " +
str(int(TimeSpentListening) % 60) + "s"),
"Version: %s" % version.text,"🤷‍♂️","This Changes every ~11 seconds",
"hello everybody my name is %s" % DiscordRPC.get_current_user()["username"],
"wash your dishes, i know you got some","Running on %s" % OS.get_distribution_name(),
"%s is cooking" % DiscordRPC.get_current_user()["username"], "debugging" if OS.has_feature("editor") else "Release build",
"this user chose to show you all this info","Playing a Banger",
":steamhappy:","This is a sign that crocodiles live in water",
"Space? SPACE?! SPAAAAAAAAAAAAACE!!!",
"i love gd colonge",
"listening with reverb" if settings_menu_child.reverb_check.button_pressed else
"not listening with reverb","the cake is edible",
"what a great song!","this message is useless",
"stop reading these","why are you reading these",
"hello from mars", "hello to mars","there is a fly in my room",
"yippee!","What, are they allergic to bathtubs or something",
"Did you know, a 737 can land with up to 33knots of wind!",
"Welcome to todays JahresSchau",
"ram is very useful","your cpu is tasty","main course: Nvidia GPU",
"SCHOTTLAND FUER IMMER","i eat airborne vehicles","linus trovalds",
"","\(〇_o)/","Nuh Uh!","Yuh Huh","Breaching.",
"I get a narcissistic injury when the wall ignores me","totally not using %s" % version.text]
func SaveEverything():
@@ -509,46 +594,72 @@ func SaveEverything():
"CompressionRatio" : settings_menu_child.ratio_slider.value ,
"CompressionGain" : settings_menu_child.gain_slider.value,
"CurrentCustomBackroundImageDirectory" : CurrentCustomBackroundImageDirectory,
"PlayAllLists" : PlayAllLists
"PlayAllLists" : PlayAllLists,
"DiscordUsername" : DiscordRPC.get_current_user().get("username"),
"UsingPlayingNow" : UsingPlayingNow,
"OverriddenLocale" : overridden_locale
}
print("saving")
saveUserdata(Data)
savePlaylists()
var saveRetrys:int =0
func savePlaylists():
var json = JSON.new()
var file = FileAccess.open("user://playlists.dat", FileAccess.WRITE)
var file2 = FileAccess.open("user://playlistsLocation.dat", FileAccess.WRITE)
@warning_ignore("static_called_on_instance")
if !Playlists == null or !Playlists == {}:
if !(Playlists == null) or !(Playlists == {}):
file.store_string(str(json.stringify(Playlists)))
if !PlaylistsLocation == null or !PlaylistsLocation == {}:
if !(PlaylistsLocation == null) or !(PlaylistsLocation == {}):
file2.store_string(str(json.stringify(PlaylistsLocation)))
if loadUserdata() == {}:
if saveRetrys < 3:
savePlaylists()
else:
printerr("saving failed")
func saveUserdata(content):
var json = JSON.new()
var file = FileAccess.open("user://data.dat", FileAccess.WRITE)
@warning_ignore("static_called_on_instance")
file.store_string(Marshalls.utf8_to_base64(json.stringify(content)))
file.store_string(json.stringify(content))
file.close()
func loadUserdata():
var saveLoadTries:int
func loadUserdata() -> Dictionary:
var json = JSON.new()
var file = FileAccess.open("user://data.dat", FileAccess.READ)
var filetext = file.get_as_text() if file != null else null
if file != null:
var content
var content:Dictionary = {}
if json.parse_string(file.get_as_text()) != null:
content = json.parse_string(filetext)
else:
@warning_ignore("static_called_on_instance")
content = json.parse_string(Marshalls.base64_to_utf8(file.get_as_text()))
file.close()
return content
if content != null:
LoadingSaveFailed = false
return content
else:
LoadingSaveFailed = true
return {}
else:
file.close()
return null
printerr("loading save failed")
if saveLoadTries < 3:
print("retrying")
saveLoadTries +=1
return loadUserdata()
LoadingSaveFailed = true
return {}
var playlistLoadTries:int
func loadPlaylists():
var json = JSON.new()
var file = FileAccess.open("user://playlistsLocation.dat", FileAccess.READ)
@@ -558,10 +669,19 @@ func loadPlaylists():
print(filetext)
#print("shit " + json.parse_string(filetext))
if file.get_as_text() != "" and file2.get_as_text() != "":
PlaylistsLocation = json.parse_string(file.get_as_text())
Playlists = {} if json.parse_string(file2.get_as_text()) == null else json.parse_string(file2.get_as_text())
var PlaylistsLocationTemp
var PlaylistsTemp
PlaylistsLocationTemp = json.parse_string(file.get_as_text())
PlaylistsTemp = json.parse_string(file2.get_as_text())
if (PlaylistsTemp == null) or (PlaylistsLocationTemp == null):
printerr("Loading playlists failed")
LoadingSaveFailed = true
else:
LoadingSaveFailed = false
Playlists = PlaylistsTemp
PlaylistsLocation = PlaylistsLocationTemp
print(PlaylistsLocation)
print(Playlists.keys())
print("Playlists")
file.close()
file2.close()
file2.close()
+1
View File
@@ -0,0 +1 @@
uid://cvqefw0g6ala7
+1
View File
@@ -0,0 +1 @@
uid://bh3btjt2hkbs
+39
View File
@@ -0,0 +1,39 @@
extends Control
@export var ParentScene:MainScene
@export var SongImage:TextureRect
@export var SongNameLabel: RichTextLabel
@export var SongNameScroller:ScrollContainer
@export var SongAuthorScroller:ScrollContainer
@export var SongAuthorLabel: RichTextLabel
@onready var ParentWindow:Window = $".."
@export var update_tick:float = 0.1
var ticktime:float
# Called when the node enters the scene tree for the first time.
func _ready() -> void:
ParentScene.SongChanged.connect(SongChanged)
func scroll(scroller:ScrollContainer,incriment:float):
var scroll_h = scroller.get_h_scroll_bar().max_value - scroller.custom_minimum_size.x
if scroll_h !=0:
scroller.scroll_horizontal = wrapi(scroller.scroll_horizontal+incriment,0,\
scroll_h)
return scroller.scroll_horizontal == scroll_h-1 or scroller.scroll_horizontal == 0
return false
# Called every frame. 'delta' is the elapsed time since the previous frame.
func _process(delta: float) -> void:
ticktime -= delta
ParentWindow.size = size
if ticktime <= 0:
ticktime = update_tick
if scroll(SongNameScroller,1):
ticktime = 2
scroll(SongAuthorScroller,1)
func SongChanged():
SongImage.texture = ParentScene.cover.texture
print("SongChanged: ", ParentScene.currentSongName)
SongNameLabel.text = ParentScene.currentSongName
if ParentScene.currentArtistName:
SongAuthorLabel.text = ParentScene.currentArtistName
#ParentWindow.size = size * 2
+1
View File
@@ -0,0 +1 @@
uid://q2gdlr10ncnb
+17
View File
@@ -0,0 +1,17 @@
shader_type canvas_item;
uniform sampler2D alpha;
void vertex() {
// Called for every vertex the material is visible on.
}
void fragment() {
COLOR.a = texture(alpha,UV).a;
//COLOR.a = 1.0-((cos((UV.x)*PI*2.0)+1.0)/2.0);
//COLOR.a -= ((cos(UV.y*PI*2.0)+1.0)/2.0);
}
//void light() {
// // Called for every pixel for every light affecting the CanvasItem.
// // Uncomment to replace the default light processing function with this one.
//}
+1
View File
@@ -0,0 +1 @@
uid://byan4wmg2pjl6
+124
View File
@@ -0,0 +1,124 @@
[gd_scene load_steps=8 format=3 uid="uid://n7cnapaftfse"]
[ext_resource type="Script" uid="uid://q2gdlr10ncnb" path="res://playing_now_window.gd" id="1_f0rac"]
[ext_resource type="Shader" uid="uid://byan4wmg2pjl6" path="res://playing_now_window.gdshader" id="2_yr2ao"]
[ext_resource type="Texture2D" uid="uid://cq8jj63iyu2cs" path="res://d7hftxdivxxvm.cloudfront.webp" id="3_haeb5"]
[sub_resource type="Gradient" id="Gradient_haeb5"]
offsets = PackedFloat32Array(0.670732, 1)
colors = PackedColorArray(0, 0, 0, 1, 1, 1, 1, 0)
[sub_resource type="GradientTexture2D" id="GradientTexture2D_nf0dg"]
gradient = SubResource("Gradient_haeb5")
fill = 1
fill_from = Vector2(0.5, 0.5)
fill_to = Vector2(0.5, 0)
metadata/_snap_enabled = true
[sub_resource type="ShaderMaterial" id="ShaderMaterial_haeb5"]
shader = ExtResource("2_yr2ao")
shader_parameter/alpha = SubResource("GradientTexture2D_nf0dg")
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_ew3gl"]
bg_color = Color(0.6, 0.6, 0.6, 0)
corner_radius_top_left = 20
corner_radius_top_right = 20
corner_radius_bottom_right = 20
corner_radius_bottom_left = 20
corner_detail = 10
shadow_color = Color(0, 0, 0, 0.435294)
shadow_size = 45
[node name="PlayingNowWindow" type="Control" node_paths=PackedStringArray("SongImage", "SongNameLabel", "SongNameScroller", "SongAuthorScroller", "SongAuthorLabel")]
layout_mode = 3
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
size_flags_horizontal = 3
size_flags_vertical = 3
script = ExtResource("1_f0rac")
SongImage = NodePath("TextureRect")
SongNameLabel = NodePath("Panel/VBoxContainer/ScrollContainer/SongName")
SongNameScroller = NodePath("Panel/VBoxContainer/ScrollContainer")
SongAuthorScroller = NodePath("Panel/VBoxContainer/ScrollContainer2")
SongAuthorLabel = NodePath("Panel/VBoxContainer/ScrollContainer2/SongAuthor")
[node name="TextureRect" type="TextureRect" parent="."]
z_index = -1
material = SubResource("ShaderMaterial_haeb5")
layout_mode = 1
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
size_flags_horizontal = 3
texture = ExtResource("3_haeb5")
expand_mode = 3
stretch_mode = 5
[node name="Panel" type="Panel" parent="."]
z_index = -1
custom_minimum_size = Vector2(206.815, 60.71)
layout_mode = 1
anchors_preset = 8
anchor_left = 0.5
anchor_top = 0.5
anchor_right = 0.5
anchor_bottom = 0.5
offset_left = -103.408
offset_top = -30.355
offset_right = 103.407
offset_bottom = 30.355
grow_horizontal = 2
grow_vertical = 2
theme_override_styles/panel = SubResource("StyleBoxFlat_ew3gl")
[node name="VBoxContainer" type="VBoxContainer" parent="Panel"]
layout_mode = 1
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
offset_top = -1.645
offset_right = 6.10352e-05
offset_bottom = 1.64503
grow_horizontal = 2
grow_vertical = 2
size_flags_horizontal = 3
alignment = 1
[node name="ScrollContainer" type="ScrollContainer" parent="Panel/VBoxContainer"]
custom_minimum_size = Vector2(200, 25)
layout_mode = 2
size_flags_horizontal = 4
horizontal_scroll_mode = 3
vertical_scroll_mode = 0
[node name="SongName" type="RichTextLabel" parent="Panel/VBoxContainer/ScrollContainer"]
custom_minimum_size = Vector2(200, 30)
layout_mode = 2
size_flags_horizontal = 6
size_flags_vertical = 4
text = "Playing now TOOOOOOOOOOTT"
fit_content = true
scroll_active = false
autowrap_mode = 0
visible_characters_behavior = 3
[node name="ScrollContainer2" type="ScrollContainer" parent="Panel/VBoxContainer"]
custom_minimum_size = Vector2(200, 25)
layout_mode = 2
size_flags_horizontal = 4
horizontal_scroll_mode = 3
vertical_scroll_mode = 0
[node name="SongAuthor" type="RichTextLabel" parent="Panel/VBoxContainer/ScrollContainer2"]
custom_minimum_size = Vector2(200, 30)
layout_mode = 2
size_flags_horizontal = 4
size_flags_vertical = 4
text = "from protein ribosome"
autowrap_mode = 0
visible_characters_behavior = 3
+1 -1
View File
@@ -6,7 +6,7 @@ extends Control
@onready var options_dropdown: MenuButton = $HSplitContainer/HBoxContainer/OptionsDropdown
@onready var confirmation: ConfirmationDialog = $ConfirmationDialog
@onready var Parent:MainScene = get_tree().root.get_child(2)
@onready var Parent:MainScene = get_tree().root.get_child(3)
@export var Current:bool
var PlaylistLocation:String = ""
+1
View File
@@ -0,0 +1 @@
uid://cs12qambyvou8
+1 -1
View File
@@ -1,6 +1,6 @@
extends Control
@onready var create_playlist: Button = $PlaylistsContainer/VBoxContainer/HBoxContainer/CreatePlaylist
@onready var create_playlists_menu: Control = $"../CreatePlaylistsMenu"
@onready var create_playlists_menu: Control = $"../../CreatePlaylistsMenu"
@onready var play_all: Button = $PlaylistsContainer/VBoxContainer/HBoxContainer/PlayAll
+1
View File
@@ -0,0 +1 @@
uid://bxc2fqwlm5ea5
+10 -5
View File
@@ -12,9 +12,10 @@ config_version=5
config/name="Simplaudio"
run/main_scene="res://Main.tscn"
config/features=PackedStringArray("4.3", "Forward Plus")
config/features=PackedStringArray("4.4", "Forward Plus")
run/low_processor_mode=true
boot_splash/bg_color=Color(0, 0, 0, 1)
boot_splash/use_filter=false
boot_splash/image="res://BigLogo.png"
config/icon="res://Logo2.png"
config/windows_native_icon="res://addons/godot-yt-dlp/src/favicon2.ico"
@@ -23,14 +24,15 @@ config/windows_native_icon="res://addons/godot-yt-dlp/src/favicon2.ico"
YtDlp="*res://addons/godot-yt-dlp/src/yt_dlp.gd"
MusicMetadataAutoload="*res://MusicMeta-f98d7384de3e2e658dcba3f5b06fb5b57ac2c73c/MusicMeta.gd"
DiscordRPCLoader="*res://addons/discord-rpc-gd/nodes/discord_autoload.gd"
[display]
window/size/initial_position_type=3
window/size/extend_to_title=true
window/energy_saving/keep_screen_on=false
window/stretch/mode="viewport"
window/stretch/aspect="expand"
window/per_pixel_transparency/allowed=true
[dotnet]
@@ -45,12 +47,15 @@ version_control/autoload_on_startup=true
enabled=PackedStringArray("res://addons/discord-rpc-gd/plugin.cfg", "res://addons/godot-yt-dlp/plugin.cfg")
[internationalization]
locale/translations=PackedStringArray("res://translation/translations.de.translation", "res://translation/translations.en.translation")
[rendering]
textures/canvas_textures/default_texture_filter=2
renderer/rendering_method="gl_compatibility"
renderer/rendering_method.mobile="gl_compatibility"
textures/vram_compression/import_etc2_astc=true
textures/default_filters/texture_mipmap_bias=2.0
environment/defaults/default_clear_color=Color(0.147672, 0.147672, 0.147672, 1)
anti_aliasing/quality/msaa_2d=2
2d/snap/snap_2d_vertices_to_pixel=true
2d/sdf/scale=0
+12
View File
@@ -0,0 +1,12 @@
# Simplaudio
a simple music player that just works
the v1.x versions are built on a bad codebase, i am working on 2.0 every now and then but it will take a bit for it to be finished
the music player is very functual though
## Translations
I would apprechiate if you could help out with translations,
if you want to help you can find a .csv under the folder called "translation"
create a fork of the repo and modify the translations.csv file with a program like excel or libreoffice calc to include your language
then create a pull request including your translations
I will then merge the translations(annoy me if i forget)
Binary file not shown.
+19
View File
@@ -0,0 +1,19 @@
[remap]
importer="mp3"
type="AudioStreamMP3"
uid="uid://bwfw3l3iyv67o"
path="res://.godot/imported/roblox win sound effect.mp3-39d0ba8b033f858214671048098e2f18.mp3str"
[deps]
source_file="res://roblox win sound effect.mp3"
dest_files=["res://.godot/imported/roblox win sound effect.mp3-39d0ba8b033f858214671048098e2f18.mp3str"]
[params]
loop=false
loop_offset=0
bpm=0
beat_count=0
bar_beats=4
BIN
View File
Binary file not shown.

Before

Width:  |  Height:  |  Size: 450 B

After

Width:  |  Height:  |  Size: 8.0 KiB

+33 -37
View File
@@ -1,5 +1,5 @@
extends LineEdit
@onready var search_results: PopupMenu = $"../SearchResults"
@onready var search_results: SearchResults = $"../SearchResults"
var values:Dictionary = {}
var ErrorMargin:float = 0.9
@@ -8,8 +8,7 @@ var currentTime:float
var TextChanged:bool
# Called when the node enters the scene tree for the first time.
func _ready() -> void:
search_results.popup_window = false
search_results.unfocusable = true
pass
# Called every frame. 'delta' is the elapsed time since the previous frame.
@@ -17,46 +16,43 @@ func _process(delta: float) -> void:
currentTime -= delta
if TextChanged:
if currentTime < 0:
release_focus()
TextChanged = false
search_results.clear(true)
values.clear()
currentTime = updatetime
var _i:int = 0
var _s:int = 0
for song:String in owner.textSongs:
var margin:float
var fragments:Array
#print(int((text.length() / 2.0) + 0.5))
for num in range(int((text.length() / 2.0) + 0.5)):
if text.to_lower().substr(int(num*2),2):
fragments.append(text.to_lower().substr(int(num*2),2))
elif text.to_lower().substr(int(num*2),1):
fragments.append(text.to_lower().substr(int(num*2),1))
var amountOfFrags:int
for fragment:String in fragments:
if song.to_lower().containsn(fragment):
amountOfFrags +=1
margin = float(amountOfFrags) / fragments.size()
if margin > ErrorMargin:
search_results.add_item(song.replace(".mp3","") )
values[_i] = _s
_i += 1
_s += 1
updateResults()
func updateResults():
release_focus()
TextChanged = false
search_results.clear()
values.clear()
currentTime = updatetime
var _i:int = 0
var _s:int = 0
for song:String in owner.textSongs:
var margin:float
var fragments:Array
#print(int((text.length() / 2.0) + 0.5))
for num in range(int((text.length() / 2.0) + 0.5)):
if text.to_lower().substr(int(num*2),2):
fragments.append(text.to_lower().substr(int(num*2),2))
elif text.to_lower().substr(int(num*2),1):
fragments.append(text.to_lower().substr(int(num*2),1))
var amountOfFrags:int
for fragment:String in fragments:
if song.to_lower().containsn(fragment):
amountOfFrags +=1
margin = float(amountOfFrags) / fragments.size()
if margin > ErrorMargin:
search_results.add_item(song)
values[_i] = _s
_i += 1
_s += 1
func _on_search_results_index_pressed(index: int) -> void:
print("index " + str(index))
owner.SetSong(values[index])
func _input(event):
if (event is InputEventMouseButton) and event.pressed:
var evLocal = make_input_local(event)
if !Rect2(Vector2(0,0),Vector2(search_results.size.y+ size.y,size.x)).has_point(evLocal.position):
search_results.hide()
func _on_text_submitted(new_text: String) -> void:
TextChanged = true
if !search_results.visible:
+1
View File
@@ -0,0 +1 @@
uid://cchutywgopaq4
+33
View File
@@ -0,0 +1,33 @@
extends Control
var SongName:String
var CurrentlyPlaying:bool
var songidx:int
@onready var songname: Button = $HBoxContainer/Songname
@onready var dropdown: Button = $HBoxContainer/Dropdown
@onready var popup_menu: PopupMenu = $PopupMenu
signal PlayPressed
signal DeletePressed
# Called when the node enters the scene tree for the first time.
func _ready() -> void:
songname.text = SongName
popup_menu.index_pressed.connect(popupPressed)
func popupPressed(idx:int):
if idx == 0:
DeletePressed.emit(songidx)
# Called every frame. 'delta' is the elapsed time since the previous frame.
func _process(delta: float) -> void:
dropdown.visible = songname.is_hovered() or dropdown.is_hovered()
func _on_songname_pressed() -> void:
PlayPressed.emit(songidx)
func _on_dropdown_pressed() -> void:
popup_menu.show()
popup_menu.position = get_global_mouse_position()
+1
View File
@@ -0,0 +1 @@
uid://c3aaxhp0oim08
+54
View File
@@ -0,0 +1,54 @@
[gd_scene load_steps=3 format=3 uid="uid://ctqcbjrmxaqsk"]
[ext_resource type="Script" uid="uid://c3aaxhp0oim08" path="res://search_item.gd" id="1_j4126"]
[ext_resource type="Texture2D" uid="uid://dwvy6crqhardn" path="res://Dropdown.png" id="2_hicj1"]
[node name="SearchItem" type="Control"]
custom_minimum_size = Vector2(0, 30)
layout_mode = 3
anchors_preset = 14
anchor_top = 0.5
anchor_right = 1.0
anchor_bottom = 0.5
grow_horizontal = 2
grow_vertical = 2
size_flags_horizontal = 3
size_flags_vertical = 4
script = ExtResource("1_j4126")
[node name="HBoxContainer" type="HBoxContainer" parent="."]
custom_minimum_size = Vector2(700, 32)
layout_mode = 1
anchors_preset = 4
anchor_top = 0.5
anchor_bottom = 0.5
offset_top = -16.0
offset_right = 700.0
offset_bottom = 16.0
grow_vertical = 2
alignment = 1
[node name="Dropdown" type="Button" parent="HBoxContainer"]
custom_minimum_size = Vector2(20, 0)
layout_mode = 2
tooltip_text = "delete song from hard-drive"
focus_mode = 0
icon = ExtResource("2_hicj1")
flat = true
icon_alignment = 1
expand_icon = true
[node name="Songname" type="Button" parent="HBoxContainer"]
layout_mode = 2
size_flags_horizontal = 3
focus_mode = 0
flat = true
alignment = 0
[node name="PopupMenu" type="PopupMenu" parent="."]
item_count = 1
item_0/text = "DELETE"
item_0/id = 0
[connection signal="pressed" from="HBoxContainer/Dropdown" to="." method="_on_dropdown_pressed"]
[connection signal="pressed" from="HBoxContainer/Songname" to="." method="_on_songname_pressed"]
+48
View File
@@ -0,0 +1,48 @@
class_name SearchResults
extends Control
signal index_pressed
signal song_deleted
const SEARCH_ITEM = preload("res://search_item.tscn")
@onready var item_container: VBoxContainer = $Control/ItemContainer
var SongsAmount:int
@onready var parent:MainScene = owner
# Called when the node enters the scene tree for the first time.
func _ready() -> void:
pass # Replace with function body.
# Called every frame. 'delta' is the elapsed time since the previous frame.
func _process(delta: float) -> void:
pass
func add_item(text:String):
var child = SEARCH_ITEM.instantiate()
child.SongName = text.replace(".mp3", "")
child.songidx = parent.textSongs.find(text)
SongsAmount+=1
child.PlayPressed.connect(songSelected)
child.DeletePressed.connect(deletePressed)
item_container.add_child(child)
func clear():
SongsAmount = 0
for child in item_container.get_children():
child.queue_free()
func songSelected(idx:int):
index_pressed.emit(idx)
func _input(event):
if (event is InputEventMouseButton) and event.pressed:
var evLocal = make_input_local(event)
if !Rect2(Vector2(0,0),Vector2(size.x,size.y)).has_point(evLocal.position):
hide()
func deletePressed(idx:int):
song_deleted.emit(idx)
+1
View File
@@ -0,0 +1 @@
uid://d0hvudugo3d37
+42
View File
@@ -0,0 +1,42 @@
[gd_scene load_steps=2 format=3 uid="uid://bel6i6wdbexw4"]
[ext_resource type="Script" uid="uid://d0hvudugo3d37" path="res://search_results.gd" id="1_mcn1o"]
[node name="SearchResults" type="Control"]
layout_mode = 3
anchors_preset = 5
anchor_left = 0.5
anchor_right = 0.5
offset_left = -311.5
offset_right = 311.5
offset_bottom = 300.0
grow_horizontal = 2
script = ExtResource("1_mcn1o")
[node name="ColorRect" type="ColorRect" parent="."]
layout_mode = 1
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
size_flags_horizontal = 3
size_flags_vertical = 3
color = Color(0.14902, 0.14902, 0.14902, 1)
[node name="Control" type="ScrollContainer" parent="."]
layout_mode = 1
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
size_flags_horizontal = 3
size_flags_vertical = 3
follow_focus = true
horizontal_scroll_mode = 0
[node name="ItemContainer" type="VBoxContainer" parent="Control"]
layout_mode = 2
size_flags_horizontal = 3
size_flags_vertical = 3
+1 -1
View File
@@ -1,7 +1,7 @@
extends Button
@onready var search_bar: LineEdit = $"../SearchBar"
@onready var songs_menu: MenuButton = $"../SongsMenu"
@onready var songs_menu: Button = $"../SongsMenu"
@export var PressedIcon:Texture2D
@export var NotPressedIcon:Texture2D
+1
View File
@@ -0,0 +1 @@
uid://c2t3ignwqoplj
+18 -5
View File
@@ -1,10 +1,23 @@
extends Button
@onready var playlists_panel: Control = $"../PlaylistsPanel"
@onready var playlists_panel: Control = $"../PlaylistPanelHolder/PlaylistsPanel"
var currentlyExtending:bool
var Target:float = 50
func _on_toggled(toggled_on: bool) -> void:
if toggled_on:
func _process(delta: float) -> void:
if currentlyExtending:
playlists_panel.position.x = clamp(lerp(playlists_panel.position.x,Target,0.25),0,100)
else:
playlists_panel.position.x -=1
playlists_panel.position.x = clamp(lerp(Target,playlists_panel.position.x,1.25),0,100)
playlists_panel.modulate.a = playlists_panel.position.x / Target
if playlists_panel.position.x > 1:
playlists_panel.show()
else:
playlists_panel.hide()
func _on_toggled(toggled_on: bool) -> void:
if toggled_on:
currentlyExtending = true
playlists_panel.position.x = 1
else:
currentlyExtending = false
+1
View File
@@ -0,0 +1 @@
uid://dv2vjibopktug

Some files were not shown because too many files have changed in this diff Show More