From e50205b9b0b125ee23d11ddf72280f31016a4433 Mon Sep 17 00:00:00 2001 From: Aaro Varis Date: Sat, 3 Jan 2026 17:08:53 +0200 Subject: [PATCH 1/6] Add player list --- .../BasisUI/Elements/PanelPlayerList.cs | 450 + .../BasisUI/Elements/PanelPlayerList.cs.meta | 2 + .../Main Menu Providers/PlayersProvider.cs | 41 + .../PlayersProvider.cs.meta | 2 + .../UI/NamePlate/BasisRemoteNamePlate.cs | 17 +- .../Panel Elements/Player List Prefab.prefab | 7786 +++++++++++++++++ .../Player List Prefab.prefab.meta | 7 + 7 files changed, 8303 insertions(+), 2 deletions(-) create mode 100644 Basis/Packages/com.basis.framework/BasisUI/Elements/PanelPlayerList.cs create mode 100644 Basis/Packages/com.basis.framework/BasisUI/Elements/PanelPlayerList.cs.meta create mode 100644 Basis/Packages/com.basis.framework/BasisUI/Menus/Main Menu Providers/PlayersProvider.cs create mode 100644 Basis/Packages/com.basis.framework/BasisUI/Menus/Main Menu Providers/PlayersProvider.cs.meta create mode 100644 Basis/Packages/com.basis.sdk/Prefabs/Panel Elements/Player List Prefab.prefab create mode 100644 Basis/Packages/com.basis.sdk/Prefabs/Panel Elements/Player List Prefab.prefab.meta diff --git a/Basis/Packages/com.basis.framework/BasisUI/Elements/PanelPlayerList.cs b/Basis/Packages/com.basis.framework/BasisUI/Elements/PanelPlayerList.cs new file mode 100644 index 000000000..89ceb6a23 --- /dev/null +++ b/Basis/Packages/com.basis.framework/BasisUI/Elements/PanelPlayerList.cs @@ -0,0 +1,450 @@ +using System; +using System.Collections.Generic; +using System.Threading.Tasks; +using Basis.BasisUI; +using Basis.Scripts.BasisSdk.Players; +using Basis.Scripts.Networking; +using Basis.Scripts.Networking.NetworkedAvatar; +using UnityEngine; +using TMPro; +using UnityEngine.UI; +using Task = System.Threading.Tasks.Task; + +namespace Basis.BasisUI +{ + [Serializable] + public struct PlatformBadge + { + public string platformRegex; + public string platformDisplayName; + public Sprite platformIcon; + } + public struct UserButtonAction + { + public string title; + public Action action; + public string buttonStyle; + } + + public struct PlayerListFilter + { + public string filterName; + public Func filterFunction; + } + + public struct PlayerBadge + { + public string badgeName; + public Sprite badgeIcon; + } + public class PanelPlayerList : PanelSelectionGroup + { + + public static class PlayerListStyles + { + public static string Default = "Packages/com.basis.sdk/Prefabs/Panel Elements/Player List Prefab.prefab"; + } + + public static PanelPlayerList CreateNew(Component parent) + => CreateNew(PlayerListStyles.Default, parent); + + public PlatformBadge[] PlatformBadges = new PlatformBadge[] + { + new() + { + platformRegex = "Windows", + platformDisplayName = "PC", + platformIcon = null + }, + new() + { + platformRegex = "iOS|iPhone|iPad", + platformDisplayName = "iOS", + platformIcon = null + }, + new() + { + platformRegex = "Android", + platformDisplayName = "Android", + platformIcon = null + }, + new() + { + platformRegex = "Macintosh|Mac OS X", + platformDisplayName = "Mac", + platformIcon = null + }, + new() + { + platformRegex = "Linux", + platformDisplayName = "Linux", + platformIcon = null + }, + + }; + + public RectTransform UserActionButtonParent; + public PanelSlider UserVolumeSlider; + public TMP_Text TitleText; + public GameObject BadgeTemplate; + public Button IndexButtonTemplate; + public ScrollRect playerScrollRect; + + private List