public static void OnPlayerChallengeButtonPressed(FriendListChallengeButton challengeButton, BnetPlayer player) { SoundManager.Get().LoadAndPlay("Small_Click"); if (ChatMgr.Get().FriendListFrame.IsInEditMode) { ChatMgr.Get().FriendListFrame.ShowRemoveFriendPopup(player); } else { BnetGameAccountId hearthstoneGameAccountId = player.GetHearthstoneGameAccountId(); SpectatorManager manager = SpectatorManager.Get(); if (manager.CanSpectate(player)) { manager.SpectatePlayer(player); } else if (manager.IsSpectatingMe(hearthstoneGameAccountId)) { AlertPopup.PopupInfo info = new AlertPopup.PopupInfo { m_headerText = GameStrings.Get("GLOBAL_SPECTATOR_KICK_PROMPT_HEADER") }; object[] args = new object[] { FriendUtils.GetUniqueName(player) }; info.m_text = GameStrings.Format("GLOBAL_SPECTATOR_KICK_PROMPT_TEXT", args); info.m_showAlertIcon = true; info.m_responseDisplay = AlertPopup.ResponseDisplay.CONFIRM_CANCEL; info.m_responseCallback = new AlertPopup.ResponseCallback(FriendListFriendFrame.OnKickSpectatorDialogResponse); info.m_responseUserData = player; DialogManager.Get().ShowPopup(info); } else if (manager.CanInviteToSpectateMyGame(hearthstoneGameAccountId)) { manager.InviteToSpectateMe(player); } else if (manager.IsSpectatingPlayer(hearthstoneGameAccountId)) { if ((GameMgr.Get().IsFindingGame() || SceneMgr.Get().IsTransitioning()) || GameMgr.Get().IsTransitionPopupShown()) { return; } AlertPopup.PopupInfo info2 = new AlertPopup.PopupInfo { m_headerText = GameStrings.Get("GLOBAL_SPECTATOR_LEAVE_PROMPT_HEADER"), m_text = GameStrings.Get("GLOBAL_SPECTATOR_LEAVE_PROMPT_TEXT"), m_showAlertIcon = true, m_responseDisplay = AlertPopup.ResponseDisplay.CONFIRM_CANCEL, m_responseCallback = new AlertPopup.ResponseCallback(FriendListFriendFrame.OnLeaveSpectatingDialogResponse) }; DialogManager.Get().ShowPopup(info2); } else if (!manager.IsInvitedToSpectateMyGame(hearthstoneGameAccountId) && challengeButton.CanChallenge()) { FriendChallengeMgr.Get().SendChallenge(player); } else { return; } challengeButton.UpdateButton(); ChatMgr.Get().CloseChatUI(); } }