102 lines
3.7 KiB
C#
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();
|
|
|
|
});
|
|
}
|
|
}
|
|
|
|
|
|
|
|
}
|
|
} |