备份CatanBuilding瘦身独立工程
This commit is contained in:
114
Assets/Scripts/UI/Mail/FishingMailInfoPopupPanel.cs
Normal file
114
Assets/Scripts/UI/Mail/FishingMailInfoPopupPanel.cs
Normal file
@@ -0,0 +1,114 @@
|
||||
using System;
|
||||
using System.Linq;
|
||||
using asap.core;
|
||||
using GameCore;
|
||||
using TMPro;
|
||||
using UnityEngine;
|
||||
using UnityEngine.UI;
|
||||
|
||||
public class FishingMailInfoPopupPanel : MonoBehaviour
|
||||
{
|
||||
Button btn_close;
|
||||
Button btn_mask;
|
||||
TMP_Text text_title;
|
||||
TMP_Text text_content;
|
||||
TMP_Text text_end;
|
||||
RewardItemNew[] rewardSlot;
|
||||
Button btn_receive;
|
||||
Button btn_delete;
|
||||
GameMail _mail;
|
||||
|
||||
IInGameMailService _mailService;
|
||||
|
||||
[SerializeField]
|
||||
private RectTransform mailBody;
|
||||
[SerializeField]
|
||||
private RectTransform rewardRect;
|
||||
|
||||
private PlayerItemData _playerItemData;
|
||||
|
||||
private void Awake()
|
||||
{
|
||||
btn_close = transform.Find("btn_close").GetComponent<Button>();
|
||||
btn_mask = transform.Find("mask").GetComponent<Button>();
|
||||
text_title = transform.Find("root/text_title").GetComponent<TMP_Text>();
|
||||
text_content = transform.Find("root/ScrollView/Viewport/Content/text_content").GetComponent<TMP_Text>();
|
||||
text_end = transform.Find("root/ScrollView/Viewport/Content/text_end").GetComponent<TMP_Text>();
|
||||
rewardSlot = transform.Find("root/reward").GetComponentsInChildren<RewardItemNew>();
|
||||
btn_receive = transform.Find("root/btn_receive/btn_green").GetComponent<Button>();
|
||||
btn_delete = transform.Find("root/btn_delete/btn_green").GetComponent<Button>();
|
||||
_mailService=GContext.container.Resolve<IInGameMailService>();
|
||||
_playerItemData = GContext.container.Resolve<PlayerItemData>();
|
||||
}
|
||||
|
||||
private void Start()
|
||||
{
|
||||
btn_close.onClick.AddListener(OnClickClose);
|
||||
btn_mask.onClick.AddListener(OnClickClose);
|
||||
btn_receive.onClick.AddListener(OnClickReceive);
|
||||
btn_delete.onClick.AddListener(OnClickDelete);
|
||||
}
|
||||
|
||||
private Action refreshMailList;
|
||||
public void SetData(GameMail mail, Action refreshMailList)
|
||||
{
|
||||
this.refreshMailList = refreshMailList;
|
||||
_mail = mail;
|
||||
text_title.text = _mail.Title;
|
||||
text_content.text = _mail.Content;
|
||||
text_end.text = _mail.From;
|
||||
for ( int i = 0; i < rewardSlot.Length; i++ )
|
||||
{
|
||||
rewardSlot[i].gameObject.SetActive(false);
|
||||
}
|
||||
|
||||
if (mail.HasDrops)
|
||||
{
|
||||
// var rewardItems = GContext.container.Resolve<PlayerItemData>().GetItemDataByDropId(mail.DropIds[0]);
|
||||
var rewardItems = _playerItemData.GetItemDataByDropList(mail.DropIds.ToList());
|
||||
for ( int i = 0; i < rewardSlot.Length; i++ )
|
||||
{
|
||||
if ( i < rewardItems.Count )
|
||||
{
|
||||
rewardSlot[i].SetData(rewardItems[i]);
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
var mailBodySize = new Vector2(mailBody.rect.width, mailBody.rect.height + rewardRect.rect.height);
|
||||
mailBody.sizeDelta = mailBodySize;
|
||||
rewardRect.gameObject.SetActive(false);
|
||||
}
|
||||
SetState();
|
||||
}
|
||||
|
||||
private void SetState()
|
||||
{
|
||||
btn_delete.transform.parent.gameObject.SetActive(_mail.HasReward);
|
||||
btn_receive.transform.parent.gameObject.SetActive(!_mail.HasReward);
|
||||
}
|
||||
|
||||
private async void OnClickDelete()
|
||||
{
|
||||
if (await _mailService.DelMail(_mail))
|
||||
{
|
||||
OnClickClose();
|
||||
}
|
||||
}
|
||||
private async void OnClickReceive()
|
||||
{
|
||||
UIManager.ShowWaitingBlock("FishingMailInfoPopupPanel::OnClickReceive");
|
||||
if (await _mailService.TakeReward(_mail))
|
||||
{
|
||||
SetState();
|
||||
}
|
||||
UIManager.HideWaitingBlock("FishingMailInfoPopupPanel::OnClickReceive");
|
||||
}
|
||||
|
||||
void OnClickClose()
|
||||
{
|
||||
refreshMailList?.Invoke();
|
||||
UIManager.Instance.DestroyUI(UITypes.FishingMailInfoPopupPanel);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user