CTT/Unity/Assets/HotfixView/UI/MailUI/MailUI.cs

207 lines
8.0 KiB
C#
Raw Normal View History

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>();
private Scene zoneScene;
2021-04-08 20:09:59 +08:00
public void Awake()
{
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;
}
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()
{
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()
{
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 () =>
{
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()
{
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()
{
}
}
}