using System.Collections.Generic; using Logic.Multilingual; using RuntimeData; using TH1_Core.Events; using TH1_Core.Managers; using TH1_Logic.Core; using TH1_Logic.Net; using TH1_Logic.Steam; using TMPro; using UnityEngine; using UnityEngine.UI; // 需要引入此命名空间以处理指针事件 namespace TH1_UI.View.Bottom { public class UIBottomNetRowMono : MonoBehaviour { public TextMeshProUGUI Name; public TextMeshProUGUI Prop; public TextMeshProUGUI Status; public Button InviteButton; public TextMeshProUGUI InviteButtonText; public Image InviteButtonImage; public Sprite InviteButtonBG; public Sprite AlreadyInvitedButtonBG; private ulong _memberid; private bool _isNetOk; private bool _isRoomOwner; private bool _invited; public ulong MemberId => _memberid; private void SetNoInvite() { InviteButton.gameObject.SetActive(false); } private void SetInvite() { _invited = false; InviteButton.gameObject.SetActive(true); InviteButtonText.text = MultilingualManager.Instance.GetMultilingualText(Table.Instance.TextDataAssets.MultiplayInviteButton); InviteButtonImage.sprite = InviteButtonBG; } private void SetAlreadyInvited() { _invited = true; InviteButton.gameObject.SetActive(true); InviteButtonText.text = MultilingualManager.Instance.GetMultilingualText(Table.Instance.TextDataAssets.MultiplayAlreadyInvitedButton); InviteButtonImage.sprite = AlreadyInvitedButtonBG; } public void InitContent(ulong memberid,MemberInfo memberInfo,bool isRoomOwner,bool isNetOk) { _memberid = memberid; _isNetOk = isNetOk; _isRoomOwner = isRoomOwner; Name.text = memberInfo.Name; MultilingualManager.Instance.SetUIText(Prop,isRoomOwner?Table.Instance.TextDataAssets.MultiplayRoomOwnerTitle:Table.Instance.TextDataAssets.MultiplayRoomGuestTitle); MultilingualManager.Instance.SetUIText(Status,isNetOk?Table.Instance.TextDataAssets.MultiplayNetOkTitle:Table.Instance.TextDataAssets.MultiplayNetDisconnectTitle); } public void UpdateNetStatus(bool isRoomOwner,bool isNetOk) { MultilingualManager.Instance.SetUIText(Prop,isRoomOwner?Table.Instance.TextDataAssets.MultiplayRoomOwnerTitle:Table.Instance.TextDataAssets.MultiplayRoomGuestTitle); MultilingualManager.Instance.SetUIText(Status,isNetOk?Table.Instance.TextDataAssets.MultiplayNetOkTitle:Table.Instance.TextDataAssets.MultiplayNetDisconnectTitle); //处理是否显示Invite按钮 if (isNetOk) SetNoInvite(); else { //如果正在一个冷却周期,就不处理 if (_invited) return; SetInvite(); InviteButton.onClick.RemoveAllListeners(); InviteButton.onClick.AddListener(()=> { var lobby = LobbyManager.Instance.Lobby as SteamLobbyManager; lobby.InviteFriend(_memberid); InviteButton.gameObject.SetActive(false); if (_invited) return; Timer.Instance.TimerRegister(this, () => { SetInvite(); },3f,"UIBottomNetRowMono_InviteClick"); SetAlreadyInvited(); }); } } } }