115 lines
3.6 KiB
C#
115 lines
3.6 KiB
C#
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);
|
|
}
|
|
}
|