public void Init()
        {
            LeaderboardTableCell cell = GetComponent <LeaderboardTableCell>();

            foreach (FieldInfo info in cell.GetType().GetFields(BindingFlags.Public | BindingFlags.Instance | BindingFlags.NonPublic))
            {
                info.SetValue(this, info.GetValue(cell));
            }

            Destroy(cell);

            reuseIdentifier = "PlayerCell";

            if (_buttonStrokeSprite == null)
            {
                _buttonStrokeSprite = Resources.FindObjectsOfTypeAll <Sprite>().First(x => x.name == "RoundRectSmallStroke");
            }

            _playerNameText.rectTransform.anchoredPosition = new Vector2(12f, 0f);

            _playerSpeakerIcon = new GameObject("Player Speaker Icon", typeof(Canvas), typeof(CanvasRenderer)).AddComponent <Image>();
            _playerSpeakerIcon.GetComponent <Canvas>().renderMode = RenderMode.WorldSpace;
            _playerSpeakerIcon.rectTransform.SetParent(transform);
            _playerSpeakerIcon.rectTransform.localScale       = new Vector3(0.05f, 0.05f, 0.05f);
            _playerSpeakerIcon.rectTransform.pivot            = new Vector2(0.5f, 0.5f);
            _playerSpeakerIcon.rectTransform.anchoredPosition = new Vector2(-38f, 0f);
            _playerSpeakerIcon.sprite   = Sprites.speakerIcon;
            _playerSpeakerIcon.material = Sprites.NoGlowMat;

            _transferHostButton = BeatSaberUI.CreateUIButton(transform as RectTransform, "CancelButton", new Vector2(14f, 0f), new Vector2(14f, 6f), () => {
                if (buttonsInterface != null)
                {
                    buttonsInterface.TransferHostButtonWasPressed(playerInfo);
                }
            }, "PASS\nHOST");

            _transferHostButton.ToggleWordWrapping(false);
            _transferHostButton.SetButtonTextSize(3.25f);
            _transferHostButton.GetComponentsInChildren <UnityEngine.UI.Image>().First(x => x.name == "Stroke").sprite = _buttonStrokeSprite;
            _transferHostButtonEnabled = true;

            _muteButton = BeatSaberUI.CreateUIButton(transform as RectTransform, "CancelButton", new Vector2(30f, 0f), new Vector2(14f, 6f), () => {
                if (buttonsInterface != null)
                {
                    buttonsInterface.MuteButtonWasPressed(playerInfo);
                }
            }, "MUTE");
            _isMuted = false;

            _muteButton.ToggleWordWrapping(false);
            _muteButton.GetComponentsInChildren <UnityEngine.UI.Image>().First(x => x.name == "Stroke").sprite = _buttonStrokeSprite;
            _muteButtonEnabled = true;

            _scoreText.overflowMode       = TextOverflowModes.Overflow;
            _scoreText.enableWordWrapping = false;
        }
            public void Refresh(bool selected, bool highlighted)
            {
                if (playerInfo != null)
                {
                    playerName.text  = playerInfo.playerName;
                    playerName.color = playerInfo.updateInfo.playerNameColor;

                    passHostButton.onClick.RemoveAllListeners();
                    passHostButton.onClick.AddListener(() => _buttonsInterface.TransferHostButtonWasPressed(playerInfo));
                    muteButton.onClick.RemoveAllListeners();
                    muteButton.onClick.AddListener(() => _buttonsInterface.MuteButtonWasPressed(playerInfo));
                }
                _isInitialized = true;
            }