TH1/Unity/Assets/Scripts/TH1_UI/View/Bottom/UIBottomNetRowMono.cs
2026-01-10 22:00:44 +08:00

102 lines
3.7 KiB
C#

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();
});
}
}
}
}