using ET; using FairyGUI; using System; using System.Collections.Generic; namespace ET { public class MailUIAwakeSyatem : AwakeSystem { public override void Awake(MailUI self) { self.Awake(); } } public class MailUIDestroySyatem : DestroySystem { public override void Destroy(MailUI self) { self.Destroy(); } } public class MailUI : Entity { public FUI_MailUI ui; private Dictionary mailDic = new Dictionary(); private Scene zoneScene; public void Awake() { zoneScene = this.ZoneScene(); ui = GetParent(); AwakeAsync().Coroutine(); } private async ETVoid AwakeAsync() { int currPage = 0; int totalPage = 0; //!+显示列表 await GetMailAsync(); //!+列表点击事件 ui.m_itemList.onClickItem.Set(() => { if (!mailDic.TryGetValue(ui.m_itemList.selectedIndex, out Mail item)) return; 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 ; foreach (MailItem reward in item.RewordArr) { if (reward.ItemId == BagUI.CoinId) { (long, int, int) money = TabHelper.GetCoinFormat(reward.Count); 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 () => { if (!mailDic.TryGetValue(ui.m_itemList.selectedIndex, out Mail mail)) return; if (mail.State == MailState.Received) { TipHelper.OpenUI("此邮件的附件您已经领取过了!"); return; } M2C_ReceiveMail ret = await zoneScene.GetComponent().Call(new C2M_ReceiveMail { Page = currPage, MailId = mail.Id }); if (!ret.Message.IsNullOrEmpty()) { TipHelper.OpenUI(ret.Message); return; } ShowMailItem(ret.MailList, ret.MailCount); }); //!+删除邮件按钮 ui.m_btnDelete.onClick.Set(() => { if (!mailDic.TryGetValue(ui.m_itemList.selectedIndex, out Mail mail)) return; if (mail.State == MailState.UnReceive) { FUI_TipUI tipUI = TipHelper.OpenUI("此邮件含有【未领取的附件】,是否删除?", tipType: TipType.Double); tipUI.m_btnYes.self.onClick.Set(BtnYesCallBack); tipUI.AddEventCallBack(BtnYesCallBack); } async void BtnYesCallBack() { M2C_DeleteMail ret = await zoneScene.GetComponent().Call(new C2M_DeleteMail { Page = currPage, MailId = mail.Id }); if (!ret.Message.IsNullOrEmpty()) { TipHelper.OpenUI(ret.Message); return; } ShowMailItem(ret.MailList, ret.MailCount); } }); //!+领取所有的邮件 ui.m_btnReceiveAll.onClick.Set(() => { FUI_TipUI tip = TipHelper.OpenUI("保证您的背包空格数充足,否则物品消失,一概不负责!", tipType: TipType.Double); tip.m_btnYes.self.onClick.Set(RecieveAll); async void RecieveAll() { M2C_ReceiveAllMail ret = await zoneScene.GetComponent().Call(new C2M_ReceiveAllMail()); 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().Call(new C2M_DeleteAllMail()); if (!ret.Message.IsNullOrEmpty()) { TipHelper.OpenUI(ret.Message); return; } ShowMailItem(ret.MailList, ret.MailCount); }); //!获取邮件 async ETTask GetMailAsync() { M2C_GetMail mailRet = await zoneScene.GetComponent().Call(new C2M_GetMail { Page = currPage }); if (!mailRet.Message.IsNullOrEmpty()) { TipHelper.OpenUI(mailRet.Message); return; } ShowMailItem(mailRet.MailList, mailRet.MailCount); } void ShowMailItem(List mailList, int _totalPage) { totalPage = _totalPage; ui.m_txtPage.text = $"{currPage + 1}/{totalPage}"; mailDic.Clear(); ui.m_itemList.RemoveChildrenToPool(); int index = 0; foreach (Mail item in mailList) { mailDic[index++] = item; GButton btn = ui.m_itemList.AddItemFromPool().asButton; 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() { } } }