2021-04-08 20:09:59 +08:00
|
|
|
|
|
|
|
|
|
using ET;
|
|
|
|
|
using FairyGUI;
|
|
|
|
|
using System;
|
|
|
|
|
using System.Collections.Generic;
|
|
|
|
|
|
|
|
|
|
namespace ET
|
|
|
|
|
{
|
|
|
|
|
public class MailUIAwakeSyatem : AwakeSystem<MailUI>
|
|
|
|
|
{
|
|
|
|
|
public override void Awake(MailUI self)
|
|
|
|
|
{
|
|
|
|
|
self.Awake();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
public class MailUIDestroySyatem : DestroySystem<MailUI>
|
|
|
|
|
{
|
|
|
|
|
public override void Destroy(MailUI self)
|
|
|
|
|
{
|
|
|
|
|
self.Destroy();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
public class MailUI : Entity
|
|
|
|
|
{
|
|
|
|
|
public FUI_MailUI ui;
|
|
|
|
|
private Dictionary<int, Mail> mailDic = new Dictionary<int, Mail>();
|
2021-04-20 00:25:04 +08:00
|
|
|
|
private Scene zoneScene;
|
|
|
|
|
|
2021-04-08 20:09:59 +08:00
|
|
|
|
public void Awake()
|
|
|
|
|
{
|
2021-04-20 00:25:04 +08:00
|
|
|
|
zoneScene = this.ZoneScene();
|
2021-04-08 20:09:59 +08:00
|
|
|
|
ui = GetParent<FUI_MailUI>();
|
|
|
|
|
AwakeAsync().Coroutine();
|
|
|
|
|
}
|
|
|
|
|
private async ETVoid AwakeAsync()
|
|
|
|
|
{
|
|
|
|
|
int currPage = 0;
|
|
|
|
|
int totalPage = 0;
|
|
|
|
|
//!+显示列表
|
|
|
|
|
await GetMailAsync();
|
|
|
|
|
//!+列表点击事件
|
|
|
|
|
ui.m_itemList.onClickItem.Set(() =>
|
|
|
|
|
{
|
2021-04-11 19:50:39 +08:00
|
|
|
|
if (!mailDic.TryGetValue(ui.m_itemList.selectedIndex, out Mail item)) return;
|
2021-04-08 20:09:59 +08:00
|
|
|
|
ui.m_txtTitle.text = item.Title;
|
|
|
|
|
ui.m_txtSenderName.text = item.SenderName;
|
|
|
|
|
ui.m_txtContent.text = item.Content;
|
|
|
|
|
int rewardIndex = 0;
|
|
|
|
|
ui.m_btnRewordSlotLeft.icon = null;
|
|
|
|
|
ui.m_btnRewordSlotLeft.title = null;
|
|
|
|
|
ui.m_btnRewordSlotRight.icon = null;
|
|
|
|
|
ui.m_btnRewordSlotRight.title = null;
|
|
|
|
|
ui.m_txtGold.text = null ;
|
|
|
|
|
ui.m_txtSliver.text = null ;
|
|
|
|
|
ui.m_txtCoin.text =null ;
|
2021-04-11 19:50:39 +08:00
|
|
|
|
foreach (MailItem reward in item.RewordArr)
|
2021-04-08 20:09:59 +08:00
|
|
|
|
{
|
|
|
|
|
if (reward.ItemId == BagUI.CoinId)
|
|
|
|
|
{
|
2021-04-11 19:50:39 +08:00
|
|
|
|
(long, int, int) money = TabHelper.GetCoinFormat(reward.Count);
|
2021-04-08 20:09:59 +08:00
|
|
|
|
ui.m_txtGold.text = "" + money.Item1;
|
|
|
|
|
ui.m_txtSliver.text = "" + money.Item2;
|
|
|
|
|
ui.m_txtCoin.text = "" + money.Item3;
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
if (rewardIndex++ == 0)
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
ui.m_btnRewordSlotLeft.icon = UIPackage.GetItemURL(FUIPackage.Bag, BagHelper.GetIconName(reward.ItemId).Item2);
|
|
|
|
|
ui.m_btnRewordSlotLeft.title = reward.Count == 1 ? "" : "" + reward.Count;
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
ui.m_btnRewordSlotRight.icon = UIPackage.GetItemURL(FUIPackage.Bag, BagHelper.GetIconName(reward.ItemId).Item2);
|
|
|
|
|
ui.m_btnRewordSlotRight.title = reward.Count == 1 ? "" : "" + reward.Count;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
});
|
|
|
|
|
//!+切换页数按钮事件
|
|
|
|
|
ui.m_btnLastPage.onClick.Set(async () =>
|
|
|
|
|
{
|
|
|
|
|
if (currPage-- <= 0)
|
|
|
|
|
{
|
|
|
|
|
currPage = 0;
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
await GetMailAsync();
|
|
|
|
|
});
|
|
|
|
|
ui.m_btnNextPage.onClick.Set(async () =>
|
|
|
|
|
{
|
|
|
|
|
if (currPage++ >= totalPage - 1)
|
|
|
|
|
{
|
|
|
|
|
currPage = totalPage - 1;
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
await GetMailAsync();
|
|
|
|
|
});
|
|
|
|
|
//!+领取邮件按钮
|
|
|
|
|
ui.m_btnReceive.onClick.Set(async () =>
|
|
|
|
|
{
|
2021-04-11 19:50:39 +08:00
|
|
|
|
if (!mailDic.TryGetValue(ui.m_itemList.selectedIndex, out Mail mail)) return;
|
2021-04-08 20:09:59 +08:00
|
|
|
|
if (mail.State == MailState.Received)
|
|
|
|
|
{
|
|
|
|
|
TipHelper.OpenUI("此邮件的附件您已经领取过了!");
|
|
|
|
|
return;
|
|
|
|
|
}
|
2021-04-20 00:25:04 +08:00
|
|
|
|
M2C_ReceiveMail ret = await zoneScene.GetComponent<SessionComponent>().Call<M2C_ReceiveMail>(new C2M_ReceiveMail { Page = currPage, MailId = mail.Id });
|
2021-04-08 20:09:59 +08:00
|
|
|
|
if (!ret.Message.IsNullOrEmpty())
|
|
|
|
|
{
|
|
|
|
|
TipHelper.OpenUI(ret.Message);
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
ShowMailItem(ret.MailList, ret.MailCount);
|
|
|
|
|
});
|
|
|
|
|
//!+删除邮件按钮
|
|
|
|
|
ui.m_btnDelete.onClick.Set(() =>
|
|
|
|
|
{
|
2021-04-11 19:50:39 +08:00
|
|
|
|
if (!mailDic.TryGetValue(ui.m_itemList.selectedIndex, out Mail mail)) return;
|
2021-04-08 20:09:59 +08:00
|
|
|
|
if (mail.State == MailState.UnReceive)
|
|
|
|
|
{
|
2021-04-11 19:50:39 +08:00
|
|
|
|
FUI_TipUI tipUI = TipHelper.OpenUI("此邮件含有【未领取的附件】,是否删除?", tipType: TipType.Double);
|
2021-04-08 20:09:59 +08:00
|
|
|
|
tipUI.m_btnYes.self.onClick.Set(BtnYesCallBack);
|
|
|
|
|
tipUI.AddEventCallBack(BtnYesCallBack);
|
|
|
|
|
}
|
|
|
|
|
async void BtnYesCallBack()
|
|
|
|
|
{
|
2021-04-20 00:25:04 +08:00
|
|
|
|
M2C_DeleteMail ret = await zoneScene.GetComponent<SessionComponent>().Call<M2C_DeleteMail>(new C2M_DeleteMail { Page = currPage, MailId = mail.Id });
|
2021-04-08 20:09:59 +08:00
|
|
|
|
if (!ret.Message.IsNullOrEmpty())
|
|
|
|
|
{
|
|
|
|
|
TipHelper.OpenUI(ret.Message);
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
ShowMailItem(ret.MailList, ret.MailCount);
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
//!+领取所有的邮件
|
|
|
|
|
ui.m_btnReceiveAll.onClick.Set(() =>
|
|
|
|
|
{
|
2021-04-11 19:50:39 +08:00
|
|
|
|
FUI_TipUI tip = TipHelper.OpenUI("保证您的背包空格数充足,否则物品消失,一概不负责!", tipType: TipType.Double);
|
2021-04-08 20:09:59 +08:00
|
|
|
|
tip.m_btnYes.self.onClick.Set(RecieveAll);
|
|
|
|
|
|
|
|
|
|
async void RecieveAll()
|
|
|
|
|
{
|
2021-04-20 00:25:04 +08:00
|
|
|
|
M2C_ReceiveAllMail ret = await zoneScene.GetComponent<SessionComponent>().Call<M2C_ReceiveAllMail>(new C2M_ReceiveAllMail());
|
2021-04-08 20:09:59 +08:00
|
|
|
|
if (!ret.Message.IsNullOrEmpty())
|
|
|
|
|
{
|
|
|
|
|
TipHelper.OpenUI(ret.Message);
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
ShowMailItem(ret.MailList, ret.MailCount);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
});
|
|
|
|
|
//!+删除全部已读邮件
|
|
|
|
|
ui.m_btnDeleteAll.onClick.Set(async () =>
|
|
|
|
|
{
|
2021-04-20 00:25:04 +08:00
|
|
|
|
M2C_DeleteAllMail ret = await zoneScene.GetComponent<SessionComponent>().Call<M2C_DeleteAllMail>(new C2M_DeleteAllMail());
|
2021-04-08 20:09:59 +08:00
|
|
|
|
if (!ret.Message.IsNullOrEmpty())
|
|
|
|
|
{
|
|
|
|
|
TipHelper.OpenUI(ret.Message);
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
ShowMailItem(ret.MailList, ret.MailCount);
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
//!获取邮件
|
|
|
|
|
async ETTask GetMailAsync()
|
|
|
|
|
{
|
2021-04-20 00:25:04 +08:00
|
|
|
|
M2C_GetMail mailRet = await zoneScene.GetComponent<SessionComponent>().Call<M2C_GetMail>(new C2M_GetMail { Page = currPage });
|
2021-04-08 20:09:59 +08:00
|
|
|
|
if (!mailRet.Message.IsNullOrEmpty())
|
|
|
|
|
{
|
|
|
|
|
TipHelper.OpenUI(mailRet.Message);
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
ShowMailItem(mailRet.MailList, mailRet.MailCount);
|
|
|
|
|
}
|
|
|
|
|
void ShowMailItem(List<Mail> mailList, int _totalPage)
|
|
|
|
|
{
|
|
|
|
|
totalPage = _totalPage;
|
|
|
|
|
ui.m_txtPage.text = $"{currPage + 1}/{totalPage}";
|
|
|
|
|
mailDic.Clear();
|
|
|
|
|
ui.m_itemList.RemoveChildrenToPool();
|
|
|
|
|
int index = 0;
|
2021-04-11 19:50:39 +08:00
|
|
|
|
foreach (Mail item in mailList)
|
2021-04-08 20:09:59 +08:00
|
|
|
|
{
|
|
|
|
|
mailDic[index++] = item;
|
2021-04-11 19:50:39 +08:00
|
|
|
|
GButton btn = ui.m_itemList.AddItemFromPool().asButton;
|
2021-04-08 20:09:59 +08:00
|
|
|
|
FUI_ButtonMailItem mailItem = FUI_ButtonMailItem.GetFormPool(this.ui, btn);
|
|
|
|
|
mailItem.m_txtTitle.text = item.Title;
|
|
|
|
|
mailItem.m_txtSenderName.text = item.SenderName;
|
|
|
|
|
mailItem.m_txtTime.text = (DateTimeOffset.FromUnixTimeMilliseconds(item.RemainTime).DateTime - DateTime.UtcNow).ToString(@"dd\天hh\时mm\分");
|
|
|
|
|
mailItem.m_Read.SetSelectedIndex(item.State == MailState.UnReceive ? 0 : 1);
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
await ETTask.CompletedTask;
|
|
|
|
|
}
|
|
|
|
|
public void Destroy()
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|