Compare commits
42 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| a439c71e56 | |||
| 2d295b3c82 | |||
| 4b96f9aa46 | |||
| a3306d29bd | |||
| 0907d6baea | |||
| 59bac356e8 | |||
| f9edac3965 | |||
| 0d04eca330 | |||
| 11b3e7512d | |||
| 3093f6fb6b | |||
| dd3d64bdfb | |||
| f28d92a498 | |||
| 750d0f844a | |||
| f7ed6749bf | |||
| 5a5d6f90e6 | |||
| b4fb35ceeb | |||
| cbdb3a4e52 | |||
| 0c21592f91 | |||
| dde309291e | |||
| 4a83c33452 | |||
| accd1fe26f | |||
| 45b758627e | |||
| 833bfc3650 | |||
| 8557adbed5 | |||
| 891bfc7382 | |||
| 424e591064 | |||
| 810d5c40de | |||
| 81c30245c4 | |||
| e8403a2caf | |||
| 7947422027 | |||
| f14a8170d6 | |||
| 35810868fb | |||
| c418b417ec | |||
| 99d4b8dfcc | |||
| e77c7da068 | |||
| ed376a728b | |||
| 5da51b2999 | |||
| 3a8ec2e6de | |||
| d87a69fc9f | |||
| 3747eb6f8c | |||
| a602821d7b | |||
| b4b1dcdc4a |
@@ -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.
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
uid://dgwslfj43mu1y
|
||||||
|
Before Width: | Height: | Size: 136 KiB |
@@ -0,0 +1 @@
|
|||||||
|
uid://cv5aoaprqfuhx
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
uid://cf1rsngucr7e2
|
||||||
|
Before Width: | Height: | Size: 769 B After Width: | Height: | Size: 4.8 KiB |
@@ -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
|
||||||
|
Before Width: | Height: | Size: 766 B After Width: | Height: | Size: 6.6 KiB |
|
After Width: | Height: | Size: 271 KiB |
@@ -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
|
||||||
|
After Width: | Height: | Size: 782 KiB |
@@ -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
|
||||||
|
Before Width: | Height: | Size: 935 B After Width: | Height: | Size: 6.6 KiB |
|
Before Width: | Height: | Size: 717 B After Width: | Height: | Size: 2.9 KiB |
@@ -0,0 +1 @@
|
|||||||
|
uid://b8g2xx06g626m
|
||||||
@@ -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://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="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://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://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://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="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" uid="uid://cv5aoaprqfuhx" path="res://CoverShader.gdshader" id="8_4531v"]
|
||||||
[ext_resource type="Shader" path="res://Background1.gdshader" id="8_xtnau"]
|
[ext_resource type="Shader" uid="uid://dgwslfj43mu1y" path="res://Background1.gdshader" id="8_xtnau"]
|
||||||
[ext_resource type="Shader" path="res://Main.gdshader" id="10_20857"]
|
[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://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="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" uid="uid://dg68hvw773xu6" path="res://cover.gd" id="12_3v50a"]
|
||||||
[ext_resource type="Script" path="res://playlists_panel.gd" id="12_8ie8y"]
|
[ext_resource type="Script" uid="uid://bxc2fqwlm5ea5" 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://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="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" uid="uid://cchutywgopaq4" path="res://search_bar.gd" id="12_mr42x"]
|
||||||
[ext_resource type="Script" path="res://select_playlist.gd" id="12_of5fe"]
|
[ext_resource type="Script" uid="uid://dv2vjibopktug" 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://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="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="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="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" uid="uid://bx75h6xic1hi7" path="res://Spinning.gd" id="14_rhw4k"]
|
||||||
[ext_resource type="Script" path="res://yt_tab_button.gd" id="16_2t15p"]
|
[ext_resource type="Script" uid="uid://chdf40dyj73pq" 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://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="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" uid="uid://drqx8pjalsxqr" 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" uid="uid://cf1rsngucr7e2" path="res://CustomButtonColor.gd" id="32_pwgec"]
|
||||||
[ext_resource type="Script" 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"]
|
[sub_resource type="ShaderMaterial" id="ShaderMaterial_kvkfy"]
|
||||||
shader = ExtResource("8_xtnau")
|
shader = ExtResource("8_xtnau")
|
||||||
@@ -159,6 +165,62 @@ font_size = 31
|
|||||||
[sub_resource type="LabelSettings" id="LabelSettings_ivhc6"]
|
[sub_resource type="LabelSettings" id="LabelSettings_ivhc6"]
|
||||||
font_size = 20
|
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"]
|
[node name="Node2D" type="Control"]
|
||||||
layout_mode = 3
|
layout_mode = 3
|
||||||
anchors_preset = 15
|
anchors_preset = 15
|
||||||
@@ -188,18 +250,19 @@ anchor_right = 1.0
|
|||||||
anchor_bottom = 1.0
|
anchor_bottom = 1.0
|
||||||
grow_horizontal = 2
|
grow_horizontal = 2
|
||||||
grow_vertical = 2
|
grow_vertical = 2
|
||||||
texture = ExtResource("2_wf35v")
|
texture = ExtResource("5_8v24s")
|
||||||
|
expand_mode = 3
|
||||||
stretch_mode = 6
|
stretch_mode = 6
|
||||||
|
|
||||||
[node name="Evening" type="TextureRect" parent="."]
|
[node name="Evening" type="TextureRect" parent="."]
|
||||||
visible = false
|
|
||||||
layout_mode = 1
|
layout_mode = 1
|
||||||
anchors_preset = 15
|
anchors_preset = 15
|
||||||
anchor_right = 1.0
|
anchor_right = 1.0
|
||||||
anchor_bottom = 1.0
|
anchor_bottom = 1.0
|
||||||
grow_horizontal = 2
|
grow_horizontal = 2
|
||||||
grow_vertical = 2
|
grow_vertical = 2
|
||||||
texture = ExtResource("6_5vm0w")
|
texture = ExtResource("6_hvupl")
|
||||||
|
expand_mode = 3
|
||||||
stretch_mode = 6
|
stretch_mode = 6
|
||||||
|
|
||||||
[node name="Nighttime" type="TextureRect" parent="."]
|
[node name="Nighttime" type="TextureRect" parent="."]
|
||||||
@@ -282,7 +345,7 @@ offset_bottom = 80.0
|
|||||||
focus_mode = 0
|
focus_mode = 0
|
||||||
toggle_mode = true
|
toggle_mode = true
|
||||||
shortcut = SubResource("Shortcut_vp2fh")
|
shortcut = SubResource("Shortcut_vp2fh")
|
||||||
text = "Playlists"
|
text = "PLAYLIST"
|
||||||
script = ExtResource("12_of5fe")
|
script = ExtResource("12_of5fe")
|
||||||
|
|
||||||
[node name="PlaylistPanelHolder" type="Control" parent="."]
|
[node name="PlaylistPanelHolder" type="Control" parent="."]
|
||||||
@@ -297,7 +360,6 @@ grow_vertical = 2
|
|||||||
metadata/_edit_use_anchors_ = true
|
metadata/_edit_use_anchors_ = true
|
||||||
|
|
||||||
[node name="PlaylistsPanel" type="Control" parent="PlaylistPanelHolder"]
|
[node name="PlaylistsPanel" type="Control" parent="PlaylistPanelHolder"]
|
||||||
layout_mode = 2
|
|
||||||
anchors_preset = 0
|
anchors_preset = 0
|
||||||
anchor_bottom = 1.0
|
anchor_bottom = 1.0
|
||||||
offset_left = 19.0
|
offset_left = 19.0
|
||||||
@@ -352,8 +414,7 @@ alignment = 1
|
|||||||
custom_minimum_size = Vector2(155, 42.335)
|
custom_minimum_size = Vector2(155, 42.335)
|
||||||
layout_mode = 2
|
layout_mode = 2
|
||||||
focus_mode = 0
|
focus_mode = 0
|
||||||
text = "Create
|
text = "PLAYLIST_CREATE"
|
||||||
Playlist"
|
|
||||||
|
|
||||||
[node name="Control" type="Control" parent="PlaylistPanelHolder/PlaylistsPanel/PlaylistsContainer/VBoxContainer/HBoxContainer"]
|
[node name="Control" type="Control" parent="PlaylistPanelHolder/PlaylistsPanel/PlaylistsContainer/VBoxContainer/HBoxContainer"]
|
||||||
custom_minimum_size = Vector2(7.55, 0)
|
custom_minimum_size = Vector2(7.55, 0)
|
||||||
@@ -364,7 +425,7 @@ custom_minimum_size = Vector2(155, 42.335)
|
|||||||
layout_mode = 2
|
layout_mode = 2
|
||||||
focus_mode = 0
|
focus_mode = 0
|
||||||
toggle_mode = true
|
toggle_mode = true
|
||||||
text = "Play all"
|
text = "PLAYALL"
|
||||||
|
|
||||||
[node name="PlaylistsHolder" type="VBoxContainer" parent="PlaylistPanelHolder/PlaylistsPanel/PlaylistsContainer/VBoxContainer"]
|
[node name="PlaylistsHolder" type="VBoxContainer" parent="PlaylistPanelHolder/PlaylistsPanel/PlaylistsContainer/VBoxContainer"]
|
||||||
layout_mode = 2
|
layout_mode = 2
|
||||||
@@ -372,7 +433,6 @@ size_flags_vertical = 4
|
|||||||
alignment = 1
|
alignment = 1
|
||||||
|
|
||||||
[node name="YtTabButton" type="Button" parent="."]
|
[node name="YtTabButton" type="Button" parent="."]
|
||||||
texture_filter = 1
|
|
||||||
layout_mode = 1
|
layout_mode = 1
|
||||||
anchors_preset = -1
|
anchors_preset = -1
|
||||||
anchor_left = 1.0
|
anchor_left = 1.0
|
||||||
@@ -387,6 +447,7 @@ scale = Vector2(0.79, 0.79)
|
|||||||
focus_mode = 0
|
focus_mode = 0
|
||||||
toggle_mode = true
|
toggle_mode = true
|
||||||
icon = ExtResource("29_v44vi")
|
icon = ExtResource("29_v44vi")
|
||||||
|
expand_icon = true
|
||||||
script = ExtResource("16_2t15p")
|
script = ExtResource("16_2t15p")
|
||||||
|
|
||||||
[node name="YoutubeMenuHolder" type="Control" parent="."]
|
[node name="YoutubeMenuHolder" type="Control" parent="."]
|
||||||
@@ -423,7 +484,7 @@ color = Color(0.14902, 0.14902, 0.14902, 1)
|
|||||||
layout_mode = 1
|
layout_mode = 1
|
||||||
offset_right = 229.0
|
offset_right = 229.0
|
||||||
offset_bottom = 47.0
|
offset_bottom = 47.0
|
||||||
placeholder_text = "Link to download"
|
placeholder_text = "DOWNLOAD_LINK"
|
||||||
|
|
||||||
[node name="YTDownload" type="Button" parent="YoutubeMenuHolder/Youtube menu"]
|
[node name="YTDownload" type="Button" parent="YoutubeMenuHolder/Youtube menu"]
|
||||||
layout_mode = 1
|
layout_mode = 1
|
||||||
@@ -432,7 +493,7 @@ offset_top = 70.0
|
|||||||
offset_right = 88.0
|
offset_right = 88.0
|
||||||
offset_bottom = 110.0
|
offset_bottom = 110.0
|
||||||
focus_mode = 0
|
focus_mode = 0
|
||||||
text = "Download"
|
text = "DOWNLOAD"
|
||||||
|
|
||||||
[node name="LoadingIMG" type="Sprite2D" parent="YoutubeMenuHolder/Youtube menu"]
|
[node name="LoadingIMG" type="Sprite2D" parent="YoutubeMenuHolder/Youtube menu"]
|
||||||
position = Vector2(108, 91)
|
position = Vector2(108, 91)
|
||||||
@@ -447,7 +508,7 @@ offset_left = 1.99998
|
|||||||
offset_top = 49.0
|
offset_top = 49.0
|
||||||
offset_right = 227.0
|
offset_right = 227.0
|
||||||
offset_bottom = 72.0
|
offset_bottom = 72.0
|
||||||
text = "NOTE: speeds depend on your internet"
|
text = "DOWNLOAD_NOTE"
|
||||||
label_settings = SubResource("LabelSettings_fiiw4")
|
label_settings = SubResource("LabelSettings_fiiw4")
|
||||||
|
|
||||||
[node name="HelpButton" type="Button" parent="YoutubeMenuHolder/Youtube menu"]
|
[node name="HelpButton" type="Button" parent="YoutubeMenuHolder/Youtube menu"]
|
||||||
@@ -466,7 +527,7 @@ grow_vertical = 0
|
|||||||
focus_mode = 0
|
focus_mode = 0
|
||||||
text = "?"
|
text = "?"
|
||||||
script = ExtResource("17_4b8oh")
|
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="."]
|
[node name="CreatePlaylistsMenu" type="Control" parent="."]
|
||||||
visible = false
|
visible = false
|
||||||
@@ -489,11 +550,15 @@ grow_vertical = 2
|
|||||||
color = Color(0.14902, 0.14902, 0.14902, 1)
|
color = Color(0.14902, 0.14902, 0.14902, 1)
|
||||||
|
|
||||||
[node name="FileDialog" type="FileDialog" parent="CreatePlaylistsMenu"]
|
[node name="FileDialog" type="FileDialog" parent="CreatePlaylistsMenu"]
|
||||||
title = "Open a Directory"
|
title = "DIR_OPEN"
|
||||||
|
initial_position = 2
|
||||||
size = Vector2i(352, 180)
|
size = Vector2i(352, 180)
|
||||||
ok_button_text = "Select Current Folder"
|
ok_button_text = "DIR_OPEN"
|
||||||
|
cancel_button_text = "CANCEL"
|
||||||
file_mode = 2
|
file_mode = 2
|
||||||
access = 2
|
access = 2
|
||||||
|
filters = PackedStringArray("*")
|
||||||
|
show_hidden_files = true
|
||||||
use_native_dialog = true
|
use_native_dialog = true
|
||||||
|
|
||||||
[node name="ScrollContainer" type="ScrollContainer" parent="CreatePlaylistsMenu"]
|
[node name="ScrollContainer" type="ScrollContainer" parent="CreatePlaylistsMenu"]
|
||||||
@@ -515,14 +580,14 @@ size_flags_horizontal = 3
|
|||||||
[node name="Title" type="Label" parent="CreatePlaylistsMenu/ScrollContainer/VBoxContainer"]
|
[node name="Title" type="Label" parent="CreatePlaylistsMenu/ScrollContainer/VBoxContainer"]
|
||||||
layout_mode = 2
|
layout_mode = 2
|
||||||
size_flags_horizontal = 4
|
size_flags_horizontal = 4
|
||||||
text = "CREATE PLAYLIST"
|
text = "PLAYLIST_CREATE"
|
||||||
label_settings = SubResource("LabelSettings_v1ivf")
|
label_settings = SubResource("LabelSettings_v1ivf")
|
||||||
|
|
||||||
[node name="PlaylistName" type="LineEdit" parent="CreatePlaylistsMenu/ScrollContainer/VBoxContainer"]
|
[node name="PlaylistName" type="LineEdit" parent="CreatePlaylistsMenu/ScrollContainer/VBoxContainer"]
|
||||||
custom_minimum_size = Vector2(325.08, 0)
|
custom_minimum_size = Vector2(325.08, 0)
|
||||||
layout_mode = 2
|
layout_mode = 2
|
||||||
size_flags_horizontal = 4
|
size_flags_horizontal = 4
|
||||||
placeholder_text = "Playlist name"
|
placeholder_text = "PLAYLIST_NAME"
|
||||||
|
|
||||||
[node name="GoodIndicator" type="Label" parent="CreatePlaylistsMenu/ScrollContainer/VBoxContainer"]
|
[node name="GoodIndicator" type="Label" parent="CreatePlaylistsMenu/ScrollContainer/VBoxContainer"]
|
||||||
layout_mode = 2
|
layout_mode = 2
|
||||||
@@ -536,12 +601,12 @@ layout_mode = 2
|
|||||||
[node name="SelectDirButton" type="Button" parent="CreatePlaylistsMenu/ScrollContainer/VBoxContainer"]
|
[node name="SelectDirButton" type="Button" parent="CreatePlaylistsMenu/ScrollContainer/VBoxContainer"]
|
||||||
layout_mode = 2
|
layout_mode = 2
|
||||||
size_flags_horizontal = 4
|
size_flags_horizontal = 4
|
||||||
text = "Select directory"
|
text = "DIR_SELECT"
|
||||||
|
|
||||||
[node name="CurrentDirectory" type="Label" parent="CreatePlaylistsMenu/ScrollContainer/VBoxContainer"]
|
[node name="CurrentDirectory" type="Label" parent="CreatePlaylistsMenu/ScrollContainer/VBoxContainer"]
|
||||||
layout_mode = 2
|
layout_mode = 2
|
||||||
size_flags_horizontal = 4
|
size_flags_horizontal = 4
|
||||||
text = "No directory selected"
|
text = "DIR_NONE"
|
||||||
|
|
||||||
[node name="Seperator2" type="Control" parent="CreatePlaylistsMenu/ScrollContainer/VBoxContainer"]
|
[node name="Seperator2" type="Control" parent="CreatePlaylistsMenu/ScrollContainer/VBoxContainer"]
|
||||||
custom_minimum_size = Vector2(0, 14.865)
|
custom_minimum_size = Vector2(0, 14.865)
|
||||||
@@ -553,7 +618,7 @@ layout_mode = 2
|
|||||||
size_flags_horizontal = 4
|
size_flags_horizontal = 4
|
||||||
size_flags_vertical = 4
|
size_flags_vertical = 4
|
||||||
disabled = true
|
disabled = true
|
||||||
text = "Create Playlist"
|
text = "PLAYLIST_CREATE"
|
||||||
|
|
||||||
[node name="CloseButton" type="Button" parent="CreatePlaylistsMenu"]
|
[node name="CloseButton" type="Button" parent="CreatePlaylistsMenu"]
|
||||||
layout_mode = 1
|
layout_mode = 1
|
||||||
@@ -566,6 +631,7 @@ grow_horizontal = 0
|
|||||||
focus_mode = 0
|
focus_mode = 0
|
||||||
icon = ExtResource("14_mioc4")
|
icon = ExtResource("14_mioc4")
|
||||||
flat = true
|
flat = true
|
||||||
|
expand_icon = true
|
||||||
|
|
||||||
[node name="RandomizeList" type="Button" parent="."]
|
[node name="RandomizeList" type="Button" parent="."]
|
||||||
layout_mode = 1
|
layout_mode = 1
|
||||||
@@ -579,13 +645,14 @@ offset_bottom = 80.0
|
|||||||
grow_horizontal = 0
|
grow_horizontal = 0
|
||||||
focus_mode = 0
|
focus_mode = 0
|
||||||
shortcut = SubResource("Shortcut_axi6u")
|
shortcut = SubResource("Shortcut_axi6u")
|
||||||
text = "Randomize"
|
text = "RANDOMIZE"
|
||||||
|
|
||||||
[node name="FileDialog" type="FileDialog" parent="."]
|
[node name="FileDialog" type="FileDialog" parent="."]
|
||||||
title = "Open a Directory"
|
title = "DIR_OPEN"
|
||||||
position = Vector2i(28, 115)
|
position = Vector2i(28, 115)
|
||||||
size = Vector2i(576, 507)
|
size = Vector2i(833, 507)
|
||||||
ok_button_text = "Select Current Folder"
|
ok_button_text = "DIR_OPEN"
|
||||||
|
cancel_button_text = "CANCEL"
|
||||||
file_mode = 2
|
file_mode = 2
|
||||||
access = 2
|
access = 2
|
||||||
use_native_dialog = true
|
use_native_dialog = true
|
||||||
@@ -608,6 +675,7 @@ scale = Vector2(0.5, 0.5)
|
|||||||
focus_mode = 0
|
focus_mode = 0
|
||||||
shortcut = SubResource("Shortcut_0ov5v")
|
shortcut = SubResource("Shortcut_0ov5v")
|
||||||
icon = ExtResource("8_5v7u3")
|
icon = ExtResource("8_5v7u3")
|
||||||
|
expand_icon = true
|
||||||
|
|
||||||
[node name="CurrentProgress" type="HSlider" parent="."]
|
[node name="CurrentProgress" type="HSlider" parent="."]
|
||||||
layout_mode = 1
|
layout_mode = 1
|
||||||
@@ -625,7 +693,6 @@ max_value = 1000.0
|
|||||||
ticks_on_borders = true
|
ticks_on_borders = true
|
||||||
|
|
||||||
[node name="Skip" type="Button" parent="."]
|
[node name="Skip" type="Button" parent="."]
|
||||||
texture_filter = 1
|
|
||||||
layout_mode = 1
|
layout_mode = 1
|
||||||
anchors_preset = 3
|
anchors_preset = 3
|
||||||
anchor_left = 1.0
|
anchor_left = 1.0
|
||||||
@@ -638,12 +705,14 @@ offset_right = -65.0
|
|||||||
offset_bottom = -35.0
|
offset_bottom = -35.0
|
||||||
grow_horizontal = 0
|
grow_horizontal = 0
|
||||||
grow_vertical = 0
|
grow_vertical = 0
|
||||||
|
rotation = 3.14159
|
||||||
|
pivot_offset = Vector2(20, 20)
|
||||||
focus_mode = 0
|
focus_mode = 0
|
||||||
shortcut = SubResource("Shortcut_qw6pv")
|
shortcut = SubResource("Shortcut_qw6pv")
|
||||||
icon = ExtResource("3_4vx67")
|
icon = ExtResource("3_4vx67")
|
||||||
|
expand_icon = true
|
||||||
|
|
||||||
[node name="Loop" type="Button" parent="."]
|
[node name="Loop" type="Button" parent="."]
|
||||||
texture_filter = 1
|
|
||||||
layout_mode = 1
|
layout_mode = 1
|
||||||
anchors_preset = 3
|
anchors_preset = 3
|
||||||
anchor_left = 1.0
|
anchor_left = 1.0
|
||||||
@@ -659,6 +728,7 @@ grow_vertical = 0
|
|||||||
focus_mode = 0
|
focus_mode = 0
|
||||||
shortcut = SubResource("Shortcut_vot6l")
|
shortcut = SubResource("Shortcut_vot6l")
|
||||||
icon = ExtResource("5_c2g63")
|
icon = ExtResource("5_c2g63")
|
||||||
|
expand_icon = true
|
||||||
|
|
||||||
[node name="GoBack" type="Button" parent="."]
|
[node name="GoBack" type="Button" parent="."]
|
||||||
layout_mode = 1
|
layout_mode = 1
|
||||||
@@ -667,16 +737,17 @@ anchor_left = 1.0
|
|||||||
anchor_top = 1.0
|
anchor_top = 1.0
|
||||||
anchor_right = 1.0
|
anchor_right = 1.0
|
||||||
anchor_bottom = 1.0
|
anchor_bottom = 1.0
|
||||||
offset_left = -157.0
|
offset_left = -198.535
|
||||||
offset_top = -35.0
|
offset_top = -75.09
|
||||||
offset_right = -117.0
|
offset_right = -158.535
|
||||||
offset_bottom = 5.0
|
offset_bottom = -35.09
|
||||||
grow_horizontal = 0
|
grow_horizontal = 0
|
||||||
grow_vertical = 0
|
grow_vertical = 0
|
||||||
rotation = 3.14159
|
pivot_offset = Vector2(20, 20)
|
||||||
focus_mode = 0
|
focus_mode = 0
|
||||||
shortcut = SubResource("Shortcut_xu6hm")
|
shortcut = SubResource("Shortcut_xu6hm")
|
||||||
icon = ExtResource("3_4vx67")
|
icon = ExtResource("3_4vx67")
|
||||||
|
expand_icon = true
|
||||||
|
|
||||||
[node name="SongName" type="Label" parent="."]
|
[node name="SongName" type="Label" parent="."]
|
||||||
layout_mode = 1
|
layout_mode = 1
|
||||||
@@ -690,7 +761,7 @@ offset_right = -200.0
|
|||||||
offset_bottom = -95.0
|
offset_bottom = -95.0
|
||||||
grow_horizontal = 2
|
grow_horizontal = 2
|
||||||
grow_vertical = 0
|
grow_vertical = 0
|
||||||
text = "Please make a Playlist "
|
text = "(no song)"
|
||||||
label_settings = SubResource("LabelSettings_6prit")
|
label_settings = SubResource("LabelSettings_6prit")
|
||||||
clip_text = true
|
clip_text = true
|
||||||
text_overrun_behavior = 2
|
text_overrun_behavior = 2
|
||||||
@@ -707,7 +778,6 @@ offset_right = -199.0
|
|||||||
offset_bottom = -68.0
|
offset_bottom = -68.0
|
||||||
grow_horizontal = 2
|
grow_horizontal = 2
|
||||||
grow_vertical = 0
|
grow_vertical = 0
|
||||||
text = "Artist name"
|
|
||||||
label_settings = SubResource("LabelSettings_jg5vn")
|
label_settings = SubResource("LabelSettings_jg5vn")
|
||||||
clip_text = true
|
clip_text = true
|
||||||
text_overrun_behavior = 2
|
text_overrun_behavior = 2
|
||||||
@@ -724,7 +794,6 @@ offset_right = -199.0
|
|||||||
offset_bottom = -53.0
|
offset_bottom = -53.0
|
||||||
grow_horizontal = 2
|
grow_horizontal = 2
|
||||||
grow_vertical = 0
|
grow_vertical = 0
|
||||||
text = "Album"
|
|
||||||
label_settings = SubResource("LabelSettings_6um0v")
|
label_settings = SubResource("LabelSettings_6um0v")
|
||||||
clip_text = true
|
clip_text = true
|
||||||
text_overrun_behavior = 2
|
text_overrun_behavior = 2
|
||||||
@@ -734,9 +803,9 @@ layout_mode = 1
|
|||||||
anchors_preset = 1
|
anchors_preset = 1
|
||||||
anchor_left = 1.0
|
anchor_left = 1.0
|
||||||
anchor_right = 1.0
|
anchor_right = 1.0
|
||||||
offset_left = -318.0
|
offset_left = -320.0
|
||||||
offset_top = 24.0
|
offset_top = 24.0
|
||||||
offset_right = -246.0
|
offset_right = -248.0
|
||||||
offset_bottom = 96.0
|
offset_bottom = 96.0
|
||||||
grow_horizontal = 0
|
grow_horizontal = 0
|
||||||
scale = Vector2(0.79, 0.79)
|
scale = Vector2(0.79, 0.79)
|
||||||
@@ -744,6 +813,7 @@ focus_mode = 0
|
|||||||
toggle_mode = true
|
toggle_mode = true
|
||||||
shortcut = SubResource("Shortcut_g3fcr")
|
shortcut = SubResource("Shortcut_g3fcr")
|
||||||
icon = ExtResource("12_cv2gm")
|
icon = ExtResource("12_cv2gm")
|
||||||
|
expand_icon = true
|
||||||
script = ExtResource("13_5illk")
|
script = ExtResource("13_5illk")
|
||||||
PressedIcon = ExtResource("14_mioc4")
|
PressedIcon = ExtResource("14_mioc4")
|
||||||
NotPressedIcon = ExtResource("12_cv2gm")
|
NotPressedIcon = ExtResource("12_cv2gm")
|
||||||
@@ -759,12 +829,12 @@ offset_right = -328.0
|
|||||||
offset_bottom = 80.0
|
offset_bottom = 80.0
|
||||||
grow_horizontal = 2
|
grow_horizontal = 2
|
||||||
focus_mode = 1
|
focus_mode = 1
|
||||||
placeholder_text = "Search"
|
placeholder_text = "SONG_SEARCH"
|
||||||
alignment = 1
|
alignment = 1
|
||||||
caret_blink = true
|
caret_blink = true
|
||||||
script = ExtResource("12_mr42x")
|
script = ExtResource("12_mr42x")
|
||||||
|
|
||||||
[node name="SongsMenu" type="MenuButton" parent="."]
|
[node name="SongsMenu" type="Button" parent="."]
|
||||||
layout_mode = 1
|
layout_mode = 1
|
||||||
anchors_preset = -1
|
anchors_preset = -1
|
||||||
anchor_right = 1.0
|
anchor_right = 1.0
|
||||||
@@ -773,19 +843,23 @@ offset_top = 24.0
|
|||||||
offset_right = -328.0
|
offset_right = -328.0
|
||||||
offset_bottom = 80.0
|
offset_bottom = 80.0
|
||||||
grow_horizontal = 2
|
grow_horizontal = 2
|
||||||
text = "Select Songs"
|
focus_mode = 0
|
||||||
flat = false
|
text = "SONG_SELECT"
|
||||||
|
script = ExtResource("27_f8wx0")
|
||||||
|
|
||||||
[node name="SearchResults" type="PopupMenu" parent="."]
|
[node name="SearchResults" parent="." instance=ExtResource("27_g8wmp")]
|
||||||
handle_input_locally = false
|
visible = false
|
||||||
position = Vector2i(265, 80)
|
layout_mode = 1
|
||||||
size = Vector2i(623, 300)
|
anchors_preset = -1
|
||||||
wrap_controls = false
|
anchor_left = 0.0
|
||||||
max_size = Vector2i(625, 300)
|
anchor_right = 1.0
|
||||||
allow_search = false
|
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="."]
|
[node name="VolumeButton" type="Button" parent="."]
|
||||||
texture_filter = 1
|
|
||||||
layout_mode = 1
|
layout_mode = 1
|
||||||
anchors_preset = 3
|
anchors_preset = 3
|
||||||
anchor_left = 1.0
|
anchor_left = 1.0
|
||||||
@@ -801,6 +875,7 @@ grow_vertical = 0
|
|||||||
focus_mode = 0
|
focus_mode = 0
|
||||||
toggle_mode = true
|
toggle_mode = true
|
||||||
icon = ExtResource("6_3mi6c")
|
icon = ExtResource("6_3mi6c")
|
||||||
|
expand_icon = true
|
||||||
script = ExtResource("14_7q3ja")
|
script = ExtResource("14_7q3ja")
|
||||||
|
|
||||||
[node name="VolumeSlider" type="VSlider" parent="."]
|
[node name="VolumeSlider" type="VSlider" parent="."]
|
||||||
@@ -818,6 +893,7 @@ grow_horizontal = 0
|
|||||||
grow_vertical = 0
|
grow_vertical = 0
|
||||||
size_flags_horizontal = 1
|
size_flags_horizontal = 1
|
||||||
size_flags_vertical = 8
|
size_flags_vertical = 8
|
||||||
|
tooltip_text = "use Up/Down arrow keys to adjust"
|
||||||
focus_mode = 0
|
focus_mode = 0
|
||||||
value = 100.0
|
value = 100.0
|
||||||
|
|
||||||
@@ -832,14 +908,6 @@ offset_right = 179.0
|
|||||||
offset_bottom = -11.0
|
offset_bottom = -11.0
|
||||||
grow_vertical = 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="."]
|
[node name="Version" type="Label" parent="."]
|
||||||
layout_mode = 1
|
layout_mode = 1
|
||||||
anchors_preset = 3
|
anchors_preset = 3
|
||||||
@@ -851,7 +919,7 @@ offset_left = -64.0
|
|||||||
offset_top = -23.0
|
offset_top = -23.0
|
||||||
grow_horizontal = 0
|
grow_horizontal = 0
|
||||||
grow_vertical = 0
|
grow_vertical = 0
|
||||||
text = "v1.4.4"
|
text = "v1.6"
|
||||||
horizontal_alignment = 2
|
horizontal_alignment = 2
|
||||||
|
|
||||||
[node name="SettingsButton" type="Button" parent="."]
|
[node name="SettingsButton" type="Button" parent="."]
|
||||||
@@ -869,10 +937,12 @@ focus_mode = 0
|
|||||||
toggle_mode = true
|
toggle_mode = true
|
||||||
shortcut = SubResource("Shortcut_8p5o4")
|
shortcut = SubResource("Shortcut_8p5o4")
|
||||||
icon = ExtResource("11_esjel")
|
icon = ExtResource("11_esjel")
|
||||||
|
expand_icon = true
|
||||||
script = ExtResource("12_073mb")
|
script = ExtResource("12_073mb")
|
||||||
|
|
||||||
[node name="SettingsHolder" type="Control" parent="."]
|
[node name="SettingsHolder" type="Control" parent="."]
|
||||||
layout_mode = 1
|
layout_mode = 1
|
||||||
|
anchors_preset = 8
|
||||||
anchor_left = 0.5
|
anchor_left = 0.5
|
||||||
anchor_top = 0.5
|
anchor_top = 0.5
|
||||||
anchor_right = 0.5
|
anchor_right = 0.5
|
||||||
@@ -880,6 +950,7 @@ anchor_bottom = 0.5
|
|||||||
offset_top = -294.0
|
offset_top = -294.0
|
||||||
offset_bottom = -294.0
|
offset_bottom = -294.0
|
||||||
grow_horizontal = 2
|
grow_horizontal = 2
|
||||||
|
grow_vertical = 2
|
||||||
|
|
||||||
[node name="SettingsPopup" type="Control" parent="SettingsHolder"]
|
[node name="SettingsPopup" type="Control" parent="SettingsHolder"]
|
||||||
visible = false
|
visible = false
|
||||||
@@ -911,24 +982,24 @@ offset_bottom = 501.0
|
|||||||
|
|
||||||
[node name="WavDisclaimer" type="AcceptDialog" parent="."]
|
[node name="WavDisclaimer" type="AcceptDialog" parent="."]
|
||||||
transparent_bg = true
|
transparent_bg = true
|
||||||
title = "WAV disclaimer"
|
title = "!"
|
||||||
initial_position = 4
|
initial_position = 4
|
||||||
size = Vector2i(256, 100)
|
size = Vector2i(256, 100)
|
||||||
transparent = true
|
transparent = true
|
||||||
popup_window = true
|
popup_window = true
|
||||||
force_native = true
|
force_native = true
|
||||||
dialog_text = "wav files are not supported yet"
|
dialog_text = "WAV_DISCLAIMER"
|
||||||
|
|
||||||
[node name="PlaylistOrSong" type="ConfirmationDialog" parent="."]
|
[node name="PlaylistOrSong" type="ConfirmationDialog" parent="."]
|
||||||
|
title = "CONFIRM"
|
||||||
initial_position = 2
|
initial_position = 2
|
||||||
size = Vector2i(473, 106)
|
size = Vector2i(473, 106)
|
||||||
ok_button_text = "Download Playlist"
|
ok_button_text = "DL_LIST"
|
||||||
dialog_text = "Do you want to download the song or the Entire playlist?"
|
dialog_text = "DL_DIALOG"
|
||||||
dialog_autowrap = true
|
dialog_autowrap = true
|
||||||
cancel_button_text = "Download Song"
|
cancel_button_text = "DL_SONG"
|
||||||
|
|
||||||
[node name="UpdateChecker" type="Control" parent="."]
|
[node name="UpdateChecker" type="Control" parent="."]
|
||||||
visible = false
|
|
||||||
layout_mode = 1
|
layout_mode = 1
|
||||||
anchors_preset = 3
|
anchors_preset = 3
|
||||||
anchor_left = 1.0
|
anchor_left = 1.0
|
||||||
@@ -941,6 +1012,8 @@ grow_horizontal = 0
|
|||||||
grow_vertical = 0
|
grow_vertical = 0
|
||||||
script = ExtResource("30_byc5i")
|
script = ExtResource("30_byc5i")
|
||||||
errorColor = Color(0.981984, 0, 0.065929, 1)
|
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"]
|
[node name="HTTPRequest" type="HTTPRequest" parent="UpdateChecker"]
|
||||||
timeout = 5.0
|
timeout = 5.0
|
||||||
@@ -949,9 +1022,9 @@ timeout = 5.0
|
|||||||
|
|
||||||
[node name="ColorRect" type="ColorRect" parent="UpdateChecker"]
|
[node name="ColorRect" type="ColorRect" parent="UpdateChecker"]
|
||||||
layout_mode = 0
|
layout_mode = 0
|
||||||
offset_left = -214.0
|
offset_left = -292.0
|
||||||
offset_top = -144.0
|
offset_top = -256.0
|
||||||
offset_right = -24.0
|
offset_right = -10.0
|
||||||
offset_bottom = -44.0
|
offset_bottom = -44.0
|
||||||
color = Color(0.14902, 0.14902, 0.14902, 1)
|
color = Color(0.14902, 0.14902, 0.14902, 1)
|
||||||
|
|
||||||
@@ -960,30 +1033,29 @@ layout_mode = 1
|
|||||||
anchors_preset = 5
|
anchors_preset = 5
|
||||||
anchor_left = 0.5
|
anchor_left = 0.5
|
||||||
anchor_right = 0.5
|
anchor_right = 0.5
|
||||||
offset_left = -68.0
|
offset_left = -136.0
|
||||||
offset_right = 68.0
|
offset_right = 113.0
|
||||||
offset_bottom = 23.0
|
offset_bottom = 23.0
|
||||||
grow_horizontal = 2
|
grow_horizontal = 2
|
||||||
text = "Update Available!"
|
text = "UPDATE_AVAILABLE"
|
||||||
horizontal_alignment = 1
|
horizontal_alignment = 1
|
||||||
vertical_alignment = 1
|
vertical_alignment = 1
|
||||||
|
|
||||||
[node name="PatchNotesButton" type="Button" parent="UpdateChecker/ColorRect"]
|
[node name="Patchnotes" type="RichTextLabel" parent="UpdateChecker/ColorRect"]
|
||||||
z_index = 4
|
z_index = 2
|
||||||
layout_mode = 1
|
layout_mode = 1
|
||||||
anchors_preset = 14
|
anchors_preset = -1
|
||||||
anchor_top = 0.5
|
anchor_top = 0.150943
|
||||||
anchor_right = 1.0
|
anchor_right = 1.0
|
||||||
anchor_bottom = 0.5
|
anchor_bottom = 0.820755
|
||||||
offset_top = -24.0
|
|
||||||
offset_bottom = 12.0
|
|
||||||
grow_horizontal = 2
|
grow_horizontal = 2
|
||||||
grow_vertical = 2
|
grow_vertical = 2
|
||||||
text = "View patch notes"
|
text = "PatchNotes
|
||||||
flat = true
|
(!IT) for important updates"
|
||||||
script = ExtResource("31_hjsj1")
|
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
|
z_index = -1
|
||||||
layout_mode = 1
|
layout_mode = 1
|
||||||
anchors_preset = 15
|
anchors_preset = 15
|
||||||
@@ -991,9 +1063,7 @@ anchor_right = 1.0
|
|||||||
anchor_bottom = 1.0
|
anchor_bottom = 1.0
|
||||||
grow_horizontal = 2
|
grow_horizontal = 2
|
||||||
grow_vertical = 2
|
grow_vertical = 2
|
||||||
mouse_filter = 2
|
color = Color(0.257219, 0.338913, 0.352311, 1)
|
||||||
color = Color(0.19706, 0.279877, 0.326012, 1)
|
|
||||||
script = ExtResource("32_pwgec")
|
|
||||||
|
|
||||||
[node name="LinkButton" type="Button" parent="UpdateChecker/ColorRect"]
|
[node name="LinkButton" type="Button" parent="UpdateChecker/ColorRect"]
|
||||||
z_index = 1
|
z_index = 1
|
||||||
@@ -1005,10 +1075,10 @@ anchor_bottom = 1.0
|
|||||||
offset_top = -38.0
|
offset_top = -38.0
|
||||||
grow_horizontal = 2
|
grow_horizontal = 2
|
||||||
grow_vertical = 0
|
grow_vertical = 0
|
||||||
text = "Update"
|
text = "UPDATE"
|
||||||
flat = true
|
flat = true
|
||||||
|
|
||||||
[node name="ColorRect" type="ColorRect" parent="UpdateChecker/ColorRect/LinkButton"]
|
[node name="LinkBTTNBG" type="ColorRect" parent="UpdateChecker/ColorRect/LinkButton"]
|
||||||
z_index = -1
|
z_index = -1
|
||||||
layout_mode = 1
|
layout_mode = 1
|
||||||
anchors_preset = 15
|
anchors_preset = 15
|
||||||
@@ -1021,6 +1091,7 @@ color = Color(0.264012, 0.463229, 0.504783, 1)
|
|||||||
script = ExtResource("32_pwgec")
|
script = ExtResource("32_pwgec")
|
||||||
|
|
||||||
[node name="CloseBuen" type="Button" parent="UpdateChecker/ColorRect"]
|
[node name="CloseBuen" type="Button" parent="UpdateChecker/ColorRect"]
|
||||||
|
texture_filter = 1
|
||||||
layout_mode = 1
|
layout_mode = 1
|
||||||
anchors_preset = 1
|
anchors_preset = 1
|
||||||
anchor_left = 1.0
|
anchor_left = 1.0
|
||||||
@@ -1028,10 +1099,11 @@ anchor_right = 1.0
|
|||||||
offset_left = -72.0
|
offset_left = -72.0
|
||||||
offset_bottom = 72.0
|
offset_bottom = 72.0
|
||||||
grow_horizontal = 0
|
grow_horizontal = 0
|
||||||
scale = Vector2(0.25, 0.25)
|
scale = Vector2(0.4, 0.4)
|
||||||
pivot_offset = Vector2(72, 0)
|
pivot_offset = Vector2(72, 0)
|
||||||
icon = ExtResource("14_mioc4")
|
icon = ExtResource("14_mioc4")
|
||||||
flat = true
|
flat = true
|
||||||
|
expand_icon = true
|
||||||
|
|
||||||
[node name="UpdatingNotification" type="Control" parent="."]
|
[node name="UpdatingNotification" type="Control" parent="."]
|
||||||
visible = false
|
visible = false
|
||||||
@@ -1075,7 +1147,7 @@ offset_left = -20.0
|
|||||||
offset_right = 20.0
|
offset_right = 20.0
|
||||||
offset_bottom = 23.0
|
offset_bottom = 23.0
|
||||||
grow_horizontal = 2
|
grow_horizontal = 2
|
||||||
text = "Simplaudio is Updating!"
|
text = "S_UPDATING"
|
||||||
label_settings = SubResource("LabelSettings_b1152")
|
label_settings = SubResource("LabelSettings_b1152")
|
||||||
horizontal_alignment = 1
|
horizontal_alignment = 1
|
||||||
vertical_alignment = 1
|
vertical_alignment = 1
|
||||||
@@ -1090,10 +1162,7 @@ offset_top = 52.0
|
|||||||
offset_right = 142.0
|
offset_right = 142.0
|
||||||
offset_bottom = 153.0
|
offset_bottom = 153.0
|
||||||
grow_horizontal = 2
|
grow_horizontal = 2
|
||||||
text = "Please wait.
|
text = "S_UPT_NOTE"
|
||||||
Simplaudio will restart automatically
|
|
||||||
|
|
||||||
this wont take long"
|
|
||||||
horizontal_alignment = 1
|
horizontal_alignment = 1
|
||||||
|
|
||||||
[node name="LoadingIMG" type="Sprite2D" parent="UpdatingNotification"]
|
[node name="LoadingIMG" type="Sprite2D" parent="UpdatingNotification"]
|
||||||
@@ -1119,6 +1188,148 @@ grow_vertical = 2
|
|||||||
label_settings = SubResource("LabelSettings_ivhc6")
|
label_settings = SubResource("LabelSettings_ivhc6")
|
||||||
horizontal_alignment = 1
|
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="toggled" from="SelectPlaylist" to="SelectPlaylist" method="_on_toggled"]
|
||||||
[connection signal="pressed" from="PlaylistPanelHolder/PlaylistsPanel/PlaylistsContainer/VBoxContainer/HBoxContainer/CreatePlaylist" to="PlaylistPanelHolder/PlaylistsPanel" method="_on_create_playlist_pressed"]
|
[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="PlaylistPanelHolder/PlaylistsPanel/PlaylistsContainer/VBoxContainer/HBoxContainer/PlayAll" to="PlaylistPanelHolder/PlaylistsPanel" method="_on_play_all_toggled"]
|
||||||
@@ -1130,7 +1341,6 @@ horizontal_alignment = 1
|
|||||||
[connection signal="pressed" from="CreatePlaylistsMenu/CloseButton" to="CreatePlaylistsMenu" method="_on_close_button_pressed"]
|
[connection signal="pressed" from="CreatePlaylistsMenu/CloseButton" to="CreatePlaylistsMenu" method="_on_close_button_pressed"]
|
||||||
[connection signal="toggled" from="SearchToggle" to="SearchToggle" method="_on_toggled"]
|
[connection signal="toggled" from="SearchToggle" to="SearchToggle" method="_on_toggled"]
|
||||||
[connection signal="text_submitted" from="SearchBar" to="SearchBar" method="_on_text_submitted"]
|
[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="VolumeButton" to="VolumeButton" method="_on_toggled"]
|
||||||
[connection signal="toggled" from="SettingsButton" to="SettingsButton" 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/HTTPRequest" to="UpdateChecker" method="_on_http_request_completed"]
|
||||||
|
|||||||
@@ -0,0 +1 @@
|
|||||||
|
uid://rnxfmtoo2yn4
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
uid://cdigfnlqg2r8l
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
uid://bs5vnv3baji7f
|
||||||
|
Before Width: | Height: | Size: 728 B After Width: | Height: | Size: 4.3 KiB |
|
Before Width: | Height: | Size: 859 B After Width: | Height: | Size: 7.8 KiB |
@@ -1,6 +1,6 @@
|
|||||||
[gd_scene load_steps=4 format=3 uid="uid://c33qaelwn46f4"]
|
[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"]
|
[ext_resource type="Texture2D" uid="uid://dwvy6crqhardn" path="res://Dropdown.png" id="2_im6ur"]
|
||||||
|
|
||||||
[sub_resource type="LabelSettings" id="LabelSettings_ky8oc"]
|
[sub_resource type="LabelSettings" id="LabelSettings_ky8oc"]
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
[gd_scene load_steps=9 format=3 uid="uid://dqg674t6kun4e"]
|
[gd_scene load_steps=10 format=3 uid="uid://dqg674t6kun4e"]
|
||||||
|
|
||||||
[ext_resource type="Script" path="res://settings.gd" id="1_uaa7d"]
|
[ext_resource type="Script" uid="uid://vnpslgl788du" 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://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://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="Texture2D" uid="uid://pgij783wgbhn" path="res://File.png" id="2_jmen4"]
|
||||||
|
|
||||||
@@ -17,6 +17,9 @@ font_size = 11
|
|||||||
[sub_resource type="LabelSettings" id="LabelSettings_cwn10"]
|
[sub_resource type="LabelSettings" id="LabelSettings_cwn10"]
|
||||||
font_size = 15
|
font_size = 15
|
||||||
|
|
||||||
|
[sub_resource type="LabelSettings" id="LabelSettings_i51gs"]
|
||||||
|
font_size = 50
|
||||||
|
|
||||||
[node name="SettingsMenuChild" type="Control"]
|
[node name="SettingsMenuChild" type="Control"]
|
||||||
custom_minimum_size = Vector2(576, 493)
|
custom_minimum_size = Vector2(576, 493)
|
||||||
layout_mode = 3
|
layout_mode = 3
|
||||||
@@ -64,7 +67,7 @@ custom_minimum_size = Vector2(400, 26.975)
|
|||||||
layout_mode = 2
|
layout_mode = 2
|
||||||
size_flags_horizontal = 4
|
size_flags_horizontal = 4
|
||||||
size_flags_vertical = 3
|
size_flags_vertical = 3
|
||||||
text = "THIRD PARTY APPS"
|
text = "INTIGRATIONS"
|
||||||
label_settings = SubResource("LabelSettings_2bhor")
|
label_settings = SubResource("LabelSettings_2bhor")
|
||||||
horizontal_alignment = 1
|
horizontal_alignment = 1
|
||||||
vertical_alignment = 1
|
vertical_alignment = 1
|
||||||
@@ -74,13 +77,13 @@ autowrap_mode = 2
|
|||||||
layout_mode = 2
|
layout_mode = 2
|
||||||
size_flags_horizontal = 0
|
size_flags_horizontal = 0
|
||||||
focus_mode = 0
|
focus_mode = 0
|
||||||
text = "Discord Rich Presence"
|
text = "DRPC"
|
||||||
|
|
||||||
[node name="disclaimer" type="Label" parent="ScrollContainer/VBoxContainer"]
|
[node name="disclaimer" type="Label" parent="ScrollContainer/VBoxContainer"]
|
||||||
custom_minimum_size = Vector2(229.895, 0)
|
custom_minimum_size = Vector2(229.895, 0)
|
||||||
layout_mode = 2
|
layout_mode = 2
|
||||||
size_flags_horizontal = 0
|
size_flags_horizontal = 0
|
||||||
text = "NOTE: After disableing a restart is needed"
|
text = "DRPC_NOTE"
|
||||||
label_settings = SubResource("LabelSettings_p55k3")
|
label_settings = SubResource("LabelSettings_p55k3")
|
||||||
horizontal_alignment = 1
|
horizontal_alignment = 1
|
||||||
vertical_alignment = 1
|
vertical_alignment = 1
|
||||||
@@ -94,7 +97,7 @@ layout_mode = 2
|
|||||||
custom_minimum_size = Vector2(400, 26.975)
|
custom_minimum_size = Vector2(400, 26.975)
|
||||||
layout_mode = 2
|
layout_mode = 2
|
||||||
size_flags_vertical = 3
|
size_flags_vertical = 3
|
||||||
text = "LOOKs"
|
text = "LOOKS"
|
||||||
label_settings = SubResource("LabelSettings_2bhor")
|
label_settings = SubResource("LabelSettings_2bhor")
|
||||||
horizontal_alignment = 1
|
horizontal_alignment = 1
|
||||||
vertical_alignment = 1
|
vertical_alignment = 1
|
||||||
@@ -133,13 +136,13 @@ size_flags_horizontal = 0
|
|||||||
custom_minimum_size = Vector2(0, 25.35)
|
custom_minimum_size = Vector2(0, 25.35)
|
||||||
layout_mode = 2
|
layout_mode = 2
|
||||||
size_flags_horizontal = 4
|
size_flags_horizontal = 4
|
||||||
text = "Select Background"
|
text = "BS_SELECT"
|
||||||
|
|
||||||
[node name="ResetBG" type="Button" parent="ScrollContainer/VBoxContainer/VBoxContainer/HBoxContainer"]
|
[node name="ResetBG" type="Button" parent="ScrollContainer/VBoxContainer/VBoxContainer/HBoxContainer"]
|
||||||
custom_minimum_size = Vector2(0, 25.35)
|
custom_minimum_size = Vector2(0, 25.35)
|
||||||
layout_mode = 2
|
layout_mode = 2
|
||||||
size_flags_horizontal = 4
|
size_flags_horizontal = 4
|
||||||
text = "Reset BG"
|
text = "RESET_BG"
|
||||||
|
|
||||||
[node name="SelectBGDialog" type="FileDialog" parent="ScrollContainer/VBoxContainer"]
|
[node name="SelectBGDialog" type="FileDialog" parent="ScrollContainer/VBoxContainer"]
|
||||||
title = "Open a File"
|
title = "Open a File"
|
||||||
@@ -148,7 +151,7 @@ transient = false
|
|||||||
ok_button_text = "Open"
|
ok_button_text = "Open"
|
||||||
file_mode = 0
|
file_mode = 0
|
||||||
access = 2
|
access = 2
|
||||||
filters = PackedStringArray("*.png", "*.jpg", "*.jpeg", "*")
|
filters = PackedStringArray("*.png", "*.jpg ", "*.jpeg", "*.gif", "*")
|
||||||
show_hidden_files = true
|
show_hidden_files = true
|
||||||
use_native_dialog = true
|
use_native_dialog = true
|
||||||
|
|
||||||
@@ -160,7 +163,7 @@ layout_mode = 2
|
|||||||
custom_minimum_size = Vector2(400, 26.975)
|
custom_minimum_size = Vector2(400, 26.975)
|
||||||
layout_mode = 2
|
layout_mode = 2
|
||||||
size_flags_vertical = 3
|
size_flags_vertical = 3
|
||||||
text = "SOUND SETTINGS"
|
text = "SETTINGS_SOUND"
|
||||||
label_settings = SubResource("LabelSettings_2bhor")
|
label_settings = SubResource("LabelSettings_2bhor")
|
||||||
horizontal_alignment = 1
|
horizontal_alignment = 1
|
||||||
vertical_alignment = 1
|
vertical_alignment = 1
|
||||||
@@ -204,11 +207,11 @@ vertical_alignment = 1
|
|||||||
autowrap_mode = 2
|
autowrap_mode = 2
|
||||||
|
|
||||||
[node name="FUN" type="Label" parent="ScrollContainer/VBoxContainer/PitchAdjustSettings/PitchAdjustSettings"]
|
[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
|
layout_mode = 2
|
||||||
size_flags_horizontal = 4
|
size_flags_horizontal = 4
|
||||||
size_flags_vertical = 6
|
size_flags_vertical = 6
|
||||||
text = "pitch/speed"
|
text = "PITCH_SPEED"
|
||||||
horizontal_alignment = 1
|
horizontal_alignment = 1
|
||||||
vertical_alignment = 1
|
vertical_alignment = 1
|
||||||
autowrap_mode = 2
|
autowrap_mode = 2
|
||||||
@@ -217,7 +220,7 @@ autowrap_mode = 2
|
|||||||
layout_mode = 2
|
layout_mode = 2
|
||||||
size_flags_horizontal = 0
|
size_flags_horizontal = 0
|
||||||
focus_mode = 0
|
focus_mode = 0
|
||||||
text = "Reverb"
|
text = "REVERB"
|
||||||
|
|
||||||
[node name="ReverbSettings" type="VBoxContainer" parent="ScrollContainer/VBoxContainer"]
|
[node name="ReverbSettings" type="VBoxContainer" parent="ScrollContainer/VBoxContainer"]
|
||||||
visible = false
|
visible = false
|
||||||
@@ -260,7 +263,7 @@ custom_minimum_size = Vector2(94.52, 7.51)
|
|||||||
layout_mode = 2
|
layout_mode = 2
|
||||||
size_flags_horizontal = 4
|
size_flags_horizontal = 4
|
||||||
size_flags_vertical = 6
|
size_flags_vertical = 6
|
||||||
text = "Room size"
|
text = "ROOM_SIZE"
|
||||||
horizontal_alignment = 1
|
horizontal_alignment = 1
|
||||||
vertical_alignment = 1
|
vertical_alignment = 1
|
||||||
autowrap_mode = 2
|
autowrap_mode = 2
|
||||||
@@ -344,7 +347,7 @@ custom_minimum_size = Vector2(94.52, 7.51)
|
|||||||
layout_mode = 2
|
layout_mode = 2
|
||||||
size_flags_horizontal = 4
|
size_flags_horizontal = 4
|
||||||
size_flags_vertical = 6
|
size_flags_vertical = 6
|
||||||
text = "Spread"
|
text = "SPREAD"
|
||||||
horizontal_alignment = 1
|
horizontal_alignment = 1
|
||||||
vertical_alignment = 1
|
vertical_alignment = 1
|
||||||
autowrap_mode = 2
|
autowrap_mode = 2
|
||||||
@@ -364,7 +367,7 @@ script = ExtResource("2_1n4m6")
|
|||||||
layout_mode = 2
|
layout_mode = 2
|
||||||
size_flags_horizontal = 0
|
size_flags_horizontal = 0
|
||||||
focus_mode = 0
|
focus_mode = 0
|
||||||
text = "Compression"
|
text = "COMPRESSION"
|
||||||
|
|
||||||
[node name="CompressionContainer" type="VBoxContainer" parent="ScrollContainer/VBoxContainer"]
|
[node name="CompressionContainer" type="VBoxContainer" parent="ScrollContainer/VBoxContainer"]
|
||||||
visible = false
|
visible = false
|
||||||
@@ -408,7 +411,7 @@ custom_minimum_size = Vector2(94.52, 7.51)
|
|||||||
layout_mode = 2
|
layout_mode = 2
|
||||||
size_flags_horizontal = 4
|
size_flags_horizontal = 4
|
||||||
size_flags_vertical = 6
|
size_flags_vertical = 6
|
||||||
text = "Threshold"
|
text = "THRESHOLD"
|
||||||
horizontal_alignment = 1
|
horizontal_alignment = 1
|
||||||
vertical_alignment = 1
|
vertical_alignment = 1
|
||||||
autowrap_mode = 2
|
autowrap_mode = 2
|
||||||
@@ -503,6 +506,72 @@ autowrap_mode = 2
|
|||||||
custom_minimum_size = Vector2(0, 16.07)
|
custom_minimum_size = Vector2(0, 16.07)
|
||||||
layout_mode = 2
|
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"]
|
[node name="TimeListening" type="Label" parent="ScrollContainer/VBoxContainer"]
|
||||||
layout_mode = 2
|
layout_mode = 2
|
||||||
size_flags_horizontal = 4
|
size_flags_horizontal = 4
|
||||||
@@ -513,21 +582,22 @@ layout_mode = 2
|
|||||||
size_flags_horizontal = 4
|
size_flags_horizontal = 4
|
||||||
size_flags_vertical = 4
|
size_flags_vertical = 4
|
||||||
focus_mode = 0
|
focus_mode = 0
|
||||||
text = "RESET SETTINGS"
|
text = "RESET_SETTINGS"
|
||||||
|
|
||||||
[node name="Exit" type="Button" parent="."]
|
[node name="Exit" type="Button" parent="."]
|
||||||
layout_mode = 1
|
layout_mode = 1
|
||||||
anchors_preset = 1
|
anchors_preset = 1
|
||||||
anchor_left = 1.0
|
anchor_left = 1.0
|
||||||
anchor_right = 1.0
|
anchor_right = 1.0
|
||||||
offset_left = -72.0
|
offset_left = -40.0
|
||||||
offset_bottom = 72.0
|
offset_bottom = 40.0
|
||||||
grow_horizontal = 0
|
grow_horizontal = 0
|
||||||
size_flags_horizontal = 8
|
size_flags_horizontal = 8
|
||||||
size_flags_vertical = 0
|
size_flags_vertical = 0
|
||||||
focus_mode = 0
|
focus_mode = 0
|
||||||
icon = ExtResource("2_iuivb")
|
icon = ExtResource("2_iuivb")
|
||||||
flat = true
|
flat = true
|
||||||
|
expand_icon = true
|
||||||
|
|
||||||
[connection signal="toggled" from="ScrollContainer/VBoxContainer/DiscordRichPresenceButton" to="." method="_on_discord_rich_presence_button_toggled"]
|
[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"]
|
[connection signal="pressed" from="ScrollContainer/VBoxContainer/VBoxContainer/HBoxContainer/SelectBG" to="." method="_on_select_bg_pressed"]
|
||||||
@@ -543,6 +613,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/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/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="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="." method="_on_reset_pressed"]
|
||||||
[connection signal="pressed" from="ScrollContainer/VBoxContainer/Reset" to="ScrollContainer/VBoxContainer/EQSettings" 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"]
|
[connection signal="pressed" from="Exit" to="." method="_on_exit_pressed"]
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 849 B After Width: | Height: | Size: 8.0 KiB |
@@ -0,0 +1 @@
|
|||||||
|
uid://bx75h6xic1hi7
|
||||||
|
Before Width: | Height: | Size: 1.2 KiB After Width: | Height: | Size: 7.7 KiB |
|
After Width: | Height: | Size: 1.1 KiB |
@@ -2,16 +2,16 @@
|
|||||||
|
|
||||||
importer="texture"
|
importer="texture"
|
||||||
type="CompressedTexture2D"
|
type="CompressedTexture2D"
|
||||||
uid="uid://drj8iwoxqu7kk"
|
uid="uid://cm5ps3a716wr0"
|
||||||
path="res://.godot/imported/Cat_August_2010-4.jpg-ee22e0b2d7c21625ade8bb157ecd9ac0.ctex"
|
path="res://.godot/imported/XSmall.png-2fa29ed3d6c0476862944f7e0885c6ed.ctex"
|
||||||
metadata={
|
metadata={
|
||||||
"vram_texture": false
|
"vram_texture": false
|
||||||
}
|
}
|
||||||
|
|
||||||
[deps]
|
[deps]
|
||||||
|
|
||||||
source_file="res://Cat_August_2010-4.jpg"
|
source_file="res://XSmall.png"
|
||||||
dest_files=["res://.godot/imported/Cat_August_2010-4.jpg-ee22e0b2d7c21625ade8bb157ecd9ac0.ctex"]
|
dest_files=["res://.godot/imported/XSmall.png-2fa29ed3d6c0476862944f7e0885c6ed.ctex"]
|
||||||
|
|
||||||
[params]
|
[params]
|
||||||
|
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
uid://0jnn2i3r56m3
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
uid://cu21wq8hdk6mq
|
||||||
@@ -112,8 +112,8 @@ tracks/0/keys = {
|
|||||||
|
|
||||||
[sub_resource type="AnimationLibrary" id="AnimationLibrary_a7ofc"]
|
[sub_resource type="AnimationLibrary" id="AnimationLibrary_a7ofc"]
|
||||||
_data = {
|
_data = {
|
||||||
"RESET": SubResource("Animation_mmtmn"),
|
&"RESET": SubResource("Animation_mmtmn"),
|
||||||
"pulsate": SubResource("Animation_5u02v")
|
&"pulsate": SubResource("Animation_5u02v")
|
||||||
}
|
}
|
||||||
|
|
||||||
[node name="DebugNodeGroup" type="Node"]
|
[node name="DebugNodeGroup" type="Node"]
|
||||||
|
|||||||
@@ -0,0 +1 @@
|
|||||||
|
uid://bupnp7dee8k3a
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
uid://bb81mf7sks0g4
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
uid://ec3hjq1x03oq
|
||||||
@@ -9,7 +9,7 @@ Button/styles/focus = SubResource("StyleBoxEmpty_1t7mm")
|
|||||||
|
|
||||||
[sub_resource type="StyleBoxEmpty" id="StyleBoxEmpty_5vqdt"]
|
[sub_resource type="StyleBoxEmpty" id="StyleBoxEmpty_5vqdt"]
|
||||||
|
|
||||||
[sub_resource type="Image" id="Image_qsij4"]
|
[sub_resource type="Image" id="Image_4rf8i"]
|
||||||
data = {
|
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),
|
"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",
|
"format": "RGBA8",
|
||||||
@@ -19,7 +19,7 @@ data = {
|
|||||||
}
|
}
|
||||||
|
|
||||||
[sub_resource type="ImageTexture" id="ImageTexture_gdtpn"]
|
[sub_resource type="ImageTexture" id="ImageTexture_gdtpn"]
|
||||||
image = SubResource("Image_qsij4")
|
image = SubResource("Image_4rf8i")
|
||||||
|
|
||||||
[sub_resource type="StyleBoxEmpty" id="StyleBoxEmpty_7v0rg"]
|
[sub_resource type="StyleBoxEmpty" id="StyleBoxEmpty_7v0rg"]
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1 @@
|
|||||||
|
uid://bkptv02am6p88
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
uid://rxllqh6yapvt
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
uid://osytjsx5x5lb
|
||||||
@@ -36,13 +36,22 @@ func download(url: String) -> Download:
|
|||||||
func FilesMissing() -> bool:
|
func FilesMissing() -> bool:
|
||||||
var executable_name: String = "yt-dlp.exe" if OS.get_name() == "Windows" else "yt-dlp"
|
var executable_name: String = "yt-dlp.exe" if OS.get_name() == "Windows" else "yt-dlp"
|
||||||
|
|
||||||
if not FileAccess.file_exists("user://%s" % executable_name):
|
if OS.get_name() == "Windows":
|
||||||
return true
|
if not FileAccess.file_exists("user://%s" % executable_name):
|
||||||
if not FileAccess.file_exists("user://ffmpeg.exe"):
|
return true
|
||||||
return true
|
if not FileAccess.file_exists("user://ffmpeg.exe"):
|
||||||
if not FileAccess.file_exists("user://ffprobe.exe"):
|
return true
|
||||||
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
|
return false
|
||||||
|
|
||||||
func setup() -> void:
|
func setup() -> void:
|
||||||
@@ -59,9 +68,8 @@ func setup() -> void:
|
|||||||
await (Engine.get_main_loop() as SceneTree).process_frame
|
await (Engine.get_main_loop() as SceneTree).process_frame
|
||||||
_thread.wait_to_finish()
|
_thread.wait_to_finish()
|
||||||
|
|
||||||
if OS.get_name() == "Windows":
|
await _setup_ffmpeg()
|
||||||
await _setup_ffmpeg()
|
if OS.get_name() == "Linux":
|
||||||
else:
|
|
||||||
OS.execute("chmod", PackedStringArray(["+x", OS.get_user_data_dir() + "/yt-dlp"]))
|
OS.execute("chmod", PackedStringArray(["+x", OS.get_user_data_dir() + "/yt-dlp"]))
|
||||||
|
|
||||||
_is_setup = true
|
_is_setup = true
|
||||||
@@ -70,12 +78,33 @@ func setup() -> void:
|
|||||||
|
|
||||||
func _setup_ffmpeg() -> void:
|
func _setup_ffmpeg() -> void:
|
||||||
if not FileAccess.file_exists("user://ffmpeg.exe"):
|
if not FileAccess.file_exists("user://ffmpeg.exe"):
|
||||||
_downloader.download(ffmpeg_sources["ffmpeg"], "user://ffmpeg.exe")
|
if OS.get_name() == "Windows":
|
||||||
await _downloader.download_completed
|
_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"):
|
if not FileAccess.file_exists("user://ffprobe.exe"):
|
||||||
_downloader.download(ffmpeg_sources["ffprobe"], "user://ffprobe.exe")
|
if OS.get_name() == "Windows":
|
||||||
await _downloader.download_completed
|
_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:
|
func _update_yt_dlp(filename: String) -> void:
|
||||||
@@ -109,7 +138,7 @@ class Download extends RefCounted:
|
|||||||
var _renameAudioToDiffName:bool = false
|
var _renameAudioToDiffName:bool = false
|
||||||
var _video_format: Video = Video.WEBM
|
var _video_format: Video = Video.WEBM
|
||||||
var _audio_format: Audio = Audio.MP3
|
var _audio_format: Audio = Audio.MP3
|
||||||
|
var _download_playlist:bool
|
||||||
|
|
||||||
func _init(url: String):
|
func _init(url: String):
|
||||||
_url = url
|
_url = url
|
||||||
@@ -183,9 +212,14 @@ class Download extends RefCounted:
|
|||||||
"destination": _destination
|
"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])
|
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)
|
print(options_and_arguments)
|
||||||
var output: Array = []
|
var output: Array = []
|
||||||
OS.execute(executable, PackedStringArray(options_and_arguments), output)
|
OS.execute(executable, PackedStringArray(options_and_arguments), output)
|
||||||
|
|||||||
@@ -0,0 +1 @@
|
|||||||
|
uid://c0dklnw4cfoe3
|
||||||
@@ -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.
|
||||||
@@ -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>
|
||||||
|
|
||||||
|

|
||||||
|
</details>
|
||||||
|
|
||||||
|
See the [Editor Imports](./demo/editor_imports_example.tscn) example scene.
|
||||||
|
<details open>
|
||||||
|
<summary>Editor Imports Example</summary>
|
||||||
|
|
||||||
|

|
||||||
|
</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:
|
||||||
|

|
||||||
|
|
||||||
|
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>
|
||||||
|
|
||||||
|

|
||||||
|
</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**)
|
||||||
|

|
||||||
|
|
||||||
|
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
|
||||||
@@ -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"
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
uid://b5mou30wr43g
|
||||||
@@ -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
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
uid://n3koklp0funr
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
uid://dg68hvw773xu6
|
||||||
@@ -33,15 +33,15 @@ func _on_playlist_name_text_changed(new_text: String) -> void:
|
|||||||
#elif new_text.unicode_at()
|
#elif new_text.unicode_at()
|
||||||
if !Parent.Playlists.has(new_text):
|
if !Parent.Playlists.has(new_text):
|
||||||
if 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)
|
good_indicator.label_settings.font_color = Color(0,1,0,1)
|
||||||
NameValid =true
|
NameValid =true
|
||||||
else:
|
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)
|
good_indicator.label_settings.font_color = Color(1,0,0,1)
|
||||||
NameValid = false
|
NameValid = false
|
||||||
else:
|
else:
|
||||||
good_indicator.text = "Name Already used"
|
good_indicator.text = tr("NAME_USED")
|
||||||
good_indicator.label_settings.font_color = Color(1,0,0,1)
|
good_indicator.label_settings.font_color = Color(1,0,0,1)
|
||||||
NameValid = false
|
NameValid = false
|
||||||
IsValid()
|
IsValid()
|
||||||
|
|||||||
@@ -0,0 +1 @@
|
|||||||
|
uid://bsnt1irskti8d
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
uid://dl37gwyodonea
|
||||||
@@ -5,8 +5,7 @@ var HzDec = {0:"32 Hz",
|
|||||||
2:"320 Hz",
|
2:"320 Hz",
|
||||||
3:"1000 Hz",
|
3:"1000 Hz",
|
||||||
4:"3200 Hz",
|
4:"3200 Hz",
|
||||||
5:"3200 Hz",
|
5:"10000 Hz"}
|
||||||
6:"10000 Hz"}
|
|
||||||
|
|
||||||
var gainValueLabels:Array = []
|
var gainValueLabels:Array = []
|
||||||
var gainValueSlider:Array = []
|
var gainValueSlider:Array = []
|
||||||
|
|||||||
@@ -0,0 +1 @@
|
|||||||
|
uid://kt7n1epi3ng8
|
||||||
@@ -9,9 +9,11 @@ custom_features=""
|
|||||||
export_filter="all_resources"
|
export_filter="all_resources"
|
||||||
include_filter=""
|
include_filter=""
|
||||||
exclude_filter=""
|
exclude_filter=""
|
||||||
export_path="../MusicPlayerExports/MusicPlayer.exe"
|
export_path="../SimplaudioExports/Windows/Simplaudio.exe"
|
||||||
|
patches=PackedStringArray()
|
||||||
encryption_include_filters=""
|
encryption_include_filters=""
|
||||||
encryption_exclude_filters=""
|
encryption_exclude_filters=""
|
||||||
|
seed=0
|
||||||
encrypt_pck=false
|
encrypt_pck=false
|
||||||
encrypt_directory=false
|
encrypt_directory=false
|
||||||
script_export_mode=2
|
script_export_mode=2
|
||||||
@@ -68,8 +70,8 @@ dotnet/embed_build_outputs=false
|
|||||||
|
|
||||||
[preset.1]
|
[preset.1]
|
||||||
|
|
||||||
name="macOS"
|
name="Linux"
|
||||||
platform="macOS"
|
platform="Linux"
|
||||||
runnable=true
|
runnable=true
|
||||||
advanced_options=false
|
advanced_options=false
|
||||||
dedicated_server=false
|
dedicated_server=false
|
||||||
@@ -77,244 +79,36 @@ custom_features=""
|
|||||||
export_filter="all_resources"
|
export_filter="all_resources"
|
||||||
include_filter=""
|
include_filter=""
|
||||||
exclude_filter=""
|
exclude_filter=""
|
||||||
export_path="../MusicPlayerMACExports/MusicPlayer.zip"
|
export_path="../SimplaudioExports/Linux/Simplaudio.x86_64"
|
||||||
|
patches=PackedStringArray()
|
||||||
encryption_include_filters=""
|
encryption_include_filters=""
|
||||||
encryption_exclude_filters=""
|
encryption_exclude_filters=""
|
||||||
|
seed=0
|
||||||
encrypt_pck=false
|
encrypt_pck=false
|
||||||
encrypt_directory=false
|
encrypt_directory=false
|
||||||
script_export_mode=2
|
script_export_mode=2
|
||||||
|
|
||||||
[preset.1.options]
|
[preset.1.options]
|
||||||
|
|
||||||
export/distribution_type=1
|
|
||||||
binary_format/architecture="universal"
|
|
||||||
custom_template/debug=""
|
custom_template/debug=""
|
||||||
custom_template/release=""
|
custom_template/release=""
|
||||||
debug/export_console_wrapper=2
|
debug/export_console_wrapper=1
|
||||||
application/icon=""
|
binary_format/embed_pck=false
|
||||||
application/icon_interpolation=4
|
texture_format/s3tc_bptc=true
|
||||||
application/bundle_identifier="com.bucket.simplaudio"
|
texture_format/etc2_astc=false
|
||||||
application/signature=""
|
binary_format/architecture="x86_64"
|
||||||
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
|
|
||||||
ssh_remote_deploy/enabled=false
|
ssh_remote_deploy/enabled=false
|
||||||
ssh_remote_deploy/host="user@host_ip"
|
ssh_remote_deploy/host="user@host_ip"
|
||||||
ssh_remote_deploy/port="22"
|
ssh_remote_deploy/port="22"
|
||||||
ssh_remote_deploy/extra_args_ssh=""
|
ssh_remote_deploy/extra_args_ssh=""
|
||||||
ssh_remote_deploy/extra_args_scp=""
|
ssh_remote_deploy/extra_args_scp=""
|
||||||
ssh_remote_deploy/run_script="#!/usr/bin/env bash
|
ssh_remote_deploy/run_script="#!/usr/bin/env bash
|
||||||
|
export DISPLAY=:0
|
||||||
unzip -o -q \"{temp_dir}/{archive_name}\" -d \"{temp_dir}\"
|
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
|
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}\""
|
rm -rf \"{temp_dir}\""
|
||||||
dotnet/include_scripts_content=false
|
dotnet/include_scripts_content=false
|
||||||
dotnet/include_debug_symbols=false
|
dotnet/include_debug_symbols=true
|
||||||
dotnet/embed_build_outputs=false
|
dotnet/embed_build_outputs=false
|
||||||
|
|||||||
@@ -0,0 +1 @@
|
|||||||
|
uid://bn0iqqmor3b2b
|
||||||
@@ -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
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
uid://cbdcs7oie12g5
|
||||||
@@ -18,7 +18,7 @@ extends Control
|
|||||||
@onready var yt_link: LineEdit = $"YoutubeMenuHolder/Youtube menu/YTLink"
|
@onready var yt_link: LineEdit = $"YoutubeMenuHolder/Youtube menu/YTLink"
|
||||||
@onready var yt_download: Button = $"YoutubeMenuHolder/Youtube menu/YTDownload"
|
@onready var yt_download: Button = $"YoutubeMenuHolder/Youtube menu/YTDownload"
|
||||||
@onready var loading_img: Sprite2D = $"YoutubeMenuHolder/Youtube menu/LoadingIMG"
|
@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 version: Label = $Version
|
||||||
@onready var paused_indicator: TextureRect = $PausedIndicator
|
@onready var paused_indicator: TextureRect = $PausedIndicator
|
||||||
@onready var settings_menu_child: Settings = $SettingsHolder/SettingsPopup/SettingsMenuChild
|
@onready var settings_menu_child: Settings = $SettingsHolder/SettingsPopup/SettingsMenuChild
|
||||||
@@ -28,8 +28,12 @@ extends Control
|
|||||||
@onready var play_all: Button = $PlaylistPanelHolder/PlaylistsPanel/PlaylistsContainer/VBoxContainer/HBoxContainer/PlayAll
|
@onready var play_all: Button = $PlaylistPanelHolder/PlaylistsPanel/PlaylistsContainer/VBoxContainer/HBoxContainer/PlayAll
|
||||||
@onready var album_name: Label = $Album
|
@onready var album_name: Label = $Album
|
||||||
@onready var playlist_or_song: ConfirmationDialog = $PlaylistOrSong
|
@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
|
||||||
|
|
||||||
|
var DiscordUsername:String
|
||||||
|
|
||||||
const PLAYLIST_DISPLAY = preload("res://PlaylistDisplay.tscn")
|
const PLAYLIST_DISPLAY = preload("res://PlaylistDisplay.tscn")
|
||||||
const PAUSE = preload("res://Pause.png")
|
const PAUSE = preload("res://Pause.png")
|
||||||
@@ -59,12 +63,25 @@ var PlaylistsLocation:Dictionary
|
|||||||
var BackroundSetup:bool
|
var BackroundSetup:bool
|
||||||
var CurrentPlaylist:String
|
var CurrentPlaylist:String
|
||||||
var PlayAllLists:bool
|
var PlayAllLists:bool
|
||||||
|
var UsingPlayingNow:bool
|
||||||
|
|
||||||
@export var LoopPressed:Texture2D
|
@export var LoopPressed:Texture2D
|
||||||
@export var LoopNotPressed: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.
|
# Called when the node enters the scene tree for the first time.
|
||||||
func _ready() -> void:
|
func _ready() -> void:
|
||||||
|
playing_now.visible = false
|
||||||
get_tree().root.min_size = Vector2(850,492)
|
get_tree().root.min_size = Vector2(850,492)
|
||||||
current_progress.drag_ended.connect(SongDragStopped)
|
current_progress.drag_ended.connect(SongDragStopped)
|
||||||
current_progress.drag_started.connect(SongDragStarted)
|
current_progress.drag_started.connect(SongDragStarted)
|
||||||
@@ -75,15 +92,14 @@ func _ready() -> void:
|
|||||||
volume_slider.value_changed.connect(SetVolume)
|
volume_slider.value_changed.connect(SetVolume)
|
||||||
skip.pressed.connect(Skip)
|
skip.pressed.connect(Skip)
|
||||||
go_back.pressed.connect(GoBack)
|
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
|
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 data:Dictionary
|
||||||
|
var save = loadUserdata()
|
||||||
|
if save != {}:
|
||||||
|
data = save
|
||||||
loadPlaylists()
|
loadPlaylists()
|
||||||
if loadUserdata() != null:
|
|
||||||
data = loadUserdata()
|
|
||||||
if Strin.is_empty():
|
if Strin.is_empty():
|
||||||
if !Playlists.is_empty():
|
if !Playlists.is_empty():
|
||||||
PlaylistSelected(Playlists.keys()[0],PlaylistsLocation[Playlists.keys()[0]])
|
PlaylistSelected(Playlists.keys()[0],PlaylistsLocation[Playlists.keys()[0]])
|
||||||
@@ -119,6 +135,13 @@ func _ready() -> void:
|
|||||||
if data.has("DiscordRichPresenceEnabled"):
|
if data.has("DiscordRichPresenceEnabled"):
|
||||||
settings_menu_child.discord_rich_presence_button.set_pressed_no_signal(data["DiscordRichPresenceEnabled"])
|
settings_menu_child.discord_rich_presence_button.set_pressed_no_signal(data["DiscordRichPresenceEnabled"])
|
||||||
DiscordRichPresenceEnabled = 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") :
|
if data.has("ReverbEnabled") :
|
||||||
settings_menu_child.reverb_check.button_pressed = data["ReverbEnabled"]
|
settings_menu_child.reverb_check.button_pressed = data["ReverbEnabled"]
|
||||||
if data.has("ReverbRoomSize") :
|
if data.has("ReverbRoomSize") :
|
||||||
@@ -142,6 +165,8 @@ func _ready() -> void:
|
|||||||
PlayAllLists = data["PlayAllLists"]
|
PlayAllLists = data["PlayAllLists"]
|
||||||
if PlayAllLists:
|
if PlayAllLists:
|
||||||
play_all.button_pressed = true
|
play_all.button_pressed = true
|
||||||
|
if data.has("UsingPlayingNow"):
|
||||||
|
UsingPlayingNow = data["UsingPlayingNow"]
|
||||||
else:
|
else:
|
||||||
if data != null:
|
if data != null:
|
||||||
print(data["Volume"])
|
print(data["Volume"])
|
||||||
@@ -164,9 +189,27 @@ func _ready() -> void:
|
|||||||
DirectorySelected(Strin)
|
DirectorySelected(Strin)
|
||||||
PlaySongs()
|
PlaySongs()
|
||||||
#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
|
# this is boolean if everything worked
|
||||||
print("Discord working: " + str(DiscordRPC.get_is_discord_working()))
|
print("Discord working: " + str(DiscordRPC.get_is_discord_working()))
|
||||||
# Set the first custom text row of the activity here
|
# Set the first custom text row of the activity here
|
||||||
@@ -176,12 +219,7 @@ func _ready() -> void:
|
|||||||
# Set the second custom text row of the activity here
|
# Set the second custom text row of the activity here
|
||||||
DiscordRPC.state = ""
|
DiscordRPC.state = ""
|
||||||
# Image key for small image from "Art Assets" from the Discord Developer website
|
# Image key for small image from "Art Assets" from the Discord Developer website
|
||||||
DiscordRPC.large_image = "logo"
|
|
||||||
# Tooltip text for the large image
|
# 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
|
# Image key for large image from "Art Assets" from the Discord Developer website
|
||||||
DiscordRPC.small_image = ""
|
DiscordRPC.small_image = ""
|
||||||
# Tooltip text for the small image
|
# Tooltip text for the small image
|
||||||
@@ -190,12 +228,43 @@ func _ready() -> void:
|
|||||||
# Always refresh after changing the values!
|
# Always refresh after changing the values!
|
||||||
DiscordRPC.refresh()
|
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):
|
func SongDragStopped(Changed:bool):
|
||||||
if Changed:
|
if Changed:
|
||||||
music_player.play(current_progress.value * CurrentSongLenth / current_progress.max_value)
|
music_player.play(current_progress.value * CurrentSongLenth / current_progress.max_value)
|
||||||
if Paused:
|
if Paused:
|
||||||
pausePlay()
|
pausePlay()
|
||||||
|
|
||||||
UpdateProgressSlider = true
|
UpdateProgressSlider = true
|
||||||
DiscordRPC.start_timestamp = int(Time.get_unix_time_from_system() - (current_progress.value * CurrentSongLenth / current_progress.max_value))
|
DiscordRPC.start_timestamp = int(Time.get_unix_time_from_system() - (current_progress.value * CurrentSongLenth / current_progress.max_value))
|
||||||
DiscordRPC.refresh()
|
DiscordRPC.refresh()
|
||||||
@@ -220,7 +289,8 @@ func SetSong(IDX:int):
|
|||||||
CurrentIDX = IDX -1
|
CurrentIDX = IDX -1
|
||||||
PlaySongs()
|
PlaySongs()
|
||||||
music_player.stop()
|
music_player.stop()
|
||||||
SaveEverything()
|
if !LoadingSaveFailed:
|
||||||
|
SaveEverything()
|
||||||
print("SetSong")
|
print("SetSong")
|
||||||
|
|
||||||
func pausePlay():
|
func pausePlay():
|
||||||
@@ -248,16 +318,15 @@ func SetVolume(Volume:float):
|
|||||||
|
|
||||||
var volume = (-50 + (Volume/2))
|
var volume = (-50 + (Volume/2))
|
||||||
if Volume >= 2:
|
if Volume >= 2:
|
||||||
AudioServer.set_bus_volume_db(0,volume)
|
AudioServer.set_bus_volume_db(1,volume)
|
||||||
else:
|
else:
|
||||||
AudioServer.set_bus_volume_db(0,-1000)
|
AudioServer.set_bus_volume_db(1,-1000)
|
||||||
print("Chnaged Volume")
|
|
||||||
SaveEverything()
|
|
||||||
volume_slider.value = Volume
|
volume_slider.value = Volume
|
||||||
|
|
||||||
func SelectPlaylistDir():
|
func SelectPlaylistDir():
|
||||||
file_dialog.show()
|
file_dialog.show()
|
||||||
SaveEverything()
|
if !LoadingSaveFailed:
|
||||||
|
SaveEverything()
|
||||||
print("Select Playtlist dir")
|
print("Select Playtlist dir")
|
||||||
|
|
||||||
func DirectorySelected(dir:String):
|
func DirectorySelected(dir:String):
|
||||||
@@ -270,17 +339,15 @@ func PlaySongs():
|
|||||||
|
|
||||||
if music_player.playing:
|
if music_player.playing:
|
||||||
Paused = true
|
Paused = true
|
||||||
DiscordRPC.state = "Paused"
|
|
||||||
music_player.stream_paused = true
|
music_player.stream_paused = true
|
||||||
play_list.icon = PLAY
|
play_list.icon = PLAY
|
||||||
|
DiscordRPC.state = tr("DELETE_DIALOG")
|
||||||
print(DiscordRPC.get_current_user())
|
print(DiscordRPC.get_current_user())
|
||||||
else:
|
else:
|
||||||
DiscordRPC.start_timestamp = int(Time.get_unix_time_from_system() - (current_progress.value * CurrentSongLenth / current_progress.max_value))
|
DiscordRPC.start_timestamp = int(Time.get_unix_time_from_system() - (current_progress.value * CurrentSongLenth / current_progress.max_value))
|
||||||
print(DiscordRPC.get_current_user())
|
print(DiscordRPC.get_current_user())
|
||||||
if DiscordRPC.get_current_user().get("username") == "_bucketofchicken":
|
|
||||||
DiscordRPC.state = "i made the music player btw"
|
DiscordRPC.state = tr("STATE_LISTENING")
|
||||||
else:
|
|
||||||
DiscordRPC.state = "Listening To Music"
|
|
||||||
Paused = false
|
Paused = false
|
||||||
music_player.stream_paused = false
|
music_player.stream_paused = false
|
||||||
play_list.icon = PAUSE
|
play_list.icon = PAUSE
|
||||||
@@ -289,25 +356,24 @@ func PlaySongs():
|
|||||||
if LoopingSong:
|
if LoopingSong:
|
||||||
music_player.play()
|
music_player.play()
|
||||||
elif textSongs.size() != 0:
|
elif textSongs.size() != 0:
|
||||||
var index
|
var index:int
|
||||||
if OpenedSong.is_empty():
|
if OpenedSong.is_empty():
|
||||||
if PlayAllLists:
|
if PlayAllLists:
|
||||||
if CurrentIDX >= (textSongs.size()):
|
if CurrentIDX >= (textSongs.size()):
|
||||||
CurrentPlaylist = Playlists.keys()[(Playlists.keys().find(CurrentPlaylist)+1) % Playlists.keys().size()]
|
CurrentPlaylist = Playlists.keys()[(Playlists.keys().find(CurrentPlaylist)+1) % Playlists.keys().size()]
|
||||||
print("ASSS")
|
|
||||||
print(CurrentPlaylist)
|
print(CurrentPlaylist)
|
||||||
index = CurrentIDX % textSongs.size()
|
index = CurrentIDX % textSongs.size()
|
||||||
else:
|
else:
|
||||||
if PlayAllLists:
|
if PlayAllLists:
|
||||||
if CurrentIDX+1 >= (textSongs.size()-1):
|
if CurrentIDX+1 >= (textSongs.size()-1):
|
||||||
CurrentPlaylist = Playlists.keys()[(Playlists.keys().find(CurrentPlaylist)+1) % Playlists.keys().size()]
|
CurrentPlaylist = Playlists.keys()[(Playlists.keys().find(CurrentPlaylist)+1) % Playlists.keys().size()]
|
||||||
print("AS")
|
|
||||||
index = textSongs.find(OpenedSong) % textSongs.size()
|
index = textSongs.find(OpenedSong) % textSongs.size()
|
||||||
if PlayAllLists:
|
if PlayAllLists:
|
||||||
if !CurrentDir.ends_with(CurrentPlaylist):
|
if !CurrentDir.ends_with(CurrentPlaylist):
|
||||||
GetSongs(PlaylistsLocation[CurrentPlaylist])
|
GetSongs(PlaylistsLocation[CurrentPlaylist])
|
||||||
var CurrentSongDir:String = PlaylistsLocation[CurrentPlaylist] + "/" + textSongs[index]
|
var CurrentSongDir:String = PlaylistsLocation[CurrentPlaylist] + "/" + textSongs[index]
|
||||||
DiscordRPC.details = textSongs[index].replace(".mp3","")
|
DiscordRPC.details = textSongs[index].replace(".mp3","")
|
||||||
|
currentSongName = textSongs[index].replace(".mp3","")
|
||||||
print(CurrentSongDir)
|
print(CurrentSongDir)
|
||||||
var sonnname:String = textSongs[index]
|
var sonnname:String = textSongs[index]
|
||||||
sonnname = sonnname.replace(".mp3", "")
|
sonnname = sonnname.replace(".mp3", "")
|
||||||
@@ -324,17 +390,21 @@ func PlaySongs():
|
|||||||
if MusicMetadataAutoload.get_mp3_metadata(song).title != "":
|
if MusicMetadataAutoload.get_mp3_metadata(song).title != "":
|
||||||
song_name.text = MusicMetadataAutoload.get_mp3_metadata(song).title
|
song_name.text = MusicMetadataAutoload.get_mp3_metadata(song).title
|
||||||
if MusicMetadataAutoload.get_mp3_metadata(song).artist != "":
|
if MusicMetadataAutoload.get_mp3_metadata(song).artist != "":
|
||||||
artist_name.text = MusicMetadataAutoload.get_mp3_metadata(song).artist
|
currentArtistName = MusicMetadataAutoload.get_mp3_metadata(song).artist
|
||||||
else: artist_name.text = ""
|
else: currentArtistName = ""
|
||||||
|
artist_name.text = currentArtistName
|
||||||
if MusicMetadataAutoload.get_mp3_metadata(song).album != "":
|
if MusicMetadataAutoload.get_mp3_metadata(song).album != "":
|
||||||
album_name.text = MusicMetadataAutoload.get_mp3_metadata(song).album
|
currentAlbumName = MusicMetadataAutoload.get_mp3_metadata(song).album
|
||||||
else: album_name.text = ""
|
else: currentAlbumName = ""
|
||||||
|
album_name.text = currentAlbumName
|
||||||
if song != null:
|
if song != null:
|
||||||
CurrentSongLenth = song.get_length()
|
CurrentSongLenth = song.get_length()
|
||||||
music_player.stream = song
|
music_player.stream = song
|
||||||
music_player.play()
|
music_player.play()
|
||||||
SaveEverything()
|
if !LoadingSaveFailed:
|
||||||
|
SaveEverything()
|
||||||
print("set stream")
|
print("set stream")
|
||||||
|
SongChanged.emit()
|
||||||
|
|
||||||
|
|
||||||
func GetSongs(dir:String):
|
func GetSongs(dir:String):
|
||||||
@@ -357,11 +427,11 @@ func GetSongs(dir:String):
|
|||||||
wav_disclaimer.show()
|
wav_disclaimer.show()
|
||||||
SeenWAVDisclaimer = true
|
SeenWAVDisclaimer = true
|
||||||
#print(songs)
|
#print(songs)
|
||||||
songs_menu.get_popup().clear(true)
|
search_results.clear()
|
||||||
textSongs = songs
|
textSongs = songs
|
||||||
for song in textSongs:
|
for song in textSongs:
|
||||||
var nam = song.replace(".mp3", "")
|
var nam = song
|
||||||
songs_menu.get_popup().add_item(nam)
|
search_results.add_item(nam)
|
||||||
|
|
||||||
func Randomize():
|
func Randomize():
|
||||||
if textSongs.size() != 0:
|
if textSongs.size() != 0:
|
||||||
@@ -380,10 +450,10 @@ func Randomize():
|
|||||||
|
|
||||||
|
|
||||||
Randomized = true
|
Randomized = true
|
||||||
songs_menu.get_popup().clear(true)
|
search_results.clear()
|
||||||
for song in textSongs:
|
for song in textSongs:
|
||||||
var nam = song.replace(".mp3", "")
|
var nam = song
|
||||||
songs_menu.get_popup().add_item(nam)
|
search_results.add_item(nam)
|
||||||
#print(textSongs)
|
#print(textSongs)
|
||||||
|
|
||||||
func PlaylistSelected(Playlist:String,PlaylistLocation:String):
|
func PlaylistSelected(Playlist:String,PlaylistLocation:String):
|
||||||
@@ -403,6 +473,7 @@ func PlaylistSelected(Playlist:String,PlaylistLocation:String):
|
|||||||
|
|
||||||
# Called every frame. 'delta' is the elapsed time since the previous frame.
|
# Called every frame. 'delta' is the elapsed time since the previous frame.
|
||||||
func _process(_delta: float) -> void:
|
func _process(_delta: float) -> void:
|
||||||
|
playing_now.visible = UsingPlayingNow
|
||||||
currentSaveTime -= _delta
|
currentSaveTime -= _delta
|
||||||
if !BackroundSetup:
|
if !BackroundSetup:
|
||||||
if CurrentCustomBackroundImageDirectory != null and CurrentCustomBackroundImageDirectory != "":
|
if CurrentCustomBackroundImageDirectory != null and CurrentCustomBackroundImageDirectory != "":
|
||||||
@@ -410,27 +481,30 @@ func _process(_delta: float) -> void:
|
|||||||
BackroundSetup = true
|
BackroundSetup = true
|
||||||
if currentSaveTime < 0:
|
if currentSaveTime < 0:
|
||||||
currentSaveTime = SaveInterval
|
currentSaveTime = SaveInterval
|
||||||
SaveEverything()
|
if DiscordRichPresenceEnabled:
|
||||||
print("yoo")
|
DiscordUsername = DiscordRPC.get_current_user().get("username")
|
||||||
|
if !LoadingSaveFailed:
|
||||||
|
SaveEverything()
|
||||||
@warning_ignore("integer_division")
|
@warning_ignore("integer_division")
|
||||||
UpdateSplashes()
|
if DiscordRichPresenceEnabled:
|
||||||
print(DiscordRPC.get_current_user()["username"])
|
UpdateSplashes()
|
||||||
print(TimeSpentListening)
|
if DiscordRPC.get_is_discord_working():
|
||||||
var LText = SplashStrings.pick_random()
|
print(DiscordRPC.get_current_user()["username"])
|
||||||
DiscordRPC.large_image_text = LText
|
print(TimeSpentListening)
|
||||||
DiscordRPC.refresh()
|
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
|
# "59:59 remaining" timestamp for the activity
|
||||||
if music_player.playing:
|
if music_player.playing:
|
||||||
TimeSpentListening += _delta
|
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)
|
CurrentPausedIndicatorShaderIntensity = lerp(CurrentPausedIndicatorShaderIntensity,0.0,0.1)
|
||||||
|
DiscordRPC.state = tr("STATE_LISTENING")
|
||||||
else:
|
else:
|
||||||
DiscordRPC.start_timestamp = int(0)
|
DiscordRPC.start_timestamp = int(0)
|
||||||
DiscordRPC.state = "Paused"
|
DiscordRPC.state = tr("STATE_PAUSED")
|
||||||
DiscordRPC.refresh()
|
if DiscordRPC.get_is_discord_working():
|
||||||
|
DiscordRPC.refresh()
|
||||||
CurrentPausedIndicatorShaderIntensity = lerp(CurrentPausedIndicatorShaderIntensity,1.0,0.1)
|
CurrentPausedIndicatorShaderIntensity = lerp(CurrentPausedIndicatorShaderIntensity,1.0,0.1)
|
||||||
if DiscordRichPresenceEnabled:
|
if DiscordRichPresenceEnabled:
|
||||||
DiscordRPC.run_callbacks()
|
DiscordRPC.run_callbacks()
|
||||||
@@ -470,29 +544,30 @@ func _process(_delta: float) -> void:
|
|||||||
|
|
||||||
|
|
||||||
func UpdateSplashes():
|
func UpdateSplashes():
|
||||||
SplashStrings = ["Total listening time: %s!" % str(str(int(TimeSpentListening/60)/60 )
|
if DiscordRPC.get_is_discord_working():
|
||||||
+ "h : " + str((int(TimeSpentListening) / 60) % 60) + "m : " +
|
SplashStrings = ["Total listening time: %s!" % str(str(int(TimeSpentListening/60)/60 )
|
||||||
str(int(TimeSpentListening) % 60) + "s"),
|
+ "h : " + str((int(TimeSpentListening) / 60) % 60) + "m : " +
|
||||||
"Version: %s" % version.text,"🤷♂️","This Changes every ~11 seconds",
|
str(int(TimeSpentListening) % 60) + "s"),
|
||||||
"hello everybody my name is %s" % DiscordRPC.get_current_user()["username"],
|
"Version: %s" % version.text,"🤷♂️","This Changes every ~11 seconds",
|
||||||
"wash your dishes, i know you got some","Running on %s" % OS.get_distribution_name(),
|
"hello everybody my name is %s" % DiscordRPC.get_current_user()["username"],
|
||||||
"%s is cooking" % DiscordRPC.get_current_user()["username"], "debugging" if OS.has_feature("editor") else "Release build",
|
"wash your dishes, i know you got some","Running on %s" % OS.get_distribution_name(),
|
||||||
"this user chose to show you all this info","Playing a Banger",
|
"%s is cooking" % DiscordRPC.get_current_user()["username"], "debugging" if OS.has_feature("editor") else "Release build",
|
||||||
":steamhappy:","This is a sign that crocodiles live in water",
|
"this user chose to show you all this info","Playing a Banger",
|
||||||
"Space? SPACE?! SPAAAAAAAAAAAAACE!!!",
|
":steamhappy:","This is a sign that crocodiles live in water",
|
||||||
"i love gd colonge",
|
"Space? SPACE?! SPAAAAAAAAAAAAACE!!!",
|
||||||
"listening with reverb" if settings_menu_child.reverb_check.button_pressed else
|
"i love gd colonge",
|
||||||
"not listening with reverb","the cake is edible",
|
"listening with reverb" if settings_menu_child.reverb_check.button_pressed else
|
||||||
"what a great song!","this message is useless",
|
"not listening with reverb","the cake is edible",
|
||||||
"stop reading these","why are you reading these",
|
"what a great song!","this message is useless",
|
||||||
"hello from mars", "hello to mars","there is a fly in my room",
|
"stop reading these","why are you reading these",
|
||||||
"yippee!","What, are they allergic to bathtubs or something",
|
"hello from mars", "hello to mars","there is a fly in my room",
|
||||||
"Did you know, a 737 can land with up to 33knots of wind!",
|
"yippee!","What, are they allergic to bathtubs or something",
|
||||||
"Welcome to todays JahresSchau",
|
"Did you know, a 737 can land with up to 33knots of wind!",
|
||||||
"ram is very useful","your cpu is tasty","main course: Nvidia GPU",
|
"Welcome to todays JahresSchau",
|
||||||
"SCHOTTLAND FUER IMMER","i eat airborne vehicles","linus trovalds",
|
"ram is very useful","your cpu is tasty","main course: Nvidia GPU",
|
||||||
"™","\(〇_o)/","Nuh Uh!","Yuh Huh","Breaching.",
|
"SCHOTTLAND FUER IMMER","i eat airborne vehicles","linus trovalds",
|
||||||
"I get a narcissistic injury when the wall ignores me","totally not using %s" % version.text]
|
"™","\(〇_o)/","Nuh Uh!","Yuh Huh","Breaching.",
|
||||||
|
"I get a narcissistic injury when the wall ignores me","totally not using %s" % version.text]
|
||||||
|
|
||||||
|
|
||||||
func SaveEverything():
|
func SaveEverything():
|
||||||
@@ -515,46 +590,71 @@ func SaveEverything():
|
|||||||
"CompressionRatio" : settings_menu_child.ratio_slider.value ,
|
"CompressionRatio" : settings_menu_child.ratio_slider.value ,
|
||||||
"CompressionGain" : settings_menu_child.gain_slider.value,
|
"CompressionGain" : settings_menu_child.gain_slider.value,
|
||||||
"CurrentCustomBackroundImageDirectory" : CurrentCustomBackroundImageDirectory,
|
"CurrentCustomBackroundImageDirectory" : CurrentCustomBackroundImageDirectory,
|
||||||
"PlayAllLists" : PlayAllLists
|
"PlayAllLists" : PlayAllLists,
|
||||||
|
"DiscordUsername" : DiscordRPC.get_current_user().get("username"),
|
||||||
|
"UsingPlayingNow" : UsingPlayingNow
|
||||||
}
|
}
|
||||||
|
print("saving")
|
||||||
saveUserdata(Data)
|
saveUserdata(Data)
|
||||||
savePlaylists()
|
savePlaylists()
|
||||||
|
|
||||||
|
var saveRetrys:int =0
|
||||||
|
|
||||||
func savePlaylists():
|
func savePlaylists():
|
||||||
var json = JSON.new()
|
var json = JSON.new()
|
||||||
var file = FileAccess.open("user://playlists.dat", FileAccess.WRITE)
|
var file = FileAccess.open("user://playlists.dat", FileAccess.WRITE)
|
||||||
var file2 = FileAccess.open("user://playlistsLocation.dat", FileAccess.WRITE)
|
var file2 = FileAccess.open("user://playlistsLocation.dat", FileAccess.WRITE)
|
||||||
@warning_ignore("static_called_on_instance")
|
@warning_ignore("static_called_on_instance")
|
||||||
if !Playlists == null or !Playlists == {}:
|
if !(Playlists == null) or !(Playlists == {}):
|
||||||
file.store_string(str(json.stringify(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)))
|
file2.store_string(str(json.stringify(PlaylistsLocation)))
|
||||||
|
if loadUserdata() == {}:
|
||||||
|
if saveRetrys < 3:
|
||||||
|
savePlaylists()
|
||||||
|
else:
|
||||||
|
printerr("saving failed")
|
||||||
|
|
||||||
|
|
||||||
func saveUserdata(content):
|
func saveUserdata(content):
|
||||||
var json = JSON.new()
|
var json = JSON.new()
|
||||||
var file = FileAccess.open("user://data.dat", FileAccess.WRITE)
|
var file = FileAccess.open("user://data.dat", FileAccess.WRITE)
|
||||||
@warning_ignore("static_called_on_instance")
|
@warning_ignore("static_called_on_instance")
|
||||||
file.store_string(Marshalls.utf8_to_base64(json.stringify(content)))
|
file.store_string(json.stringify(content))
|
||||||
file.close()
|
file.close()
|
||||||
|
|
||||||
func loadUserdata():
|
var saveLoadTries:int
|
||||||
|
|
||||||
|
func loadUserdata() -> Dictionary:
|
||||||
var json = JSON.new()
|
var json = JSON.new()
|
||||||
var file = FileAccess.open("user://data.dat", FileAccess.READ)
|
var file = FileAccess.open("user://data.dat", FileAccess.READ)
|
||||||
var filetext = file.get_as_text() if file != null else null
|
var filetext = file.get_as_text() if file != null else null
|
||||||
if file != null:
|
if file != null:
|
||||||
var content
|
var content:Dictionary = {}
|
||||||
if json.parse_string(file.get_as_text()) != null:
|
if json.parse_string(file.get_as_text()) != null:
|
||||||
content = json.parse_string(filetext)
|
content = json.parse_string(filetext)
|
||||||
else:
|
else:
|
||||||
@warning_ignore("static_called_on_instance")
|
@warning_ignore("static_called_on_instance")
|
||||||
content = json.parse_string(Marshalls.base64_to_utf8(file.get_as_text()))
|
content = json.parse_string(Marshalls.base64_to_utf8(file.get_as_text()))
|
||||||
file.close()
|
file.close()
|
||||||
return content
|
if content != null:
|
||||||
|
LoadingSaveFailed = false
|
||||||
|
return content
|
||||||
|
else:
|
||||||
|
LoadingSaveFailed = true
|
||||||
|
return {}
|
||||||
else:
|
else:
|
||||||
file.close()
|
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():
|
func loadPlaylists():
|
||||||
var json = JSON.new()
|
var json = JSON.new()
|
||||||
var file = FileAccess.open("user://playlistsLocation.dat", FileAccess.READ)
|
var file = FileAccess.open("user://playlistsLocation.dat", FileAccess.READ)
|
||||||
@@ -564,10 +664,19 @@ func loadPlaylists():
|
|||||||
print(filetext)
|
print(filetext)
|
||||||
#print("shit " + json.parse_string(filetext))
|
#print("shit " + json.parse_string(filetext))
|
||||||
if file.get_as_text() != "" and file2.get_as_text() != "":
|
if file.get_as_text() != "" and file2.get_as_text() != "":
|
||||||
PlaylistsLocation = json.parse_string(file.get_as_text())
|
var PlaylistsLocationTemp
|
||||||
Playlists = {} if json.parse_string(file2.get_as_text()) == null else json.parse_string(file2.get_as_text())
|
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(PlaylistsLocation)
|
||||||
print(Playlists.keys())
|
print(Playlists.keys())
|
||||||
print("Playlists")
|
print("Playlists")
|
||||||
file.close()
|
file.close()
|
||||||
file2.close()
|
file2.close()
|
||||||
|
|||||||
@@ -0,0 +1 @@
|
|||||||
|
uid://cvqefw0g6ala7
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
uid://bh3btjt2hkbs
|
||||||
@@ -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
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
uid://q2gdlr10ncnb
|
||||||
@@ -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.
|
||||||
|
//}
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
uid://byan4wmg2pjl6
|
||||||
@@ -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
|
||||||
@@ -6,7 +6,7 @@ extends Control
|
|||||||
@onready var options_dropdown: MenuButton = $HSplitContainer/HBoxContainer/OptionsDropdown
|
@onready var options_dropdown: MenuButton = $HSplitContainer/HBoxContainer/OptionsDropdown
|
||||||
@onready var confirmation: ConfirmationDialog = $ConfirmationDialog
|
@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
|
@export var Current:bool
|
||||||
var PlaylistLocation:String = ""
|
var PlaylistLocation:String = ""
|
||||||
|
|||||||
@@ -0,0 +1 @@
|
|||||||
|
uid://cs12qambyvou8
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
uid://bxc2fqwlm5ea5
|
||||||
@@ -12,11 +12,11 @@ config_version=5
|
|||||||
|
|
||||||
config/name="Simplaudio"
|
config/name="Simplaudio"
|
||||||
run/main_scene="res://Main.tscn"
|
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
|
run/low_processor_mode=true
|
||||||
boot_splash/bg_color=Color(0, 0, 0, 1)
|
boot_splash/bg_color=Color(0, 0, 0, 1)
|
||||||
boot_splash/image="res://BigLogo.png"
|
|
||||||
boot_splash/use_filter=false
|
boot_splash/use_filter=false
|
||||||
|
boot_splash/image="res://BigLogo.png"
|
||||||
config/icon="res://Logo2.png"
|
config/icon="res://Logo2.png"
|
||||||
config/windows_native_icon="res://addons/godot-yt-dlp/src/favicon2.ico"
|
config/windows_native_icon="res://addons/godot-yt-dlp/src/favicon2.ico"
|
||||||
|
|
||||||
@@ -24,6 +24,7 @@ config/windows_native_icon="res://addons/godot-yt-dlp/src/favicon2.ico"
|
|||||||
|
|
||||||
YtDlp="*res://addons/godot-yt-dlp/src/yt_dlp.gd"
|
YtDlp="*res://addons/godot-yt-dlp/src/yt_dlp.gd"
|
||||||
MusicMetadataAutoload="*res://MusicMeta-f98d7384de3e2e658dcba3f5b06fb5b57ac2c73c/MusicMeta.gd"
|
MusicMetadataAutoload="*res://MusicMeta-f98d7384de3e2e658dcba3f5b06fb5b57ac2c73c/MusicMeta.gd"
|
||||||
|
DiscordRPCLoader="*res://addons/discord-rpc-gd/nodes/discord_autoload.gd"
|
||||||
|
|
||||||
[display]
|
[display]
|
||||||
|
|
||||||
@@ -31,6 +32,7 @@ window/size/initial_position_type=3
|
|||||||
window/size/extend_to_title=true
|
window/size/extend_to_title=true
|
||||||
window/energy_saving/keep_screen_on=false
|
window/energy_saving/keep_screen_on=false
|
||||||
window/stretch/aspect="expand"
|
window/stretch/aspect="expand"
|
||||||
|
window/per_pixel_transparency/allowed=true
|
||||||
|
|
||||||
[dotnet]
|
[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")
|
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]
|
[rendering]
|
||||||
|
|
||||||
|
textures/canvas_textures/default_texture_filter=2
|
||||||
renderer/rendering_method="gl_compatibility"
|
renderer/rendering_method="gl_compatibility"
|
||||||
renderer/rendering_method.mobile="gl_compatibility"
|
renderer/rendering_method.mobile="gl_compatibility"
|
||||||
textures/vram_compression/import_etc2_astc=true
|
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)
|
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
|
|
||||||
|
|||||||
@@ -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)
|
||||||
@@ -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
|
||||||
|
Before Width: | Height: | Size: 450 B After Width: | Height: | Size: 8.0 KiB |
@@ -1,5 +1,5 @@
|
|||||||
extends LineEdit
|
extends LineEdit
|
||||||
@onready var search_results: PopupMenu = $"../SearchResults"
|
@onready var search_results: SearchResults = $"../SearchResults"
|
||||||
|
|
||||||
var values:Dictionary = {}
|
var values:Dictionary = {}
|
||||||
var ErrorMargin:float = 0.9
|
var ErrorMargin:float = 0.9
|
||||||
@@ -8,8 +8,7 @@ var currentTime:float
|
|||||||
var TextChanged:bool
|
var TextChanged:bool
|
||||||
# Called when the node enters the scene tree for the first time.
|
# Called when the node enters the scene tree for the first time.
|
||||||
func _ready() -> void:
|
func _ready() -> void:
|
||||||
search_results.popup_window = false
|
pass
|
||||||
search_results.unfocusable = true
|
|
||||||
|
|
||||||
|
|
||||||
# Called every frame. 'delta' is the elapsed time since the previous frame.
|
# Called every frame. 'delta' is the elapsed time since the previous frame.
|
||||||
@@ -17,46 +16,43 @@ func _process(delta: float) -> void:
|
|||||||
currentTime -= delta
|
currentTime -= delta
|
||||||
if TextChanged:
|
if TextChanged:
|
||||||
if currentTime < 0:
|
if currentTime < 0:
|
||||||
release_focus()
|
updateResults()
|
||||||
TextChanged = false
|
|
||||||
search_results.clear(true)
|
func updateResults():
|
||||||
values.clear()
|
release_focus()
|
||||||
currentTime = updatetime
|
TextChanged = false
|
||||||
var _i:int = 0
|
search_results.clear()
|
||||||
var _s:int = 0
|
values.clear()
|
||||||
for song:String in owner.textSongs:
|
currentTime = updatetime
|
||||||
var margin:float
|
var _i:int = 0
|
||||||
var fragments:Array
|
var _s:int = 0
|
||||||
#print(int((text.length() / 2.0) + 0.5))
|
for song:String in owner.textSongs:
|
||||||
for num in range(int((text.length() / 2.0) + 0.5)):
|
var margin:float
|
||||||
if text.to_lower().substr(int(num*2),2):
|
var fragments:Array
|
||||||
fragments.append(text.to_lower().substr(int(num*2),2))
|
#print(int((text.length() / 2.0) + 0.5))
|
||||||
elif text.to_lower().substr(int(num*2),1):
|
for num in range(int((text.length() / 2.0) + 0.5)):
|
||||||
fragments.append(text.to_lower().substr(int(num*2),1))
|
if text.to_lower().substr(int(num*2),2):
|
||||||
var amountOfFrags:int
|
fragments.append(text.to_lower().substr(int(num*2),2))
|
||||||
for fragment:String in fragments:
|
elif text.to_lower().substr(int(num*2),1):
|
||||||
|
fragments.append(text.to_lower().substr(int(num*2),1))
|
||||||
if song.to_lower().containsn(fragment):
|
var amountOfFrags:int
|
||||||
amountOfFrags +=1
|
for fragment:String in fragments:
|
||||||
|
|
||||||
margin = float(amountOfFrags) / fragments.size()
|
if song.to_lower().containsn(fragment):
|
||||||
if margin > ErrorMargin:
|
amountOfFrags +=1
|
||||||
search_results.add_item(song.replace(".mp3","") )
|
|
||||||
values[_i] = _s
|
margin = float(amountOfFrags) / fragments.size()
|
||||||
_i += 1
|
if margin > ErrorMargin:
|
||||||
_s += 1
|
search_results.add_item(song)
|
||||||
|
values[_i] = _s
|
||||||
|
_i += 1
|
||||||
|
_s += 1
|
||||||
|
|
||||||
func _on_search_results_index_pressed(index: int) -> void:
|
func _on_search_results_index_pressed(index: int) -> void:
|
||||||
print("index " + str(index))
|
print("index " + str(index))
|
||||||
owner.SetSong(values[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:
|
func _on_text_submitted(new_text: String) -> void:
|
||||||
TextChanged = true
|
TextChanged = true
|
||||||
if !search_results.visible:
|
if !search_results.visible:
|
||||||
|
|||||||
@@ -0,0 +1 @@
|
|||||||
|
uid://cchutywgopaq4
|
||||||
@@ -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()
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
uid://c3aaxhp0oim08
|
||||||
@@ -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"]
|
||||||
@@ -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)
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
uid://d0hvudugo3d37
|
||||||
@@ -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,7 +1,7 @@
|
|||||||
extends Button
|
extends Button
|
||||||
|
|
||||||
@onready var search_bar: LineEdit = $"../SearchBar"
|
@onready var search_bar: LineEdit = $"../SearchBar"
|
||||||
@onready var songs_menu: MenuButton = $"../SongsMenu"
|
@onready var songs_menu: Button = $"../SongsMenu"
|
||||||
|
|
||||||
@export var PressedIcon:Texture2D
|
@export var PressedIcon:Texture2D
|
||||||
@export var NotPressedIcon:Texture2D
|
@export var NotPressedIcon:Texture2D
|
||||||
|
|||||||
@@ -0,0 +1 @@
|
|||||||
|
uid://c2t3ignwqoplj
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
uid://dv2vjibopktug
|
||||||
@@ -2,6 +2,8 @@ class_name Settings
|
|||||||
extends Control
|
extends Control
|
||||||
@onready var exit: Button = $Exit
|
@onready var exit: Button = $Exit
|
||||||
|
|
||||||
|
# do NOT think i dont hate this codebase, it sucks man 😭
|
||||||
|
|
||||||
@onready var discord_rich_presence_button: CheckBox = $ScrollContainer/VBoxContainer/DiscordRichPresenceButton
|
@onready var discord_rich_presence_button: CheckBox = $ScrollContainer/VBoxContainer/DiscordRichPresenceButton
|
||||||
|
|
||||||
@onready var pitch_slider: HSlider = $ScrollContainer/VBoxContainer/PitchAdjustSettings/PitchSlider
|
@onready var pitch_slider: HSlider = $ScrollContainer/VBoxContainer/PitchAdjustSettings/PitchSlider
|
||||||
@@ -40,11 +42,14 @@ extends Control
|
|||||||
@onready var select_bg: Button = $ScrollContainer/VBoxContainer/VBoxContainer/HBoxContainer/SelectBG
|
@onready var select_bg: Button = $ScrollContainer/VBoxContainer/VBoxContainer/HBoxContainer/SelectBG
|
||||||
@onready var reset_bg: Button = $ScrollContainer/VBoxContainer/VBoxContainer/HBoxContainer/ResetBG
|
@onready var reset_bg: Button = $ScrollContainer/VBoxContainer/VBoxContainer/HBoxContainer/ResetBG
|
||||||
|
|
||||||
|
@onready var now_playing_window_button: CheckBox = $ScrollContainer/VBoxContainer/NowPlayingWindowButton
|
||||||
|
|
||||||
|
|
||||||
var CurrentBGImagePath:String
|
var CurrentBGImagePath:String
|
||||||
|
|
||||||
# Called when the node enters the scene tree for the first time.
|
# Called when the node enters the scene tree for the first time.
|
||||||
func _ready() -> void:
|
func _ready() -> void:
|
||||||
pass
|
now_playing_window_button.button_pressed = Parent.UsingPlayingNow
|
||||||
|
|
||||||
|
|
||||||
# Called every frame. 'delta' is the elapsed time since the previous frame.
|
# Called every frame. 'delta' is the elapsed time since the previous frame.
|
||||||
@@ -64,7 +69,7 @@ func _process(delta: float) -> void:
|
|||||||
compression_container.show()
|
compression_container.show()
|
||||||
else:
|
else:
|
||||||
compression_container.hide()
|
compression_container.hide()
|
||||||
time_listening_label.text = "Total listening time: %s!" % str(str(int(Parent.TimeSpentListening/60)/60 )
|
time_listening_label.text = tr("LISTENING_TIME") + " %s!" % str(str(int(Parent.TimeSpentListening/60)/60 )
|
||||||
+ "h : " + str((int(Parent.TimeSpentListening) / 60) % 60) + "m : " +
|
+ "h : " + str((int(Parent.TimeSpentListening) / 60) % 60) + "m : " +
|
||||||
str(int(Parent.TimeSpentListening) % 60) + "s")
|
str(int(Parent.TimeSpentListening) % 60) + "s")
|
||||||
|
|
||||||
@@ -143,6 +148,7 @@ func _on_discord_rich_presence_button_toggled(toggled_on: bool) -> void:
|
|||||||
Parent.DiscordRichPresenceEnabled = true
|
Parent.DiscordRichPresenceEnabled = true
|
||||||
else:
|
else:
|
||||||
Parent.DiscordRichPresenceEnabled = false
|
Parent.DiscordRichPresenceEnabled = false
|
||||||
|
Parent.setUpDiscord()
|
||||||
Parent.SaveEverything()
|
Parent.SaveEverything()
|
||||||
|
|
||||||
|
|
||||||
@@ -170,7 +176,10 @@ func _on_select_bg_dialog_file_selected(path: String) -> void:
|
|||||||
Parent.CurrentCustomBackroundImageDirectory = path
|
Parent.CurrentCustomBackroundImageDirectory = path
|
||||||
backround_dir_label.text = path
|
backround_dir_label.text = path
|
||||||
#print(path)
|
#print(path)
|
||||||
Parent.user_bg.texture = ImageTexture.create_from_image(Image.load_from_file(CurrentBGImagePath))
|
if !path.ends_with(".gif"):
|
||||||
|
Parent.user_bg.texture = ImageTexture.create_from_image(Image.load_from_file(CurrentBGImagePath))
|
||||||
|
else:
|
||||||
|
Parent.user_bg.texture = GifManager.animated_texture_from_file(path)
|
||||||
Parent.SaveEverything()
|
Parent.SaveEverything()
|
||||||
|
|
||||||
func _on_reset_bg_pressed() -> void:
|
func _on_reset_bg_pressed() -> void:
|
||||||
@@ -178,3 +187,9 @@ func _on_reset_bg_pressed() -> void:
|
|||||||
Parent.user_bg.texture = null
|
Parent.user_bg.texture = null
|
||||||
Parent.CurrentCustomBackroundImageDirectory = ""
|
Parent.CurrentCustomBackroundImageDirectory = ""
|
||||||
Parent.SaveEverything()
|
Parent.SaveEverything()
|
||||||
|
|
||||||
|
|
||||||
|
func _on_now_playing_window_button_toggled(toggled_on: bool) -> void:
|
||||||
|
Parent.UsingPlayingNow = toggled_on
|
||||||
|
Parent.SaveEverything()
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1 @@
|
|||||||
|
uid://vnpslgl788du
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
uid://xnlvpxy2jwxb
|
||||||
|
Before Width: | Height: | Size: 407 B After Width: | Height: | Size: 9.6 KiB |