Initial commit
This commit is contained in:
@@ -0,0 +1,92 @@
|
||||
using TMPro;
|
||||
using UnityEngine;
|
||||
using UnityEngine.UI;
|
||||
using WebSocketSharp;
|
||||
|
||||
namespace XRMultiplayer
|
||||
{
|
||||
public class PlayerSlot : MonoBehaviour
|
||||
{
|
||||
public TMP_Text playerSlotName;
|
||||
public TMP_Text playerInitial;
|
||||
public Image playerIconImage;
|
||||
|
||||
[Header("Mic Button")]
|
||||
public Image voiceChatFillImage;
|
||||
[SerializeField] Button m_MicButton;
|
||||
[SerializeField] Image m_PlayerVoiceIcon;
|
||||
[SerializeField] Image m_SquelchedIcon;
|
||||
[SerializeField] Sprite[] micIcons;
|
||||
XRINetworkPlayer m_Player;
|
||||
internal ulong playerID = 0;
|
||||
|
||||
public void Setup(XRINetworkPlayer player)
|
||||
{
|
||||
m_Player = player;
|
||||
m_Player.onColorUpdated += UpdateColor;
|
||||
m_Player.onNameUpdated += UpdateName;
|
||||
m_Player.selfMuted.OnValueChanged += UpdateSelfMutedState;
|
||||
m_MicButton.onClick.AddListener(Squelch);
|
||||
m_Player.squelched.Subscribe(UpdateSquelchedState);
|
||||
m_SquelchedIcon.enabled = false;
|
||||
if (m_Player.IsLocalPlayer)
|
||||
{
|
||||
m_MicButton.interactable = false;
|
||||
}
|
||||
|
||||
if (m_Player.selfMuted.Value)
|
||||
{
|
||||
m_PlayerVoiceIcon.sprite = micIcons[1];
|
||||
}
|
||||
}
|
||||
|
||||
void OnDestroy()
|
||||
{
|
||||
m_Player.onColorUpdated -= UpdateColor;
|
||||
m_Player.onNameUpdated -= UpdateName;
|
||||
m_Player.selfMuted.OnValueChanged -= UpdateSelfMutedState;
|
||||
m_MicButton.onClick.RemoveListener(Squelch);
|
||||
m_Player.squelched.Unsubscribe(UpdateSquelchedState);
|
||||
}
|
||||
|
||||
void UpdateColor(Color newColor)
|
||||
{
|
||||
playerIconImage.color = newColor;
|
||||
}
|
||||
|
||||
void UpdateName(string newName)
|
||||
{
|
||||
if (!newName.IsNullOrEmpty())
|
||||
{
|
||||
string playerName = newName;
|
||||
if (m_Player.IsLocalPlayer)
|
||||
{
|
||||
playerName += " (You)";
|
||||
}
|
||||
else if (m_Player.IsOwnedByServer)
|
||||
{
|
||||
playerName += " (Host)";
|
||||
}
|
||||
playerSlotName.text = playerName;
|
||||
playerInitial.text = newName.Substring(0, 1);
|
||||
}
|
||||
}
|
||||
|
||||
#region Muting
|
||||
public void Squelch()
|
||||
{
|
||||
m_Player.ToggleSquelch();
|
||||
}
|
||||
|
||||
void UpdateSelfMutedState(bool old, bool current)
|
||||
{
|
||||
m_PlayerVoiceIcon.sprite = micIcons[current ? 1 : 0];
|
||||
}
|
||||
|
||||
void UpdateSquelchedState(bool squelched)
|
||||
{
|
||||
m_SquelchedIcon.enabled = squelched;
|
||||
}
|
||||
#endregion
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user