From 498115107e7dbef9d6cec8f0cc9e93c95a7cf533 Mon Sep 17 00:00:00 2001 From: "m.cirafisi" Date: Thu, 2 Jul 2026 22:29:22 +0200 Subject: [PATCH] update audio player --- .../assets/audio_player_empty.png | Bin 0 -> 44734 bytes .../assets/audio_player_empty.png.import | 40 ++++ .../assets/audio_player_wheel.png | Bin 0 -> 1150 bytes .../assets/audio_player_wheel.png.import | 40 ++++ core/main_scene_ui/audio_player.gd | 81 +++++-- core/main_scene_ui/audio_player.tscn | 209 ++++++++++-------- core/main_scene_ui/main_scene_ui.tscn | 43 ++-- core/radio/radio.gd | 6 + 8 files changed, 277 insertions(+), 142 deletions(-) create mode 100644 core/main_scene_ui/assets/audio_player_empty.png create mode 100644 core/main_scene_ui/assets/audio_player_empty.png.import create mode 100644 core/main_scene_ui/assets/audio_player_wheel.png create mode 100644 core/main_scene_ui/assets/audio_player_wheel.png.import diff --git a/core/main_scene_ui/assets/audio_player_empty.png b/core/main_scene_ui/assets/audio_player_empty.png new file mode 100644 index 0000000000000000000000000000000000000000..f0685f1b0f5a5ee2943c5da6955ac7c233433bb7 GIT binary patch literal 44734 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 z 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 QBLDyZ07*qoM6N<$f*gc6rT_o{ literal 0 HcmV?d00001 diff --git a/core/main_scene_ui/assets/audio_player_wheel.png.import b/core/main_scene_ui/assets/audio_player_wheel.png.import new file mode 100644 index 0000000..f681eef --- /dev/null +++ b/core/main_scene_ui/assets/audio_player_wheel.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://s8pp2i6bjkps" +path="res://.godot/imported/audio_player_wheel.png-5a27c557d9f373382107e3f2bececfee.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://core/main_scene_ui/assets/audio_player_wheel.png" +dest_files=["res://.godot/imported/audio_player_wheel.png-5a27c557d9f373382107e3f2bececfee.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +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/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +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 diff --git a/core/main_scene_ui/audio_player.gd b/core/main_scene_ui/audio_player.gd index f619838..b8f9c95 100644 --- a/core/main_scene_ui/audio_player.gd +++ b/core/main_scene_ui/audio_player.gd @@ -1,53 +1,90 @@ extends Control @export var radio: Radio +@export var scroll_speed: float = 60.0 +@export var wheel_speed: float = -2.0 @onready var track_label: Label = $%TrackLabel -@onready var prev_track_icon_button: Button = $%PrevTrackIconButton -@onready var play_pause_icon_button: Button = $%PlayPauseIconButton -@onready var next_track_icon_button: Button = $%NextTrackIconButton -@onready var increase_volume_icon_button: Button = $%IncreaseVolumeIconButton -@onready var decrease_volume_icon_button: Button = $%DecreaseVolumeIconButton +@onready var prev_track_button: Button = $%PrevTrackButton +@onready var play_track_button: Button = $%PlayTrackButton +@onready var pause_track_button: Button = $%PauseTrackButton +@onready var next_track_button: Button = $%NextTrackButton +@onready var increase_volume_button: Button = $%IncreaseVolumeButton +@onready var decrease_volume_button: Button = $%DecreaseVolumeButton +@onready var left_wheel: TextureRect = $%LeftWheel +@onready var right_wheel: TextureRect = $%RightWheel func _ready() -> void: - prev_track_icon_button.pressed.connect(_on_prev_track_icon_button_pressed) - play_pause_icon_button.pressed.connect(_on_play_pause_icon_button_pressed) - next_track_icon_button.pressed.connect(_on_next_track_icon_button_pressed) - increase_volume_icon_button.pressed.connect(_on_increase_volume_icon_button_pressed) - decrease_volume_icon_button.pressed.connect(_on_decrease_volume_icon_button_pressed) + prev_track_button.pressed.connect(_on_prev_track_button_pressed) + play_track_button.pressed.connect(_on_play_track_button_pressed) + pause_track_button.pressed.connect(_on_pause_track_button_pressed) + next_track_button.pressed.connect(_on_next_track_button_pressed) + increase_volume_button.pressed.connect(_on_increase_volume_button_pressed) + decrease_volume_button.pressed.connect(_on_decrease_volume_button_pressed) if radio: radio.track_changed.connect(_on_radio_track_changed) if radio.stream and radio.stream.resource_path: track_label.text = radio.stream.resource_path.get_file().get_basename().capitalize() - play_pause_icon_button.image = play_pause_icon_button.images[1] else: track_label.text = "Unknown Track" +func _process(delta: float) -> void: + if radio and radio.playing and not radio.stream_paused: + if left_wheel: + left_wheel.rotation += wheel_speed * delta + if right_wheel: + right_wheel.rotation += wheel_speed * delta + + if track_label and track_label.get_parent_control(): + track_label.position.x += scroll_speed * delta + + var text_width = track_label.get_minimum_size().x + + var text_left_edge = track_label.position.x + (track_label.size.x - text_width) / 2.0 + + if text_left_edge > track_label.get_parent_control().size.x: + track_label.position.x = -(track_label.size.x + text_width) / 2.0 + func _on_radio_track_changed(track_name: String) -> void: track_label.text = track_name - play_pause_icon_button.image = play_pause_icon_button.images[1] -func _on_prev_track_icon_button_pressed() -> void: +func _play_button_tween() -> void: + TweenFX.stop_all(self) + scale = Vector2.ONE + rotation = 0.0 + modulate.a = 1.0 + TweenFX.press_rotate(self) + +func _on_prev_track_button_pressed() -> void: if radio: radio.prev_track() + _play_button_tween() -func _on_play_pause_icon_button_pressed() -> void: +func _on_play_track_button_pressed() -> void: + if radio: + if !radio.stream: + radio.next_track() + else: + radio.unpause() + _play_button_tween() + +func _on_pause_track_button_pressed() -> void: if radio: if radio.stream: - radio.toggle_pause() - else: - radio.next_track() - var play_pause_index = 0 if radio.stream_paused else 1 - play_pause_icon_button.image = play_pause_icon_button.images[play_pause_index] + radio.pause() + _play_button_tween() -func _on_next_track_icon_button_pressed() -> void: +func _on_next_track_button_pressed() -> void: if radio: radio.next_track() + _play_button_tween() -func _on_increase_volume_icon_button_pressed() -> void: +func _on_increase_volume_button_pressed() -> void: var current_vol = AudioManager.get_audio_bus_volume("Music", 1.0) AudioManager.set_audio_bus_volume("Music", current_vol + 0.1) + _play_button_tween() -func _on_decrease_volume_icon_button_pressed() -> void: +func _on_decrease_volume_button_pressed() -> void: var current_vol = AudioManager.get_audio_bus_volume("Music", 1.0) AudioManager.set_audio_bus_volume("Music", current_vol - 0.1) + _play_button_tween() diff --git a/core/main_scene_ui/audio_player.tscn b/core/main_scene_ui/audio_player.tscn index 81795e4..b021451 100644 --- a/core/main_scene_ui/audio_player.tscn +++ b/core/main_scene_ui/audio_player.tscn @@ -1,132 +1,157 @@ [gd_scene format=3 uid="uid://dg4f3v0ukpmay"] [ext_resource type="Script" uid="uid://c4kekqicrv4m8" path="res://core/main_scene_ui/audio_player.gd" id="1_i2mrl"] -[ext_resource type="PackedScene" uid="uid://2tqofxxxnvhv" path="res://core/main_scene_ui/icon_button.tscn" id="1_ucnyb"] [ext_resource type="Theme" uid="uid://bg8megpn77mod" path="res://core/font/main_theme.tres" id="2_0koyu"] -[ext_resource type="Texture2D" uid="uid://cqx45c744325t" path="res://core/main_scene_ui/assets/button_audio_previous.png" id="3_netjv"] -[ext_resource type="Texture2D" uid="uid://bdnevc7ewu5qe" path="res://core/main_scene_ui/assets/button_audio_play.png" id="4_urwwp"] -[ext_resource type="Texture2D" uid="uid://d2ft1kea45hec" path="res://core/main_scene_ui/assets/button_audio_next.png" id="5_0koyu"] -[ext_resource type="Texture2D" uid="uid://vx7wa6afj4ri" path="res://core/main_scene_ui/assets/button_audio_pause.png" id="5_urwwp"] -[ext_resource type="Texture2D" uid="uid://b0mir57askv7j" path="res://core/main_scene_ui/assets/button_audio_on.png" id="6_xv7rp"] -[ext_resource type="Texture2D" uid="uid://dbxhxvvg4s8ru" path="res://core/main_scene_ui/assets/button_audio_off.png" id="7_7ib2x"] +[ext_resource type="Texture2D" uid="uid://s8pp2i6bjkps" path="res://core/main_scene_ui/assets/audio_player_wheel.png" id="4_n5r1o"] +[ext_resource type="Texture2D" uid="uid://bgrmy57xhg2gj" path="res://core/main_scene_ui/assets/audio_player_empty.png" id="10_xv7rp"] [node name="AudioPlayer" type="Control" unique_id=425192018] +custom_minimum_size = Vector2(241, 179) layout_mode = 3 -anchor_right = 0.15208334 -anchor_bottom = 0.10925926 +anchor_right = 0.12552084 +anchor_bottom = 0.16574074 +offset_right = -241.00002 +offset_bottom = -179.0 +pivot_offset_ratio = Vector2(0.5, 0.5) +mouse_filter = 2 script = ExtResource("1_i2mrl") +scroll_speed = 30.0 metadata/_edit_use_anchors_ = true -[node name="HBoxContainer" type="HBoxContainer" parent="." unique_id=1300382168] +[node name="TextureRect" type="TextureRect" parent="." unique_id=1764222864] +layout_mode = 1 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +pivot_offset_ratio = Vector2(0.5, 0.5) +mouse_filter = 2 +texture = ExtResource("10_xv7rp") +metadata/_edit_use_anchors_ = true + +[node name="DisplayContainer" type="Control" parent="." unique_id=1280352652] +clip_contents = true +layout_mode = 1 +anchors_preset = 7 +anchor_left = 0.5 +anchor_top = 1.0 +anchor_right = 0.5 +anchor_bottom = 1.0 +offset_left = -85.5 +offset_top = -84.0 +offset_right = 83.5 +offset_bottom = -52.0 +grow_horizontal = 2 +grow_vertical = 0 + +[node name="TrackLabel" type="Label" parent="DisplayContainer" unique_id=441671750] +unique_name_in_owner = true layout_mode = 1 anchors_preset = 15 anchor_right = 1.0 anchor_bottom = 1.0 grow_horizontal = 2 grow_vertical = 2 -metadata/_edit_use_anchors_ = true - -[node name="VBoxContainer" type="VBoxContainer" parent="HBoxContainer" unique_id=1923985665] -layout_mode = 2 -metadata/_edit_use_anchors_ = true - -[node name="TrackLabel" type="Label" parent="HBoxContainer/VBoxContainer" unique_id=1430240022] -unique_name_in_owner = true -layout_mode = 2 -size_flags_horizontal = 4 theme = ExtResource("2_0koyu") -theme_override_font_sizes/font_size = 24 +theme_override_font_sizes/font_size = 12 text = "Uknown Track" horizontal_alignment = 1 vertical_alignment = 1 -[node name="IconButtonsRow" type="HBoxContainer" parent="HBoxContainer/VBoxContainer" unique_id=1734127019] +[node name="MarginContainer" type="MarginContainer" parent="." unique_id=1829043318] +layout_mode = 1 +anchors_preset = 12 +anchor_top = 1.0 +anchor_right = 1.0 +anchor_bottom = 1.0 +offset_top = -40.0 +offset_bottom = -8.0 +grow_horizontal = 2 +grow_vertical = 0 +mouse_filter = 2 +theme_override_constants/margin_left = 24 +theme_override_constants/margin_right = 24 + +[node name="HBoxContainer" type="HBoxContainer" parent="MarginContainer" unique_id=1300382168] layout_mode = 2 +size_flags_horizontal = 0 +mouse_filter = 2 +theme_override_constants/separation = 0 alignment = 1 -[node name="PrevTrackIconButton" parent="HBoxContainer/VBoxContainer/IconButtonsRow" unique_id=1750448019 instance=ExtResource("1_ucnyb")] +[node name="PrevTrackButton" type="Button" parent="MarginContainer/HBoxContainer" unique_id=1132927190] unique_name_in_owner = true +custom_minimum_size = Vector2(32, 0) layout_mode = 2 -image = ExtResource("3_netjv") +size_flags_horizontal = 4 +flat = true -[node name="Texture" parent="HBoxContainer/VBoxContainer/IconButtonsRow/PrevTrackIconButton" index="0" unique_id=1071359322] -anchors_preset = -1 -offset_left = 116.66667 -offset_top = 131.3789 -offset_right = -116.666664 -offset_bottom = -131.3789 -texture = ExtResource("3_netjv") -metadata/_edit_use_anchors_ = true - -[node name="PlayPauseIconButton" parent="HBoxContainer/VBoxContainer/IconButtonsRow" unique_id=1533336956 instance=ExtResource("1_ucnyb")] +[node name="PlayTrackButton" type="Button" parent="MarginContainer/HBoxContainer" unique_id=445406105] unique_name_in_owner = true +custom_minimum_size = Vector2(32, 0) layout_mode = 2 -image = ExtResource("4_urwwp") -images = Array[Texture]([ExtResource("4_urwwp"), ExtResource("5_urwwp")]) +size_flags_horizontal = 5 +flat = true -[node name="Texture" parent="HBoxContainer/VBoxContainer/IconButtonsRow/PlayPauseIconButton" index="0" unique_id=1071359322] -anchors_preset = -1 -offset_left = 116.66667 -offset_top = 131.3789 -offset_right = -116.666664 -offset_bottom = -131.3789 -texture = ExtResource("4_urwwp") -metadata/_edit_use_anchors_ = true - -[node name="NextTrackIconButton" parent="HBoxContainer/VBoxContainer/IconButtonsRow" unique_id=2108379455 instance=ExtResource("1_ucnyb")] +[node name="NextTrackButton" type="Button" parent="MarginContainer/HBoxContainer" unique_id=1836743157] unique_name_in_owner = true +custom_minimum_size = Vector2(32, 0) layout_mode = 2 -image = ExtResource("5_0koyu") +size_flags_horizontal = 5 +flat = true -[node name="Texture" parent="HBoxContainer/VBoxContainer/IconButtonsRow/NextTrackIconButton" index="0" unique_id=1071359322] -anchors_preset = -1 -offset_left = 116.66667 -offset_top = 131.3789 -offset_right = -116.666664 -offset_bottom = -131.3789 -texture = ExtResource("5_0koyu") -metadata/_edit_use_anchors_ = true - -[node name="VBoxContainer2" type="VBoxContainer" parent="HBoxContainer" unique_id=1843266535] -layout_mode = 2 -size_flags_vertical = 4 - -[node name="IncreaseVolumeIconButton" parent="HBoxContainer/VBoxContainer2" unique_id=1788399963 instance=ExtResource("1_ucnyb")] +[node name="PauseTrackButton" type="Button" parent="MarginContainer/HBoxContainer" unique_id=1151045878] unique_name_in_owner = true -custom_minimum_size = Vector2(40, 40) +custom_minimum_size = Vector2(32, 0) layout_mode = 2 -size_flags_horizontal = 0 -size_flags_vertical = 3 -image = ExtResource("6_xv7rp") +size_flags_horizontal = 5 +flat = true -[node name="Texture" parent="HBoxContainer/VBoxContainer2/IncreaseVolumeIconButton" index="0" unique_id=1071359322] -custom_minimum_size = Vector2(40, 40) -offset_left = 106.66667 -offset_top = 107.01433 -offset_right = -106.666664 -offset_bottom = -107.014336 -texture = ExtResource("6_xv7rp") -metadata/_edit_use_anchors_ = true - -[node name="DecreaseVolumeIconButton" parent="HBoxContainer/VBoxContainer2" unique_id=399629327 instance=ExtResource("1_ucnyb")] +[node name="IncreaseVolumeButton" type="Button" parent="MarginContainer/HBoxContainer" unique_id=809451843] unique_name_in_owner = true -custom_minimum_size = Vector2(40, 40) +custom_minimum_size = Vector2(32, 0) layout_mode = 2 -size_flags_horizontal = 0 -size_flags_vertical = 3 -image = ExtResource("7_7ib2x") +size_flags_horizontal = 5 +flat = true -[node name="Texture" parent="HBoxContainer/VBoxContainer2/DecreaseVolumeIconButton" index="0" unique_id=1071359322] -custom_minimum_size = Vector2(40, 40) -offset_left = 106.66667 -offset_top = 107.01433 -offset_right = -106.666664 -offset_bottom = -107.014336 -texture = ExtResource("7_7ib2x") -metadata/_edit_use_anchors_ = true +[node name="DecreaseVolumeButton" type="Button" parent="MarginContainer/HBoxContainer" unique_id=1399480885] +unique_name_in_owner = true +custom_minimum_size = Vector2(32, 0) +layout_mode = 2 +size_flags_horizontal = 5 +flat = true -[editable path="HBoxContainer/VBoxContainer/IconButtonsRow/PrevTrackIconButton"] -[editable path="HBoxContainer/VBoxContainer/IconButtonsRow/PlayPauseIconButton"] -[editable path="HBoxContainer/VBoxContainer/IconButtonsRow/NextTrackIconButton"] -[editable path="HBoxContainer/VBoxContainer2/IncreaseVolumeIconButton"] -[editable path="HBoxContainer/VBoxContainer2/DecreaseVolumeIconButton"] +[node name="LeftWheel" type="TextureRect" parent="." unique_id=1719200441] +unique_name_in_owner = true +layout_mode = 1 +anchors_preset = 8 +anchor_left = 0.5 +anchor_top = 0.5 +anchor_right = 0.5 +anchor_bottom = 0.5 +offset_left = -64.5 +offset_top = -51.5 +offset_right = -33.5 +offset_bottom = -20.5 +grow_horizontal = 2 +grow_vertical = 2 +pivot_offset_ratio = Vector2(0.5, 0.5) +texture = ExtResource("4_n5r1o") +stretch_mode = 2 + +[node name="RightWheel" type="TextureRect" parent="." unique_id=960520776] +unique_name_in_owner = true +layout_mode = 1 +anchors_preset = 8 +anchor_left = 0.5 +anchor_top = 0.5 +anchor_right = 0.5 +anchor_bottom = 0.5 +offset_left = 35.5 +offset_top = -51.5 +offset_right = 66.5 +offset_bottom = -20.5 +grow_horizontal = 2 +grow_vertical = 2 +pivot_offset_ratio = Vector2(0.5, 0.5) +texture = ExtResource("4_n5r1o") +stretch_mode = 2 diff --git a/core/main_scene_ui/main_scene_ui.tscn b/core/main_scene_ui/main_scene_ui.tscn index ed1c0ff..28950f4 100644 --- a/core/main_scene_ui/main_scene_ui.tscn +++ b/core/main_scene_ui/main_scene_ui.tscn @@ -80,28 +80,23 @@ layout_mode = 2 [node name="IconButton" parent="Rows/TimeOfDayRow" index="0" unique_id=1750448019] apply_texture_on_selection = false -enable_tooltip = null [node name="IconButton2" parent="Rows/TimeOfDayRow" index="1" unique_id=638856991] data = "Sunrise" image = ExtResource("3_kd244") -enable_tooltip = null [node name="IconButton3" parent="Rows/TimeOfDayRow" index="2" unique_id=1662483962] data = "Day" image = ExtResource("4_lapqe") -enable_tooltip = null [node name="IconButton4" parent="Rows/TimeOfDayRow" index="3" unique_id=1375190490] data = "Night" -enable_tooltip = null [node name="IconButton5" parent="Rows/TimeOfDayRow" index="4" unique_id=315412403] data = "Cycle" image = ExtResource("5_fjfwt") images = Array[Texture]([ExtResource("5_fjfwt"), ExtResource("6_luj56")]) apply_texture_on_selection = false -enable_tooltip = null [node name="ShowContainerTween" parent="Rows/TimeOfDayRow" index="5" unique_id=160227524] tween_types = Array[String](["impact_land", "fade_in"]) @@ -116,35 +111,30 @@ layout_mode = 2 [node name="IconButton" parent="Rows/WeatherRow" index="0" unique_id=1750448019] image = ExtResource("6_yggu7") apply_texture_on_selection = false -enable_tooltip = null [node name="IconButton2" parent="Rows/WeatherRow" index="1" unique_id=638856991] data = "Snow" image = ExtResource("6_xykej") images = Array[Texture]([ExtResource("6_xykej"), ExtResource("6_167gj")]) apply_texture_on_selection = false -enable_tooltip = null [node name="IconButton3" parent="Rows/WeatherRow" index="2" unique_id=1662483962] data = "Rain" image = ExtResource("7_jpmw5") images = Array[Texture]([ExtResource("7_jpmw5"), ExtResource("8_c5e3i")]) apply_texture_on_selection = false -enable_tooltip = null [node name="IconButton4" parent="Rows/WeatherRow" index="3" unique_id=1375190490] data = "Storm" image = ExtResource("8_i1mwp") images = Array[Texture]([ExtResource("8_i1mwp"), ExtResource("10_th1nj")]) apply_texture_on_selection = false -enable_tooltip = null [node name="IconButton5" parent="Rows/WeatherRow" index="4" unique_id=315412403] data = "Wind" image = ExtResource("11_gcgq4") images = Array[Texture]([ExtResource("11_gcgq4"), ExtResource("12_fjfwt")]) apply_texture_on_selection = false -enable_tooltip = null [node name="ShowContainerTween" parent="Rows/WeatherRow" index="5" unique_id=160227524 node_paths=PackedStringArray("targets")] targets = [NodePath("../IconButton2"), NodePath("../IconButton3"), NodePath("../IconButton4"), NodePath("../IconButton5"), NodePath("../IconButton6")] @@ -163,7 +153,6 @@ size_flags_vertical = 3 data = "Random" image = ExtResource("14_gcgq4") apply_texture_on_selection = false -enable_tooltip = null [node name="TopButtons" type="VBoxContainer" parent="." unique_id=1644086668] layout_mode = 1 @@ -212,13 +201,11 @@ theme_override_constants/separation = 8 unique_name_in_owner = true layout_mode = 2 image = ExtResource("19_vywaj") -enable_tooltip = null [node name="CollectibleIconButton" parent="MiddleButtons" unique_id=520235552 instance=ExtResource("3_t1xop")] unique_name_in_owner = true layout_mode = 2 image = ExtResource("19_yggu7") -enable_tooltip = null [node name="PhotoIconButton" parent="MiddleButtons" unique_id=1863476241 instance=ExtResource("3_t1xop")] unique_name_in_owner = true @@ -252,7 +239,6 @@ size_flags_vertical = 1 [node name="IconButton" parent="InfoLabels/CamerasRow" index="0" unique_id=1750448019] image = ExtResource("28_mukbp") apply_texture_on_selection = false -enable_tooltip = null [node name="IconButton2" parent="InfoLabels/CamerasRow" index="1" unique_id=638856991] data = "1" @@ -278,6 +264,14 @@ image = ExtResource("32_nqdet") enable_tooltip = true tooltip_image = ExtResource("36_yts6a") +[node name="ShowContainerTween" parent="InfoLabels/CamerasRow" index="5" unique_id=160227524 node_paths=PackedStringArray("targets")] +targets = [NodePath("../IconButton2"), NodePath("../IconButton3"), NodePath("../IconButton4"), NodePath("../IconButton5"), NodePath("../IconButton6")] +tween_types = Array[String](["impact_land", "fade_in"]) + +[node name="HideContainerTween" parent="InfoLabels/CamerasRow" index="6" unique_id=1169748375 node_paths=PackedStringArray("targets")] +targets = [NodePath("../IconButton6"), NodePath("../IconButton5"), NodePath("../IconButton4"), NodePath("../IconButton3"), NodePath("../IconButton2")] +tween_types = Array[String](["impact_land", "fade_out"]) + [node name="IconButton6" parent="InfoLabels/CamerasRow" unique_id=1017773972 instance=ExtResource("3_t1xop")] visible = false layout_mode = 2 @@ -288,14 +282,6 @@ image = ExtResource("33_l4tct") enable_tooltip = true tooltip_image = ExtResource("38_vv0oj") -[node name="ShowContainerTween" parent="InfoLabels/CamerasRow" index="6" unique_id=160227524 node_paths=PackedStringArray("targets")] -targets = [NodePath("../IconButton2"), NodePath("../IconButton3"), NodePath("../IconButton4"), NodePath("../IconButton5"), NodePath("../IconButton6")] -tween_types = Array[String](["impact_land", "fade_in"]) - -[node name="HideContainerTween" parent="InfoLabels/CamerasRow" index="7" unique_id=1169748375 node_paths=PackedStringArray("targets")] -targets = [NodePath("../IconButton6"), NodePath("../IconButton5"), NodePath("../IconButton4"), NodePath("../IconButton3"), NodePath("../IconButton2")] -tween_types = Array[String](["impact_land", "fade_out"]) - [node name="TimeLabel" type="Label" parent="InfoLabels" unique_id=18932607] unique_name_in_owner = true layout_mode = 2 @@ -320,14 +306,15 @@ offset_bottom = -20.0 [node name="AudioPlayer" parent="." unique_id=425192018 node_paths=PackedStringArray("radio") instance=ExtResource("7_lapqe")] unique_name_in_owner = true layout_mode = 1 +anchors_preset = 3 anchor_left = 1.0 -anchor_top = 0.99814814 +anchor_top = 1.0 anchor_right = 1.0 -anchor_bottom = 0.99814814 -offset_left = -166.0 -offset_top = -74.0 -offset_right = -166.0 -offset_bottom = -74.0 +anchor_bottom = 1.0 +offset_left = -261.0 +offset_top = -199.0 +offset_right = -20.0 +offset_bottom = -20.0 grow_horizontal = 0 grow_vertical = 0 radio = NodePath("../Radio") diff --git a/core/radio/radio.gd b/core/radio/radio.gd index a120bca..e7354d8 100644 --- a/core/radio/radio.gd +++ b/core/radio/radio.gd @@ -35,6 +35,12 @@ func prev_track(): func toggle_pause(): stream_paused = !stream_paused +func pause(): + stream_paused = true + +func unpause(): + stream_paused = false + func stop_radio(): stop() stream_paused = false