GameTicker.LobbyBackground.cs 959 B

12345678910111213141516171819202122232425262728293031
  1. using Content.Server.GameTicking.Prototypes;
  2. using Robust.Shared.Random;
  3. using Robust.Shared.Utility;
  4. using System.Linq;
  5. namespace Content.Server.GameTicking;
  6. public sealed partial class GameTicker
  7. {
  8. [ViewVariables]
  9. public string? LobbyBackground { get; private set; }
  10. [ViewVariables]
  11. private List<ResPath>? _lobbyBackgrounds;
  12. private static readonly string[] WhitelistedBackgroundExtensions = new string[] {"png", "jpg", "jpeg", "webp"};
  13. private void InitializeLobbyBackground()
  14. {
  15. _lobbyBackgrounds = _prototypeManager.EnumeratePrototypes<LobbyBackgroundPrototype>()
  16. .Select(x => x.Background)
  17. .Where(x => WhitelistedBackgroundExtensions.Contains(x.Extension))
  18. .ToList();
  19. RandomizeLobbyBackground();
  20. }
  21. private void RandomizeLobbyBackground() {
  22. LobbyBackground = _lobbyBackgrounds!.Any() ? _robustRandom.Pick(_lobbyBackgrounds!).ToString() : null;
  23. }
  24. }