备份CatanBuilding瘦身独立工程
This commit is contained in:
139
Assets/Scripts/UI/PartnerFishBowl/EventPartnerScrollViewItem.cs
Normal file
139
Assets/Scripts/UI/PartnerFishBowl/EventPartnerScrollViewItem.cs
Normal file
@@ -0,0 +1,139 @@
|
||||
using System;
|
||||
using EnhancedUI.EnhancedScroller;
|
||||
using TMPro;
|
||||
using UnityEngine;
|
||||
using UnityEngine.UI;
|
||||
using GameCore;
|
||||
|
||||
public class EventPartnerScrollViewItem : EnhancedScrollerCellView
|
||||
{
|
||||
public TMP_Text textName, textLvl, textBtnYes, textState, textTime;
|
||||
public Head avatar;
|
||||
public Button btnNo, btnYes;
|
||||
public GameObject iconLoadingGo, btnGrayGo, timeGo;
|
||||
private string _playfabId;
|
||||
|
||||
private const string AcceptKey = "UI_EventPartnerFishbowlPanel_18", InviteKey = "UI_EventPartnerFishbowlPanel_17";
|
||||
|
||||
private ScrollViewItemInfo _info;
|
||||
private bool _isNew = true;
|
||||
|
||||
public void Init(ScrollViewItemInfo info)
|
||||
{
|
||||
if (info.Type == EScrollViewType.Title)
|
||||
{
|
||||
Debug.Log( "<color=red>[EventPartner] An item scrollViewCell is initiated with title info.</color>");
|
||||
return;
|
||||
}
|
||||
|
||||
_info = info;
|
||||
_playfabId = info.PlayfabId;
|
||||
textName.text = info.DisplayName;
|
||||
avatar.SetData(info.AvatarUrl);
|
||||
textLvl.text = info.Level.ToString();
|
||||
|
||||
btnNo.transform.parent.gameObject.SetActive(info.Type != EScrollViewType.Friend && info.Type != EScrollViewType.MyInvitation);
|
||||
textBtnYes.text = LocalizationMgr.GetText(info.Type == EScrollViewType.Partner2Accept ? AcceptKey : InviteKey);
|
||||
if (info.Type == EScrollViewType.MyInvitation)
|
||||
{
|
||||
btnYes.transform.parent.gameObject.SetActive(false);
|
||||
btnGrayGo.SetActive(true);
|
||||
}
|
||||
else //(info.Type == EScrollViewType.Partner2Accept)
|
||||
{
|
||||
btnYes.transform.parent.gameObject.SetActive(true);
|
||||
btnGrayGo.SetActive(false);
|
||||
}
|
||||
// btnYes.gameObject.SetActive(info.Type == EScrollViewType.Partner2Accept || !info.IsInvitationPending);
|
||||
// Debug.Log($"<color=#c191ff>[EventPartner]{info.DisplayName}: {info.Type != EScrollViewType.Partner2Accept && info.IsInvitationPending}</color>");
|
||||
// btnGrayGo.SetActive(info.Type != EScrollViewType.Partner2Accept && info.IsInvitationPending);
|
||||
if (info.LastLoginTime.HasValue)
|
||||
textTime.text = ConvertTools.ConvertActiveTime(ZZTimeHelper.UtcNow() - info.LastLoginTime.Value);
|
||||
else
|
||||
{
|
||||
textTime.text = "";
|
||||
Debug.Log($"<color=#c191ff>[EventPartner]Fail to get last login time.</color>");
|
||||
}
|
||||
timeGo.SetActive(info.Type == EScrollViewType.Friend && textTime.text != "");
|
||||
textState.gameObject.SetActive(info.Type == EScrollViewType.MyInvitation && info.IsFull);
|
||||
if (!_isNew)
|
||||
return;
|
||||
_isNew = false;
|
||||
btnNo.onClick.AddListener(OnClickIgnore);
|
||||
btnYes.onClick.AddListener(info.Type == EScrollViewType.Partner2Accept ? OnClickAccept : OnClickInvite);
|
||||
}
|
||||
|
||||
private void OnClickInvite()
|
||||
{
|
||||
EventPartnerAct.Ctx.EventAggregator.Publish(new EventPartnerClickInvite { Info = _info });
|
||||
}
|
||||
|
||||
private void OnClickAccept()
|
||||
{
|
||||
EventPartnerAct.Ctx.EventAggregator.Publish(new EventPartnerClickAccept { Info = _info });
|
||||
}
|
||||
|
||||
private void OnClickIgnore()
|
||||
{
|
||||
EventPartnerAct.Ctx.EventAggregator.Publish(new EventPartnerClickIgnore { Info = _info });
|
||||
}
|
||||
|
||||
public class ScrollViewItemInfo : IEquatable<ScrollViewItemInfo>
|
||||
{
|
||||
public EScrollViewType Type;
|
||||
public string PlayfabId;
|
||||
public string AvatarUrl;
|
||||
public string DisplayName;
|
||||
public int Level;
|
||||
public bool IsFull = false;
|
||||
public string Title;
|
||||
public DateTime? LastLoginTime;
|
||||
#region EQ override
|
||||
|
||||
public bool Equals(ScrollViewItemInfo other)
|
||||
{
|
||||
return Type == other.Type && PlayfabId == other.PlayfabId && Title == other.Title;
|
||||
}
|
||||
|
||||
public override bool Equals(object obj)
|
||||
{
|
||||
return obj is ScrollViewItemInfo other && Equals(other);
|
||||
}
|
||||
public override int GetHashCode()
|
||||
{
|
||||
return HashCode.Combine((int)Type, PlayfabId, AvatarUrl, DisplayName, Level,
|
||||
Title, LastLoginTime);
|
||||
}
|
||||
|
||||
#endregion
|
||||
}
|
||||
|
||||
public enum EScrollViewType
|
||||
{
|
||||
Title,
|
||||
Recommendation,
|
||||
Friend,
|
||||
Partner2Accept,
|
||||
MyInvitation
|
||||
}
|
||||
}
|
||||
|
||||
public class EventPartnerRemoveScrollViewItem
|
||||
{
|
||||
public EventPartnerScrollViewItem.ScrollViewItemInfo Info;
|
||||
}
|
||||
|
||||
public class EventPartnerClickAccept
|
||||
{
|
||||
public EventPartnerScrollViewItem.ScrollViewItemInfo Info;
|
||||
}
|
||||
|
||||
public class EventPartnerClickInvite
|
||||
{
|
||||
public EventPartnerScrollViewItem.ScrollViewItemInfo Info;
|
||||
}
|
||||
|
||||
public class EventPartnerClickIgnore
|
||||
{
|
||||
public EventPartnerScrollViewItem.ScrollViewItemInfo Info;
|
||||
}
|
||||
Reference in New Issue
Block a user