From 7736089dcfd803dcee655ccd9ea806a4e70302a7 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Sat, 31 Aug 2024 18:45:29 -0700 Subject: [PATCH 01/33] Update Credits (#837) This is an automated Pull Request. This PR updates the GitHub contributors in the credits section. Co-authored-by: SimpleStation Changelogs --- Resources/Credits/GitHub.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Resources/Credits/GitHub.txt b/Resources/Credits/GitHub.txt index 40424a21e0e..1332902a299 100644 --- a/Resources/Credits/GitHub.txt +++ b/Resources/Credits/GitHub.txt @@ -1 +1 @@ -0x6273, 2013HORSEMEATSCANDAL, 20kdc, 21Melkuu, 4dplanner, 612git, 778b, Ablankmann, Acruid, actioninja, adamsong, Admiral-Obvious-001, Adrian16199, Aerocrux, Aexxie, africalimedrop, Agoichi, Ahion, AJCM-git, AjexRose, Alekshhh, AlexMorgan3817, AlmondFlour, AlphaQwerty, Altoids1, amylizzle, ancientpower, angelofallars, ArchPigeon, Arendian, arimah, Arteben, AruMoon, as334, AsikKEsel, asperger-sind, aspiringLich, avghdev, AzzyIsNotHere, BananaFlambe, BasedUser, beck-thompson, BGare, BingoJohnson-zz, BismarckShuffle, Bixkitts, Blackern5000, Blazeror, BlueHNT, Boaz1111, BobdaBiscuit, brainfood1183, BramvanZijp, Brandon-Huu, Bribrooo, Bright0, brndd, BubblegumBlue, BYONDFuckery, c4llv07e, CaasGit, CakeQ, CaptainSqrBeard, Carbonhell, Carolyn3114, CatTheSystem, Centronias, chairbender, Charlese2, Cheackraze, cheesePizza2, Chief-Engineer, chromiumboy, Chronophylos, clorl, Clyybber, CodedCrow, ColdAutumnRain, Colin-Tel, collinlunn, ComicIronic, coolmankid12345, corentt, crazybrain23, creadth, CrigCrag, Crotalus, CrudeWax, CrzyPotato, Cyberboss, d34d10cc, Daemon, daerSeebaer, dahnte, dakamakat, dakimasu, DamianX, DangerRevolution, daniel-cr, Darkenson, DawBla, dch-GH, Deahaka, DEATHB4DEFEAT, DeathCamel58, deathride58, DebugOk, Decappi, Deeeeja, deepdarkdepths, Delete69, deltanedas, DeltaV-Bot, DerbyX, DoctorBeard, DogZeroX, dontbetank, dootythefrooty, Doru991, DoubleRiceEddiedd, DrMelon, DrSmugleaf, drteaspoon420, DTanxxx, DubiousDoggo, Duddino, Dutch-VanDerLinde, Easypoller, eclips_e, EdenTheLiznerd, EEASAS, Efruit, ElectroSR, elthundercloud, Emisse, EmoGarbage404, Endecc, enumerate0, eoineoineoin, ERORR404V1, Errant-4, estacaoespacialpirata, exincore, exp111, Fahasor, FairlySadPanda, Fansana, ficcialfaint, Fildrance, FillerVK, Fishfish458, Flareguy, FluffiestFloof, FluidRock, FoLoKe, fooberticus, Fortune117, FoxxoTrystan, freeman2651, Froffy025, Fromoriss, FungiFellow, GalacticChimp, gbasood, Geekyhobo, Genkail, geraeumig, Ghagliiarghii, Git-Nivrak, github-actions[bot], gituhabu, gluesniffler, GNF54, Golinth, GoodWheatley, graevy, GreyMario, Guess-My-Name, gusxyz, h3half, Hanzdegloker, Hardly3D, harikattar, HerCoyote23, HoofedEar, Hoolny, hord-brayden, hubismal, Hugal31, Huxellberger, iacore, IamVelcroboy, icekot8, igorsaux, ike709, Illiux, Ilya246, IlyaElDunaev, Injazz, Insineer, Interrobang01, IProduceWidgets, ItsMeThom, Jackal298, Jackrost, jamessimo, janekvap, JerryImMouse, Jessetriesagain, jessicamaybe, Jezithyr, jicksaw, JiimBob, JoeHammad1844, JohnGinnane, johnku1, joshepvodka, jproads, Jrpl, juliangiebel, JustArt1m, JustCone14, JustinTrotter, KaiShibaa, kalane15, kalanosh, Kelrak, kerisargit, keronshb, KIBORG04, Killerqu00, KingFroozy, kira-er, Kit0vras, KittenColony, Ko4ergaPunk, komunre, koteq, Krunklehorn, kxvvv, Lamrr, LankLTE, lapatison, Leander-0, leonardo-dabepis, LetterN, Level10Cybermancer, lever1209, liltenhead, LittleBuilderJane, Lomcastar, LordCarve, LordEclipse, LovelyLophi, Lukasz825700516, lunarcomets, luringens, lvvova1, lzimann, lzk228, MACMAN2003, Macoron, MagnusCrowe, ManelNavola, Matz05, MehimoNemo, MeltedPixel, MemeProof, Menshin, Mervill, metalgearsloth, mhamsterr, MilenVolf, Minty642, Mirino97, mirrorcult, misandrie, MishaUnity, MisterMecky, Mith-randalf, Mnemotechnician, Moneyl, Moomoobeef, moony, Morb0, Mr0maks, musicmanvr, Myakot, Myctai, N3X15, Nairodian, Naive817, namespace-Memory, NickPowers43, nikthechampiongr, Nimfar11, Nirnael, nmajask, nok-ko, notafet, notquitehadouken, noudoit, noverd, nuke-haus, NULL882, OCOtheOmega, OctoRocket, OldDanceJacket, onoira, osjarw, Owai-Seek, pali6, Pangogie, patrikturi, PaulRitter, Peptide90, peptron1, Phantom-Lily, PHCodes, PixelTheKermit, PJB3005, Plykiya, pofitlo, pointer-to-null, PolterTzi, PoorMansDreams, potato1234x, ProfanedBane, PrPleGoo, ps3moira, Pspritechologist, Psychpsyo, psykzz, PuroSlavKing, quatre, QuietlyWhisper, qwerltaz, Radosvik, Radrark, Rainbeon, Rainfey, Rane, ravage123321, rbertoche, Redict, RedlineTriad, RednoWCirabrab, RemberBM, RemieRichards, RemTim, rene-descartes2021, RiceMar1244, RieBi, Rinkashikachi, Rockdtben, rolfero, rosieposieeee, Saakra, Samsterious, SaphireLattice, ScalyChimp, scrato, Scribbles0, Serkket, ShadowCommander, Shadowtheprotogen546, SignalWalker, SimpleStation14, Simyon264, Sirionaut, siyengar04, Skarletto, Skrauz, Skyedra, SlamBamActionman, slarticodefast, Slava0135, SleepyScarecrow, Snowni, snowsignal, SonicHDC, SoulSloth, SpaceManiac, SpeltIncorrectyl, spoogemonster, ssdaniel24, stalengd, Stealthbomber16, stellar-novas, StrawberryMoses, superjj18, SweptWasTaken, Szunti, TadJohnson00, takemysoult, TaralGit, Tayrtahn, tday93, TekuNut, TemporalOroboros, tentekal, tgrkzus, thatrandomcanadianguy, TheArturZh, theashtronaut, thedraccx, themias, Theomund, theOperand, TheShuEd, TimrodDX, Titian3, tkdrg, Tmanzxd, tmtmtl30, TokenStyle, tom-leys, tomasalves8, Tomeno, Tornado-Technology, tosatur, Tryded, TsjipTsjip, Tunguso4ka, TurboTrackerss14, Tyler-IN, Tyzemol, UbaserB, UKNOWH, UnicornOnLSD, Uriende, UristMcDorf, Vaaankas, Varen, VasilisThePikachu, veliebm, Veritius, Vermidia, Verslebas, VigersRay, Visne, VMSolidus, volundr-, Voomra, Vordenburg, vulppine, wafehling, WarMechanic, waylon531, weaversam8, whateverusername0, Willhelm53, wixoaGit, WlarusFromDaSpace, wrexbe, xRiriq, yathxyz, Ygg01, YotaXP, YuriyKiss, zach-hill, Zandario, Zap527, Zealith-Gamer, ZelteHonor, zerorulez, zionnBE, zlodo, ZNixian, ZoldorfTheWizard, Zumorica, Zymem +0x6273, 2013HORSEMEATSCANDAL, 20kdc, 21Melkuu, 4dplanner, 612git, 778b, Ablankmann, Acruid, actioninja, adamsong, Admiral-Obvious-001, Adrian16199, Aerocrux, Aexxie, africalimedrop, Agoichi, Ahion, AJCM-git, AjexRose, Alekshhh, AlexMorgan3817, AlmondFlour, AlphaQwerty, Altoids1, amylizzle, ancientpower, angelofallars, ArchPigeon, Arendian, arimah, Arteben, AruMoon, as334, AsikKEsel, asperger-sind, aspiringLich, avghdev, AzzyIsNotHere, BananaFlambe, BasedUser, beck-thompson, BGare, BingoJohnson-zz, BismarckShuffle, Bixkitts, Blackern5000, Blazeror, BlueHNT, Boaz1111, BobdaBiscuit, brainfood1183, BramvanZijp, Brandon-Huu, Bribrooo, Bright0, brndd, BubblegumBlue, BYONDFuckery, c4llv07e, CaasGit, CakeQ, CaptainSqrBeard, Carbonhell, Carolyn3114, CatTheSystem, Centronias, chairbender, Charlese2, Cheackraze, cheesePizza2, Chief-Engineer, chromiumboy, Chronophylos, clorl, Clyybber, CodedCrow, ColdAutumnRain, Colin-Tel, collinlunn, ComicIronic, coolmankid12345, corentt, crazybrain23, creadth, CrigCrag, Crotalus, CrudeWax, CrzyPotato, Cyberboss, d34d10cc, Daemon, daerSeebaer, dahnte, dakamakat, dakimasu, DamianX, DangerRevolution, daniel-cr, Darkenson, DawBla, dch-GH, Deahaka, DEATHB4DEFEAT, DeathCamel58, deathride58, DebugOk, Decappi, Deeeeja, deepdarkdepths, Delete69, deltanedas, DeltaV-Bot, DerbyX, DoctorBeard, DogZeroX, dontbetank, dootythefrooty, Doru991, DoubleRiceEddiedd, DrMelon, DrSmugleaf, drteaspoon420, DTanxxx, DubiousDoggo, Duddino, Dutch-VanDerLinde, Easypoller, eclips_e, EdenTheLiznerd, EEASAS, Efruit, ElectroSR, elthundercloud, Emisse, EmoGarbage404, Endecc, enumerate0, eoineoineoin, ERORR404V1, Errant-4, estacaoespacialpirata, exincore, exp111, Fahasor, FairlySadPanda, Fansana, ficcialfaint, Fildrance, FillerVK, Fishfish458, Flareguy, FluffiestFloof, FluidRock, FoLoKe, fooberticus, Fortune117, FoxxoTrystan, freeman2651, Froffy025, Fromoriss, FungiFellow, GalacticChimp, gbasood, Geekyhobo, Genkail, geraeumig, Ghagliiarghii, Git-Nivrak, github-actions[bot], gituhabu, gluesniffler, GNF54, Golinth, GoodWheatley, graevy, GreyMario, Guess-My-Name, gusxyz, h3half, Hanzdegloker, Hardly3D, harikattar, HerCoyote23, HoofedEar, Hoolny, hord-brayden, hubismal, Hugal31, Huxellberger, iacore, IamVelcroboy, icekot8, igorsaux, ike709, Illiux, Ilya246, IlyaElDunaev, Injazz, Insineer, Interrobang01, IProduceWidgets, ItsMeThom, Jackal298, Jackrost, jamessimo, janekvap, JerryImMouse, Jessetriesagain, jessicamaybe, Jezithyr, jicksaw, JiimBob, JoeHammad1844, JohnGinnane, johnku1, joshepvodka, jproads, Jrpl, juliangiebel, JustArt1m, JustCone14, JustinTrotter, KaiShibaa, kalane15, kalanosh, Kelrak, kerisargit, keronshb, KIBORG04, Killerqu00, KingFroozy, kira-er, Kit0vras, KittenColony, Ko4ergaPunk, komunre, koteq, Krunklehorn, kxvvv, Lamrr, LankLTE, lapatison, Leander-0, leonardo-dabepis, LetterN, Level10Cybermancer, lever1209, liltenhead, LittleBuilderJane, Lomcastar, LordCarve, LordEclipse, LovelyLophi, Lukasz825700516, lunarcomets, luringens, lvvova1, lzimann, lzk228, MACMAN2003, Macoron, MagnusCrowe, ManelNavola, Matz05, MehimoNemo, MeltedPixel, MemeProof, Menshin, Mervill, metalgearsloth, mhamsterr, MilenVolf, Minty642, Mirino97, mirrorcult, misandrie, MishaUnity, MisterMecky, Mith-randalf, Mnemotechnician, Moneyl, Moomoobeef, moony, Morb0, Mr0maks, musicmanvr, Myakot, Myctai, N3X15, Nairodian, Naive817, namespace-Memory, NickPowers43, nikthechampiongr, Nimfar11, Nirnael, nmajask, nok-ko, notafet, notquitehadouken, noudoit, noverd, nuke-haus, NULL882, nyeogmi, OCOtheOmega, OctoRocket, OldDanceJacket, onoira, osjarw, Owai-Seek, pali6, Pangogie, patrikturi, PaulRitter, Peptide90, peptron1, Phantom-Lily, PHCodes, PixelTheKermit, PJB3005, Plykiya, pofitlo, pointer-to-null, PolterTzi, PoorMansDreams, potato1234x, ProfanedBane, PrPleGoo, ps3moira, Pspritechologist, Psychpsyo, psykzz, PuroSlavKing, quatre, QuietlyWhisper, qwerltaz, Radosvik, Radrark, Rainbeon, Rainfey, Rane, ravage123321, rbertoche, Redict, RedlineTriad, RednoWCirabrab, RemberBM, RemieRichards, RemTim, rene-descartes2021, RiceMar1244, RieBi, Rinkashikachi, Rockdtben, rolfero, rosieposieeee, Saakra, Samsterious, SaphireLattice, ScalyChimp, scrato, Scribbles0, Serkket, ShadowCommander, Shadowtheprotogen546, SignalWalker, SimpleStation14, Simyon264, Sirionaut, siyengar04, Skarletto, Skrauz, Skyedra, SlamBamActionman, slarticodefast, Slava0135, SleepyScarecrow, Snowni, snowsignal, SonicHDC, SoulSloth, SpaceManiac, SpeltIncorrectyl, spoogemonster, ssdaniel24, stalengd, Stealthbomber16, stellar-novas, StrawberryMoses, superjj18, SweptWasTaken, Szunti, TadJohnson00, takemysoult, TaralGit, Tayrtahn, tday93, TekuNut, TemporalOroboros, tentekal, tgrkzus, thatrandomcanadianguy, TheArturZh, theashtronaut, thedraccx, themias, Theomund, theOperand, TheShuEd, TimrodDX, Titian3, tkdrg, Tmanzxd, tmtmtl30, TokenStyle, tom-leys, tomasalves8, Tomeno, Tornado-Technology, tosatur, Tryded, TsjipTsjip, Tunguso4ka, TurboTrackerss14, Tyler-IN, Tyzemol, UbaserB, UKNOWH, UnicornOnLSD, Uriende, UristMcDorf, Vaaankas, Varen, VasilisThePikachu, veliebm, Veritius, Vermidia, Verslebas, VigersRay, Visne, VMSolidus, volundr-, Voomra, Vordenburg, vulppine, wafehling, WarMechanic, waylon531, weaversam8, whateverusername0, Willhelm53, Winkarst-cpu, wixoaGit, WlarusFromDaSpace, wrexbe, xRiriq, yathxyz, Ygg01, YotaXP, YuriyKiss, zach-hill, Zandario, Zap527, Zealith-Gamer, ZelteHonor, zerorulez, zionnBE, zlodo, ZNixian, ZoldorfTheWizard, Zumorica, Zymem From 39d8dad44ab9cc1c8215db9d3674cd8db52cc45e Mon Sep 17 00:00:00 2001 From: VMSolidus Date: Sun, 1 Sep 2024 16:52:36 -0400 Subject: [PATCH 02/33] Disable Mood In Debug (#806) # Description MoodSystem has a Race Condition against DeleteAllThenGhost. # TODO - [ ] Run the tests 10 times in a row to see if DeleteAllThenGhost will appear. --- Content.Server/Mood/MoodSystem.cs | 40 ++++++++++++++++++++++++------- 1 file changed, 32 insertions(+), 8 deletions(-) diff --git a/Content.Server/Mood/MoodSystem.cs b/Content.Server/Mood/MoodSystem.cs index 7b73da64891..f2dc87ffd6a 100644 --- a/Content.Server/Mood/MoodSystem.cs +++ b/Content.Server/Mood/MoodSystem.cs @@ -32,6 +32,15 @@ public sealed class MoodSystem : EntitySystem [Dependency] private readonly PopupSystem _popup = default!; [Dependency] private readonly IConfigurationManager _config = default!; +#if RELEASE + // Disable Mood for tests, because of a stupid race condition where if it spawns an Urist McHarpy, + // the Harpy will choke during the test, creating a mood alert. + // And then cause a debug assert. + private bool _debugMode; +#else + private bool _debugMode = true; +#endif + public override void Initialize() { @@ -48,7 +57,6 @@ public override void Initialize() SubscribeLocalEvent(OnTraitStartup); } - private void OnShutdown(EntityUid uid, MoodComponent component, ComponentShutdown args) { _alerts.ClearAlertCategory(uid, AlertCategory.Mood); @@ -56,6 +64,9 @@ private void OnShutdown(EntityUid uid, MoodComponent component, ComponentShutdow private void OnRemoveEffect(EntityUid uid, MoodComponent component, MoodRemoveEffectEvent args) { + if (_debugMode) + return; + if (component.UncategorisedEffects.TryGetValue(args.EffectId, out _)) RemoveTimedOutEffect(uid, args.EffectId); else @@ -69,7 +80,8 @@ private void OnRemoveEffect(EntityUid uid, MoodComponent component, MoodRemoveEf private void OnRefreshMoveSpeed(EntityUid uid, MoodComponent component, RefreshMovementSpeedModifiersEvent args) { - if (component.CurrentMoodThreshold is > MoodThreshold.Meh and < MoodThreshold.Good or MoodThreshold.Dead + if (_debugMode + || component.CurrentMoodThreshold is > MoodThreshold.Meh and < MoodThreshold.Good or MoodThreshold.Dead || _jetpack.IsUserFlying(uid)) return; @@ -91,14 +103,18 @@ private void OnRefreshMoveSpeed(EntityUid uid, MoodComponent component, RefreshM private void OnTraitStartup(EntityUid uid, MoodModifyTraitComponent component, ComponentStartup args) { - if (component.MoodId != null) - RaiseLocalEvent(uid, new MoodEffectEvent($"{component.MoodId}")); + if (_debugMode + || component.MoodId is null) + return; + + RaiseLocalEvent(uid, new MoodEffectEvent($"{component.MoodId}")); } private void OnMoodEffect(EntityUid uid, MoodComponent component, MoodEffectEvent args) { - if (!_config.GetCVar(CCVars.MoodEnabled) - || !_prototypeManager.TryIndex(args.EffectId, out var prototype)) + if (_debugMode + || !_config.GetCVar(CCVars.MoodEnabled) + || !_prototypeManager.TryIndex(args.EffectId, out var prototype) ) return; var ev = new OnMoodEffect(uid, args.EffectId, args.EffectModifier, args.EffectOffset); @@ -153,8 +169,10 @@ private void ApplyEffect(EntityUid uid, MoodComponent component, MoodEffectProto private void SendEffectText(EntityUid uid, MoodEffectPrototype prototype) { - if (!prototype.Hidden) - _popup.PopupEntity(prototype.Description, uid, uid, (prototype.MoodChange > 0) ? PopupType.Medium : PopupType.MediumCaution); + if (prototype.Hidden) + return; + + _popup.PopupEntity(prototype.Description, uid, uid, (prototype.MoodChange > 0) ? PopupType.Medium : PopupType.MediumCaution); } private void RemoveTimedOutEffect(EntityUid uid, string prototypeId, string? category = null) @@ -182,6 +200,9 @@ private void RemoveTimedOutEffect(EntityUid uid, string prototypeId, string? cat private void OnMobStateChanged(EntityUid uid, MoodComponent component, MobStateChangedEvent args) { + if (_debugMode) + return; + if (args.NewMobState == MobState.Dead && args.OldMobState != MobState.Dead) { var ev = new MoodEffectEvent("Dead"); @@ -218,6 +239,9 @@ private void RefreshMood(EntityUid uid, MoodComponent component) private void OnInit(EntityUid uid, MoodComponent component, ComponentStartup args) { + if (_debugMode) + return; + if (TryComp(uid, out var mobThresholdsComponent) && _mobThreshold.TryGetThresholdForState(uid, MobState.Critical, out var critThreshold, mobThresholdsComponent)) component.CritThresholdBeforeModify = critThreshold.Value; From 1a1392cd5e878be3f7a10364ce98b688d5fe5e62 Mon Sep 17 00:00:00 2001 From: VMSolidus Date: Sun, 1 Sep 2024 19:20:12 -0400 Subject: [PATCH 03/33] Diagonal Window Smoothing (#805) # Description Diagonal windows weren't updated to use the new smoothing when we added a bunch of new sprites designed around connected textures. This PR fixes that for all diagonal windows. ![image](https://github.com/user-attachments/assets/4a54a00f-32d6-4365-ad0a-d96ecdbe6114) # Changelog :cl: - add: Diagonal windows now use connected textures. --------- Signed-off-by: VMSolidus --- .../Prototypes/Entities/Structures/Windows/clockwork.yml | 2 +- Resources/Prototypes/Entities/Structures/Windows/mining.yml | 2 +- Resources/Prototypes/Entities/Structures/Windows/plasma.yml | 2 +- .../Prototypes/Entities/Structures/Windows/plastitanium.yml | 2 +- .../Prototypes/Entities/Structures/Windows/reinforced.yml | 4 ++-- Resources/Prototypes/Entities/Structures/Windows/rplasma.yml | 2 +- Resources/Prototypes/Entities/Structures/Windows/ruranium.yml | 2 +- Resources/Prototypes/Entities/Structures/Windows/shuttle.yml | 2 +- Resources/Prototypes/Entities/Structures/Windows/window.yml | 2 +- 9 files changed, 10 insertions(+), 10 deletions(-) diff --git a/Resources/Prototypes/Entities/Structures/Windows/clockwork.yml b/Resources/Prototypes/Entities/Structures/Windows/clockwork.yml index d6b024bf362..a27f9fa0d29 100644 --- a/Resources/Prototypes/Entities/Structures/Windows/clockwork.yml +++ b/Resources/Prototypes/Entities/Structures/Windows/clockwork.yml @@ -115,7 +115,7 @@ state: state0 - type: IconSmooth mode: Diagonal - key: windows + key: walls base: state - type: Icon sprite: Structures/Windows/clockwork_diagonal.rsi diff --git a/Resources/Prototypes/Entities/Structures/Windows/mining.yml b/Resources/Prototypes/Entities/Structures/Windows/mining.yml index 82d11b732b6..1aa5d46bdfb 100644 --- a/Resources/Prototypes/Entities/Structures/Windows/mining.yml +++ b/Resources/Prototypes/Entities/Structures/Windows/mining.yml @@ -66,7 +66,7 @@ state: state0 - type: IconSmooth mode: Diagonal - key: windows + key: walls base: state - type: Icon sprite: Structures/Windows/mining_diagonal.rsi diff --git a/Resources/Prototypes/Entities/Structures/Windows/plasma.yml b/Resources/Prototypes/Entities/Structures/Windows/plasma.yml index e2766070575..1bd0356e95e 100644 --- a/Resources/Prototypes/Entities/Structures/Windows/plasma.yml +++ b/Resources/Prototypes/Entities/Structures/Windows/plasma.yml @@ -113,7 +113,7 @@ state: state0 - type: IconSmooth mode: Diagonal - key: windows + key: walls base: state - type: Icon sprite: Structures/Windows/plasma_diagonal.rsi diff --git a/Resources/Prototypes/Entities/Structures/Windows/plastitanium.yml b/Resources/Prototypes/Entities/Structures/Windows/plastitanium.yml index cb05f80cd12..af8b6ee1b08 100644 --- a/Resources/Prototypes/Entities/Structures/Windows/plastitanium.yml +++ b/Resources/Prototypes/Entities/Structures/Windows/plastitanium.yml @@ -66,7 +66,7 @@ state: state0 - type: IconSmooth mode: Diagonal - key: windows + key: walls base: state - type: Icon sprite: Structures/Windows/plastitanium_window_diagonal.rsi diff --git a/Resources/Prototypes/Entities/Structures/Windows/reinforced.yml b/Resources/Prototypes/Entities/Structures/Windows/reinforced.yml index d8b6c7d11d8..9914ad83999 100644 --- a/Resources/Prototypes/Entities/Structures/Windows/reinforced.yml +++ b/Resources/Prototypes/Entities/Structures/Windows/reinforced.yml @@ -106,7 +106,7 @@ - type: RCDDeconstructable cost: 4 delay: 4 - fx: EffectRCDDeconstruct4 + fx: EffectRCDDeconstruct4 - type: Destructible thresholds: - trigger: @@ -150,7 +150,7 @@ state: state0 - type: IconSmooth mode: Diagonal - key: windows + key: walls base: state - type: Icon sprite: Structures/Windows/reinforced_window_diagonal.rsi diff --git a/Resources/Prototypes/Entities/Structures/Windows/rplasma.yml b/Resources/Prototypes/Entities/Structures/Windows/rplasma.yml index 543958e18ef..3c35d03a431 100644 --- a/Resources/Prototypes/Entities/Structures/Windows/rplasma.yml +++ b/Resources/Prototypes/Entities/Structures/Windows/rplasma.yml @@ -125,7 +125,7 @@ state: state0 - type: IconSmooth mode: Diagonal - key: windows + key: walls base: state - type: Icon sprite: Structures/Windows/reinforced_plasma_diagonal.rsi diff --git a/Resources/Prototypes/Entities/Structures/Windows/ruranium.yml b/Resources/Prototypes/Entities/Structures/Windows/ruranium.yml index 1b2aeac4080..2796c89c1a0 100644 --- a/Resources/Prototypes/Entities/Structures/Windows/ruranium.yml +++ b/Resources/Prototypes/Entities/Structures/Windows/ruranium.yml @@ -116,7 +116,7 @@ state: state0 - type: IconSmooth mode: Diagonal - key: windows + key: walls base: state - type: Icon sprite: Structures/Windows/reinforced_uranium_diagonal.rsi diff --git a/Resources/Prototypes/Entities/Structures/Windows/shuttle.yml b/Resources/Prototypes/Entities/Structures/Windows/shuttle.yml index 6af5467d941..b1850d6e8fc 100644 --- a/Resources/Prototypes/Entities/Structures/Windows/shuttle.yml +++ b/Resources/Prototypes/Entities/Structures/Windows/shuttle.yml @@ -63,7 +63,7 @@ state: state0 - type: IconSmooth mode: Diagonal - key: windows + key: walls base: state - type: Icon sprite: Structures/Windows/shuttle_window_diagonal.rsi diff --git a/Resources/Prototypes/Entities/Structures/Windows/window.yml b/Resources/Prototypes/Entities/Structures/Windows/window.yml index b8044afc146..c8cc53106be 100644 --- a/Resources/Prototypes/Entities/Structures/Windows/window.yml +++ b/Resources/Prototypes/Entities/Structures/Windows/window.yml @@ -233,7 +233,7 @@ state: state0 - type: IconSmooth mode: Diagonal - key: windows + key: walls base: state - type: Icon sprite: Structures/Windows/window_diagonal.rsi From 154a4339e9e4d446275ef209cc6a44e1eadfeb3c Mon Sep 17 00:00:00 2001 From: SimpleStation Changelogs Date: Sun, 1 Sep 2024 23:20:36 +0000 Subject: [PATCH 04/33] Automatic Changelog Update (#805) --- Resources/Changelog/Changelog.yml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index 1f03d58c888..4c451f16489 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -5737,3 +5737,9 @@ Entries: creatures that can be prayed to. id: 6304 time: '2024-08-31T04:28:16.0000000+00:00' +- author: VMSolidus + changes: + - type: Add + message: Diagonal windows now use connected textures. + id: 6305 + time: '2024-09-01T23:20:12.0000000+00:00' From 90bc04cc6c487f0c2a2620370e0b3eacf12db038 Mon Sep 17 00:00:00 2001 From: VMSolidus Date: Sun, 1 Sep 2024 19:20:45 -0400 Subject: [PATCH 05/33] Maximize Default Description Limits (#788) # Description The current in game UI can reasonably support names up to 48 characters in length, as well as descriptions up to 1024 characters long. Any longer, and the UI requires a scroll bar. This change is present on Cosmatic Drift, which uses the same character UI we currently have. I've had many people requesting this change, and while I am aware that we wish to at some point update to a new character UI(such as Parkstation's UI), but a stopgap here is still nice, and it's just two Const variables. # Media ![image](https://github.com/user-attachments/assets/d68c3e05-9659-464b-8fb1-8de7e41a674b) # Changelog :cl: - tweak: Character names can now be up to 48 characters in length. - tweak: Character descriptions can now be up to 1024 characters in length. This is the maximum size descriptions can be without the menu having a scroll bar. And while we'd like it to be bigger, we're going to want to get a new UI for this in the future! --- Content.Shared/Preferences/HumanoidCharacterProfile.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Content.Shared/Preferences/HumanoidCharacterProfile.cs b/Content.Shared/Preferences/HumanoidCharacterProfile.cs index 79f8fd10fde..a4e173d24e3 100644 --- a/Content.Shared/Preferences/HumanoidCharacterProfile.cs +++ b/Content.Shared/Preferences/HumanoidCharacterProfile.cs @@ -24,8 +24,8 @@ namespace Content.Shared.Preferences [Serializable, NetSerializable] public sealed partial class HumanoidCharacterProfile : ICharacterProfile { - public const int MaxNameLength = 32; - public const int MaxDescLength = 512; + public const int MaxNameLength = 48; + public const int MaxDescLength = 1024; private readonly Dictionary _jobPriorities; private readonly List _antagPreferences; From bb2543dd319d223c1487b0987bb82a4516f52a59 Mon Sep 17 00:00:00 2001 From: SimpleStation Changelogs Date: Sun, 1 Sep 2024 23:21:08 +0000 Subject: [PATCH 06/33] Automatic Changelog Update (#788) --- Resources/Changelog/Changelog.yml | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index 4c451f16489..3f575920a85 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -5743,3 +5743,15 @@ Entries: message: Diagonal windows now use connected textures. id: 6305 time: '2024-09-01T23:20:12.0000000+00:00' +- author: VMSolidus + changes: + - type: Tweak + message: Character names can now be up to 48 characters in length. + - type: Tweak + message: >- + Character descriptions can now be up to 1024 characters in length. This + is the maximum size descriptions can be without the menu having a scroll + bar. And while we'd like it to be bigger, we're going to want to get a + new UI for this in the future! + id: 6306 + time: '2024-09-01T23:20:45.0000000+00:00' From 8b79a9cae121e4b4a401a4d3ab992071c6226926 Mon Sep 17 00:00:00 2001 From: VMSolidus Date: Sun, 1 Sep 2024 19:25:50 -0400 Subject: [PATCH 07/33] Reduce Default PowerAttack Stamina Cost (#840) # Description The default stamina cost for Power Attack was supposed to be 10, so imagine my surprise when I find out it's been 20 this whole time. Which wasn't intended. # Changelog :cl: - fix: The default stamina cost for Power Attacks for any weapon that doesn't explicitly modify it is now correctly set to 10 stamina(down from 20). --- Content.Shared/Weapons/Melee/MeleeWeaponComponent.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Content.Shared/Weapons/Melee/MeleeWeaponComponent.cs b/Content.Shared/Weapons/Melee/MeleeWeaponComponent.cs index 2708a07c6eb..cedb0aac678 100644 --- a/Content.Shared/Weapons/Melee/MeleeWeaponComponent.cs +++ b/Content.Shared/Weapons/Melee/MeleeWeaponComponent.cs @@ -128,7 +128,7 @@ public sealed partial class MeleeWeaponComponent : Component public bool SwingLeft; [DataField, AutoNetworkedField] - public float HeavyStaminaCost = 20f; + public float HeavyStaminaCost = 10f; [DataField, AutoNetworkedField] public int MaxTargets = 5; From fe1567b9824bc929be7dd280c0fa2c566d34a008 Mon Sep 17 00:00:00 2001 From: SimpleStation Changelogs Date: Sun, 1 Sep 2024 23:26:13 +0000 Subject: [PATCH 08/33] Automatic Changelog Update (#840) --- Resources/Changelog/Changelog.yml | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index 3f575920a85..94a3de81563 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -5755,3 +5755,11 @@ Entries: new UI for this in the future! id: 6306 time: '2024-09-01T23:20:45.0000000+00:00' +- author: VMSolidus + changes: + - type: Fix + message: >- + The default stamina cost for Power Attacks for any weapon that doesn't + explicitly modify it is now correctly set to 10 stamina(down from 20). + id: 6307 + time: '2024-09-01T23:25:51.0000000+00:00' From 6d0780d34bc5fbbca7d5294441a14bddb8f989b5 Mon Sep 17 00:00:00 2001 From: Evgencheg <73418250+Evgencheg@users.noreply.github.com> Date: Mon, 2 Sep 2024 02:47:18 +0300 Subject: [PATCH 09/33] Bot for Changelog (#833) :cl: - add: Changelogs should be shown in Discord now --------- Signed-off-by: DEATHB4DEFEAT <77995199+DEATHB4DEFEAT@users.noreply.github.com> Co-authored-by: TAZIKLIK <73418250+TAZIKLIK@users.noreply.github.com> Co-authored-by: DEATHB4DEFEAT <77995199+DEATHB4DEFEAT@users.noreply.github.com> --- .github/workflows/changelog.yml | 5 +++++ Tools/actions_changelogs_since_last_run.py | 13 +++++++------ 2 files changed, 12 insertions(+), 6 deletions(-) diff --git a/.github/workflows/changelog.yml b/.github/workflows/changelog.yml index 877273d7645..83b20ddd6f6 100644 --- a/.github/workflows/changelog.yml +++ b/.github/workflows/changelog.yml @@ -8,6 +8,7 @@ env: GITHUB_TOKEN: ${{ secrets.BOT_TOKEN }} CHANGELOG_DIR: ${{ vars.CHANGELOG_DIR }} PR_NUMBER: ${{ github.event.number }} + CHANGELOG_WEBHOOK: ${{ secrets.CHANGELOG_WEBHOOK }} jobs: changelog: @@ -54,3 +55,7 @@ jobs: git push shell: bash continue-on-error: true + + - name: Publish changelog + run: Tools/actions_changelogs_since_last_run.py + continue-on-error: true diff --git a/Tools/actions_changelogs_since_last_run.py b/Tools/actions_changelogs_since_last_run.py index e24e74c51f5..37c1e7a759e 100755 --- a/Tools/actions_changelogs_since_last_run.py +++ b/Tools/actions_changelogs_since_last_run.py @@ -16,12 +16,13 @@ GITHUB_REPOSITORY = os.environ["GITHUB_REPOSITORY"] GITHUB_RUN = os.environ["GITHUB_RUN_ID"] GITHUB_TOKEN = os.environ["GITHUB_TOKEN"] +CHANGELOG_DIR = os.environ["CHANGELOG_DIR"] +CHANGELOG_WEBHOOK = os.environ["CHANGELOG_WEBHOOK"] # https://discord.com/developers/docs/resources/webhook DISCORD_SPLIT_LIMIT = 2000 -DISCORD_WEBHOOK_URL = os.environ.get("DISCORD_WEBHOOK_URL") -CHANGELOG_FILE = "Resources/Changelog/DeltaVChangelog.yml" +CHANGELOG_FILE = "{CHANGELOG_DIR}" TYPES_TO_EMOJI = { "Fix": "🐛", @@ -33,7 +34,7 @@ ChangelogEntry = dict[str, Any] def main(): - if not DISCORD_WEBHOOK_URL: + if not CHANGELOG_WEBHOOK: return session = requests.Session() @@ -121,12 +122,12 @@ def get_discord_body(content: str): def send_discord(content: str): body = get_discord_body(content) - response = requests.post(DISCORD_WEBHOOK_URL, json=body) + response = requests.post(CHANGELOG_WEBHOOK, json=body) response.raise_for_status() def send_to_discord(entries: Iterable[ChangelogEntry]) -> None: - if not DISCORD_WEBHOOK_URL: + if not CHANGELOG_WEBHOOK: print(f"No discord webhook URL found, skipping discord send") return @@ -165,7 +166,7 @@ def send_to_discord(entries: Iterable[ChangelogEntry]) -> None: # Flush the group to the message message_content.write(group_text) - + # Clean up anything remaining message_text = message_content.getvalue() if len(message_text) > 0: From b779a9de89abac6d76ae16ab9f54558bc89a8fe2 Mon Sep 17 00:00:00 2001 From: SimpleStation Changelogs Date: Sun, 1 Sep 2024 23:50:12 +0000 Subject: [PATCH 10/33] Automatic Changelog Update (#833) --- Resources/Changelog/Changelog.yml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index 94a3de81563..8522a9b2a84 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -5763,3 +5763,9 @@ Entries: explicitly modify it is now correctly set to 10 stamina(down from 20). id: 6307 time: '2024-09-01T23:25:51.0000000+00:00' +- author: Evgencheg + changes: + - type: Add + message: Changelogs should be shown in Discord now + id: 6308 + time: '2024-09-01T23:47:18.0000000+00:00' From bbd616d3f305ebdcf57658bb3260071a248c9b7e Mon Sep 17 00:00:00 2001 From: DEATHB4DEFEAT <77995199+DEATHB4DEFEAT@users.noreply.github.com> Date: Sun, 1 Sep 2024 16:57:10 -0700 Subject: [PATCH 11/33] Update actions_changelogs_since_last_run.py (#841) Signed-off-by: DEATHB4DEFEAT <77995199+DEATHB4DEFEAT@users.noreply.github.com> --- Tools/actions_changelogs_since_last_run.py | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/Tools/actions_changelogs_since_last_run.py b/Tools/actions_changelogs_since_last_run.py index 37c1e7a759e..8150ee986d2 100755 --- a/Tools/actions_changelogs_since_last_run.py +++ b/Tools/actions_changelogs_since_last_run.py @@ -22,8 +22,6 @@ # https://discord.com/developers/docs/resources/webhook DISCORD_SPLIT_LIMIT = 2000 -CHANGELOG_FILE = "{CHANGELOG_DIR}" - TYPES_TO_EMOJI = { "Fix": "🐛", "Add": "🆕", @@ -46,7 +44,7 @@ def main(): last_sha = most_recent['head_commit']['id'] print(f"Last successful publish job was {most_recent['id']}: {last_sha}") last_changelog = yaml.safe_load(get_last_changelog(session, last_sha)) - with open(CHANGELOG_FILE, "r") as f: + with open(CHANGELOG_DIR, "r") as f: cur_changelog = yaml.safe_load(f) diff = diff_changelog(last_changelog, cur_changelog) @@ -94,7 +92,7 @@ def get_last_changelog(sess: requests.Session, sha: str) -> str: "Accept": "application/vnd.github.raw" } - resp = sess.get(f"{GITHUB_API_URL}/repos/{GITHUB_REPOSITORY}/contents/{CHANGELOG_FILE}", headers=headers, params=params) + resp = sess.get(f"{GITHUB_API_URL}/repos/{GITHUB_REPOSITORY}/contents/{CHANGELOG_DIR}", headers=headers, params=params) resp.raise_for_status() return resp.text From b53ef7686ca897ce1ef1c107f58c7f8326b29d1a Mon Sep 17 00:00:00 2001 From: DJB1gYAPPA Date: Sun, 1 Sep 2024 22:28:11 -0400 Subject: [PATCH 12/33] Added Jukebox (#26736) (#802) # Description Adds super cool super nice Jukebox to the bar! Ran off .ogg files, can use any royalty free song. ---

Media

![Example Media on] ![Screenshot 2024-08-26 061947](https://github.com/user-attachments/assets/352a0491-5cec-4b03-949b-8407aa858cb8)

--- # Changelog :cl: Kacey, Nova - add: Added Jukebox with basic songs. --------- Signed-off-by: VMSolidus Co-authored-by: metalgearsloth <31366439+metalgearsloth@users.noreply.github.com> Co-authored-by: iNVERTED Co-authored-by: DJBIGYAPPA420 Co-authored-by: VMSolidus --- .../Jukebox/JukeboxBoundUserInterface.cs | 119 +++++++++++++ Content.Client/Audio/Jukebox/JukeboxMenu.xaml | 18 ++ .../Audio/Jukebox/JukeboxMenu.xaml.cs | 166 ++++++++++++++++++ Content.Client/Audio/Jukebox/JukeboxSystem.cs | 153 ++++++++++++++++ Content.Server/Audio/Jukebox/JukeboxSystem.cs | 152 ++++++++++++++++ .../Audio/Jukebox/JukeboxComponent.cs | 80 +++++++++ .../Audio/Jukebox/JukeboxPrototype.cs | 23 +++ Content.Shared/Audio/Jukebox/JukeboxUi.cs | 11 ++ .../Audio/Jukebox/SharedJukeboxSystem.cs | 8 + Resources/Audio/Jukebox/attributions.yml | 22 +++ Resources/Audio/Jukebox/constellations.ogg | Bin 0 -> 848147 bytes Resources/Audio/Jukebox/drifting.ogg | Bin 0 -> 915591 bytes Resources/Audio/Jukebox/flip-flap.ogg | Bin 0 -> 1522765 bytes Resources/Audio/Jukebox/sector11.ogg | Bin 0 -> 2118480 bytes Resources/Audio/Jukebox/starlight.ogg | Bin 0 -> 1575072 bytes Resources/Audio/Jukebox/title3.ogg | Bin 0 -> 2240764 bytes .../Locale/en-US/jukebox/jukebox-menu.ftl | 5 + .../Prototypes/Catalog/Jukebox/Standard.yml | 35 ++++ .../Circuitboards/Machine/production.yml | 16 +- .../Entities/Structures/Machines/jukebox.yml | 59 +++++++ .../Entities/Structures/Machines/lathe.yml | 1 + .../Prototypes/Recipes/Lathes/electronics.yml | 8 + .../Prototypes/Research/civilianservices.yml | 1 + .../Structures/Machines/jukebox.rsi/meta.json | 31 ++++ .../Structures/Machines/jukebox.rsi/off.png | Bin 0 -> 770 bytes .../Structures/Machines/jukebox.rsi/on.png | Bin 0 -> 673 bytes .../Machines/jukebox.rsi/select.png | Bin 0 -> 1339 bytes 27 files changed, 907 insertions(+), 1 deletion(-) create mode 100644 Content.Client/Audio/Jukebox/JukeboxBoundUserInterface.cs create mode 100644 Content.Client/Audio/Jukebox/JukeboxMenu.xaml create mode 100644 Content.Client/Audio/Jukebox/JukeboxMenu.xaml.cs create mode 100644 Content.Client/Audio/Jukebox/JukeboxSystem.cs create mode 100644 Content.Server/Audio/Jukebox/JukeboxSystem.cs create mode 100644 Content.Shared/Audio/Jukebox/JukeboxComponent.cs create mode 100644 Content.Shared/Audio/Jukebox/JukeboxPrototype.cs create mode 100644 Content.Shared/Audio/Jukebox/JukeboxUi.cs create mode 100644 Content.Shared/Audio/Jukebox/SharedJukeboxSystem.cs create mode 100644 Resources/Audio/Jukebox/attributions.yml create mode 100644 Resources/Audio/Jukebox/constellations.ogg create mode 100644 Resources/Audio/Jukebox/drifting.ogg create mode 100644 Resources/Audio/Jukebox/flip-flap.ogg create mode 100644 Resources/Audio/Jukebox/sector11.ogg create mode 100644 Resources/Audio/Jukebox/starlight.ogg create mode 100644 Resources/Audio/Jukebox/title3.ogg create mode 100644 Resources/Locale/en-US/jukebox/jukebox-menu.ftl create mode 100644 Resources/Prototypes/Catalog/Jukebox/Standard.yml create mode 100644 Resources/Prototypes/Entities/Structures/Machines/jukebox.yml create mode 100644 Resources/Textures/Structures/Machines/jukebox.rsi/meta.json create mode 100644 Resources/Textures/Structures/Machines/jukebox.rsi/off.png create mode 100644 Resources/Textures/Structures/Machines/jukebox.rsi/on.png create mode 100644 Resources/Textures/Structures/Machines/jukebox.rsi/select.png diff --git a/Content.Client/Audio/Jukebox/JukeboxBoundUserInterface.cs b/Content.Client/Audio/Jukebox/JukeboxBoundUserInterface.cs new file mode 100644 index 00000000000..072730d65d4 --- /dev/null +++ b/Content.Client/Audio/Jukebox/JukeboxBoundUserInterface.cs @@ -0,0 +1,119 @@ +using Content.Shared.Audio.Jukebox; +using Robust.Client.Audio; +using Robust.Client.Player; +using Robust.Shared.Audio.Components; +using Robust.Shared.Player; +using Robust.Shared.Prototypes; + +namespace Content.Client.Audio.Jukebox; + +public sealed class JukeboxBoundUserInterface : BoundUserInterface +{ + [Dependency] private readonly IPlayerManager _player = default!; + [Dependency] private readonly IPrototypeManager _protoManager = default!; + + [ViewVariables] + private JukeboxMenu? _menu; + + public JukeboxBoundUserInterface(EntityUid owner, Enum uiKey) : base(owner, uiKey) + { + IoCManager.InjectDependencies(this); + } + + protected override void Open() + { + base.Open(); + + _menu = new JukeboxMenu(); + _menu.OnClose += Close; + _menu.OpenCentered(); + + _menu.OnPlayPressed += args => + { + if (args) + { + SendMessage(new JukeboxPlayingMessage()); + } + else + { + SendMessage(new JukeboxPauseMessage()); + } + }; + + _menu.OnStopPressed += () => + { + SendMessage(new JukeboxStopMessage()); + }; + + _menu.OnSongSelected += SelectSong; + + _menu.SetTime += SetTime; + PopulateMusic(); + Reload(); + } + + /// + /// Reloads the attached menu if it exists. + /// + public void Reload() + { + if (_menu == null || !EntMan.TryGetComponent(Owner, out JukeboxComponent? jukebox)) + return; + + _menu.SetAudioStream(jukebox.AudioStream); + + if (_protoManager.TryIndex(jukebox.SelectedSongId, out var songProto)) + { + var length = EntMan.System().GetAudioLength(songProto.Path.Path.ToString()); + _menu.SetSelectedSong(songProto.Name, (float) length.TotalSeconds); + } + else + { + _menu.SetSelectedSong(string.Empty, 0f); + } + } + + public void PopulateMusic() + { + _menu?.Populate(_protoManager.EnumeratePrototypes()); + } + + public void SelectSong(ProtoId songid) + { + SendMessage(new JukeboxSelectedMessage(songid)); + } + + public void SetTime(float time) + { + var sentTime = time; + + // You may be wondering, what the fuck is this + // Well we want to be able to predict the playback slider change, of which there are many ways to do it + // We can't just use SendPredictedMessage because it will reset every tick and audio updates every frame + // so it will go BRRRRT + // Using ping gets us close enough that it SHOULD, MOST OF THE TIME, fall within the 0.1 second tolerance + // that's still on engine so our playback position never gets corrected. + if (EntMan.TryGetComponent(Owner, out JukeboxComponent? jukebox) && + EntMan.TryGetComponent(jukebox.AudioStream, out AudioComponent? audioComp)) + { + audioComp.PlaybackPosition = time; + } + + SendMessage(new JukeboxSetTimeMessage(sentTime)); + } + + protected override void Dispose(bool disposing) + { + base.Dispose(disposing); + if (!disposing) + return; + + if (_menu == null) + return; + + _menu.OnClose -= Close; + _menu.Dispose(); + _menu = null; + } +} + diff --git a/Content.Client/Audio/Jukebox/JukeboxMenu.xaml b/Content.Client/Audio/Jukebox/JukeboxMenu.xaml new file mode 100644 index 00000000000..e8d39a9b119 --- /dev/null +++ b/Content.Client/Audio/Jukebox/JukeboxMenu.xaml @@ -0,0 +1,18 @@ + + + + + + +