Jukebox TGUI update, Earphones autoplay, sound keys refactor (#21630)

V2 of [previous music playing
PR](https://github.com/Aurorastation/Aurora.3/pull/21466). TLDR no
longer uses the connect_range component for implementation because it
turned out a bit too inflexible for overlapping music players.

Removes a NanoUI template for the [TGUI
update](https://github.com/Aurorastation/Aurora.3/pull/21046).

New changelog:
  - refactor: "Ported Jukebox's NanoUI interface to TGUI."
- refactor: "Ported Jukebox audio playing functionality to a component."
- refactor: "Sound keys refactored from singletons to datums, along with
larger breakout of sound.dm to allow for easier SFX updates in future."
  - code_imp: "Expanded track datums to include track lengths."
- code_imp: "Reorganized music file folders for more intuitive access."
  - rscadd: "Earphone status feedback text now includes track length."
  - rscadd: "Added autoplay functionality to earphones."
- bugfix: "Fixed earphones' 'Previous Song' verb not sending you to the
end of the playlist when used while the first track is selected."
- bugfix: "Fixed gain adjustment for 'Konyang-1' (-23 dB -> standard
-9.8 dB)."
- bugfix: "Fixed y-offset of audioconsole-running overlay animation to
line up with the actual screen."

---------

Co-authored-by: VMSolidus <evilexecutive@gmail.com>
This commit is contained in:
Batrachophreno
2026-01-22 16:54:40 +00:00
committed by GitHub
co-authored by VMSolidus
parent 4bc8527606
commit 7d058fc613
316 changed files with 6462 additions and 5993 deletions
@@ -7,7 +7,7 @@
icon = 'icons/turf/desert.dmi'
icon_state = "desert"
has_resources = TRUE
footstep_sound = /singleton/sound_category/asteroid_footstep
footstep_sound = SFX_FOOTSTEP_ASTEROID
turf_flags = TURF_FLAG_BACKGROUND
var/diggable = 1
@@ -122,20 +122,20 @@
desc = "Some water shallow enough to wade through."
icon = 'icons/misc/beach.dmi'
icon_state = "seashallow"
footstep_sound = /singleton/sound_category/water_footstep
footstep_sound = SFX_FOOTSTEP_WATER
/turf/simulated/floor/exoplanet/permafrost
name = "permafrost"
desc = "The ground here is frozen solid by the cold."
icon = 'icons/turf/flooring/snow.dmi'
icon_state = "permafrost"
footstep_sound = /singleton/sound_category/asteroid_footstep
footstep_sound = SFX_FOOTSTEP_ASTEROID
/turf/simulated/floor/exoplanet/mineral
name = "sand"
desc = "It's coarse and gets everywhere."
dirt_color = "#544c31"
footstep_sound = /singleton/sound_category/sand_footstep
footstep_sound = SFX_FOOTSTEP_SAND
//Concrete
/turf/simulated/floor/exoplanet/concrete
@@ -5,7 +5,7 @@
tile_outline = "carpet"
broken_overlay = "carpet"
initial_flooring = /singleton/flooring/carpet
footstep_sound = /singleton/sound_category/carpet_footstep
footstep_sound = SFX_FOOTSTEP_CARPET
has_resources = FALSE
/turf/simulated/floor/exoplanet/carpet/art
@@ -1,6 +1,6 @@
/turf/simulated/floor/exoplanet/ceiling
name = "ceiling plating"
footstep_sound = /singleton/sound_category/plating_footstep
footstep_sound = SFX_FOOTSTEP_PLATING
roof_type = null
icon = 'icons/turf/flooring/plating.dmi'
icon_state = "asteroidplating"
@@ -4,4 +4,4 @@
desc = "A tough, compacted mineral surface, polished to a mirror sheen."
icon = 'icons/turf/crystal.dmi'
icon_state = "crystal"
footstep_sound = /singleton/sound_category/glasscrack_sound
footstep_sound = SFX_GLASS_CRACK
@@ -3,6 +3,6 @@
gender = PLURAL
icon = 'icons/turf/flooring/diona.dmi'
icon_state = "diona0"
footstep_sound = /singleton/sound_category/grass_footstep
footstep_sound = SFX_FOOTSTEP_GRASS
initial_flooring = /singleton/flooring/diona
has_resources = FALSE
@@ -5,7 +5,7 @@
icon = 'icons/turf/jungle.dmi'
icon_state = "greygrass"
color = "#799c4b"
footstep_sound = /singleton/sound_category/grass_footstep
footstep_sound = SFX_FOOTSTEP_GRASS
/turf/simulated/floor/exoplanet/grass/Initialize()
. = ..()
@@ -45,7 +45,7 @@
icon_state = "marsh"
color = null
has_edge_icon = null
footstep_sound = /singleton/sound_category/water_footstep
footstep_sound = SFX_FOOTSTEP_WATER
/turf/simulated/floor/exoplanet/grass/marsh/Initialize()
. = ..()
@@ -4,7 +4,7 @@
desc = "An alien moss covers the ground."
icon = 'icons/turf/flooring/exoplanet/konyang.dmi'
icon_state = "grass"
footstep_sound = /singleton/sound_category/grass_footstep
footstep_sound = SFX_FOOTSTEP_GRASS
/turf/simulated/floor/exoplanet/konyang/no_edge
has_edge_icon = FALSE
@@ -52,7 +52,7 @@
icon = 'icons/turf/flooring/exoplanet/konyang.dmi'
icon_state = "dirt"
layer = 1.99//to let the grass edges go over it, which otherwise doesnt happen due to positioning and byond layering
footstep_sound = /singleton/sound_category/asteroid_footstep
footstep_sound = SFX_FOOTSTEP_ASTEROID
has_edge_icon = FALSE
/turf/simulated/floor/exoplanet/dirt_konyang/cave
@@ -69,6 +69,6 @@
desc = "Some fine, white sand."
icon = 'icons/turf/flooring/exoplanet/konyang/konyang_beach.dmi'
icon_state = "sand"
footstep_sound = /singleton/sound_category/asteroid_footstep
footstep_sound = SFX_FOOTSTEP_ASTEROID
smoothing_flags = SMOOTH_FALSE
has_edge_icon = FALSE
@@ -3,7 +3,7 @@
gender = PLURAL
desc = "It's coarse and gets everywhere."
dirt_color = "#544c31"
footstep_sound = /singleton/sound_category/sand_footstep
footstep_sound = SFX_FOOTSTEP_SAND
/turf/simulated/floor/exoplanet/mineral/adhomai
name = "icy rock"
@@ -2,7 +2,7 @@
name = "plating"
icon = 'icons/turf/flooring/plating.dmi'
icon_state = "plating"
footstep_sound = /singleton/sound_category/plating_footstep
footstep_sound = SFX_FOOTSTEP_PLATING
has_resources = FALSE
/turf/simulated/floor/exoplanet/plating/asteroid
@@ -5,7 +5,7 @@
icon = 'icons/turf/desert.dmi'
icon_state = "desert"
dirt_color = "#ae9e66"
footstep_sound = /singleton/sound_category/sand_footstep
footstep_sound = SFX_FOOTSTEP_SAND
/turf/simulated/floor/exoplanet/desert/Initialize()
. = ..()
@@ -5,7 +5,7 @@
icon = 'icons/turf/smooth/snow40.dmi'
icon_state = "snow"
dirt_color = "#e3e7e8"
footstep_sound = /singleton/sound_category/snow_footstep
footstep_sound = SFX_FOOTSTEP_SNOW
smoothing_flags = SMOOTH_MORE | SMOOTH_BORDER | SMOOTH_NO_CLEAR_ICON
smoothing_hints = SMOOTHHINT_CUT_F | SMOOTHHINT_ONLY_MATCH_TURF | SMOOTHHINT_TARGETS_NOT_UNIQUE
canSmoothWith = list(
@@ -39,7 +39,7 @@
desc = "Icy, frozen ground."
icon = 'icons/turf/flooring/snow.dmi'
icon_state = "permafrost"
footstep_sound = /singleton/sound_category/asteroid_footstep
footstep_sound = SFX_FOOTSTEP_ASTEROID
/turf/simulated/floor/exoplanet/permafrost/cold //temperature is -5 celsius
temperature = 268.15
@@ -4,7 +4,7 @@
icon = 'icons/misc/beach.dmi'
icon_state = "seadeep"
desc = "It is wet."
footstep_sound = /singleton/sound_category/water_footstep
footstep_sound = SFX_FOOTSTEP_WATER
movement_cost = 4
has_resources = FALSE
///How many objects are currently on this turf? Used to stop empty water turfs from processing.
@@ -117,7 +117,7 @@
desc = "Some water shallow enough to wade through."
icon = 'icons/misc/beach.dmi'
icon_state = "seashallow"
footstep_sound = /singleton/sound_category/water_footstep
footstep_sound = SFX_FOOTSTEP_WATER
deep = FALSE
var/reagent_type = /singleton/reagent/water
@@ -3,7 +3,7 @@
icon = 'icons/turf/flooring/tiles.dmi'
icon_state = "wood"
initial_flooring = /singleton/flooring/wood
footstep_sound = /singleton/sound_category/wood_footstep
footstep_sound = SFX_FOOTSTEP_WOOD
tile_outline = "wood"
tile_decal_state = "wood"
broken_overlay = "wood"
@@ -392,7 +392,7 @@
if(direction != "clear")
security_announcement.Announce("Enemy fire inbound, enemy fire inbound! [sanitizeSafe(direction)]!", "Brace for shock!", sound('sound/mecha/internaldmgalarm.ogg', volume = 90), 0)
else
security_announcement.Announce("No fire is incoming at the current moment, resume damage control.", "Space clear!", sound('sound/misc/announcements/security_level_old.ogg'), 0)
security_announcement.Announce("No fire is incoming at the current moment, resume damage control.", "Space clear!", sound('sound/ai/announcements/security_level_old.ogg'), 0)
return TRUE
/obj/machinery/shipsensors