Main/Mail/MailGlobalCell.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
Main/Mail/MailGlobalCell.cs.meta | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
Main/Mail/MailInfoAwardItemCell.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
Main/Mail/MailInfoAwardItemCell.cs.meta | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
Main/Mail/MailInfoWin.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
Main/Mail/MailInfoWin.cs.meta | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
Main/Mail/MailPersonalCell.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
Main/Mail/MailPersonalCell.cs.meta | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
Main/Mail/MailWin.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
Main/Mail/MailWin.cs.meta | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
Main/Manager/GameSystemManager/MailManager.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
Main/Mail/MailGlobalCell.cs
New file @@ -0,0 +1,50 @@ using UnityEngine; namespace vnxbqy.UI { public class MailGlobalCell : CellView { [SerializeField] ButtonEx btnMail; [SerializeField] ImageEx imgState; [SerializeField] ImageEx imgRed; [SerializeField] TextEx txtTitle; [SerializeField] TextEx txtDate; MailManager model { get { return MailManager.Instance; } } string uuid = string.Empty; public void Display(int index, CellView cellView) { MailCategory mailCategory = (MailCategory)cellView.info.Value.infoInt1; var list = model.GetSortMailScrList(mailCategory); if (list == null || index < 0 || index >= list.Count) return; uuid = list[index]; if (!model.TryGetMailData(uuid, out var mailData) || mailData == null) return; imgRed.SetActive(mailData.MailState == 1); txtTitle.text = mailData.Title; imgState.SetSprite(mailData.MailState == 2 || mailData.MailState == 3 ? "MailRead" : "MailNoRead"); if (mailData.Items != null) { txtDate.text = model.FormatCreateMailTime(mailData.CreateDateTime); } else { int expiryDay = model.GetMailExpiryDays(mailData.CreateDateTime, mailData.LimitDays); txtDate.text = expiryDay > 0 ? Language.Get("Mail07", expiryDay) : model.FormatCreateMailTime(mailData.CreateDateTime); } btnMail.SetListener(OnClickButtonMail); } private void OnClickButtonMail() { model.nowUuid = uuid; if (!model.TryGetMailData(uuid, out var mailData) || mailData == null) return; if (mailData.MailState == 1) { model.ReadMail(uuid); } UIManager.Instance.OpenWindow<MailInfoWin>(); } } } Main/Mail/MailGlobalCell.cs.meta
New file @@ -0,0 +1,11 @@ fileFormatVersion: 2 guid: baaef1e2dac4e30499722be1d4c60bb4 MonoImporter: externalObjects: {} serializedVersion: 2 defaultReferences: [] executionOrder: 0 icon: {instanceID: 0} userData: assetBundleName: assetBundleVariant: Main/Mail/MailInfoAwardItemCell.cs
New file @@ -0,0 +1,26 @@ using UnityEngine; namespace vnxbqy.UI { public class MailInfoAwardItemCell : CellView { [SerializeField] ItemCell itemCell; [SerializeField] ImageEx imgHave; MailManager model { get { return MailManager.Instance; } } public void Display(int index, CellView cellView) { int mailState = cellView.info.Value.infoInt1;//0-未知;1-未读;2-已读;3-已领; if (!model.TryGetMailData(model.nowUuid, out MailData mailData) || mailData == null || mailData.Items == null) return; if (index < 0 || index >= mailData.Items.Count) return; MailItemData data = mailData.Items[index]; itemCell.Init(new ItemCellModel((int)data.ItemID, true, (ulong)data.Count)); itemCell.button.SetListener(() => ItemTipUtility.Show((int)data.ItemID)); imgHave.SetActive(mailState == 3); MailCategory mailCategory = (MailCategory)cellView.info.Value.infoInt1; var list = model.GetSortMailScrList(mailCategory); } } } Main/Mail/MailInfoAwardItemCell.cs.meta
New file @@ -0,0 +1,11 @@ fileFormatVersion: 2 guid: 2b475cf66abe5c94fb8aa8664ef46141 MonoImporter: externalObjects: {} serializedVersion: 2 defaultReferences: [] executionOrder: 0 icon: {instanceID: 0} userData: assetBundleName: assetBundleVariant: Main/Mail/MailInfoWin.cs
New file @@ -0,0 +1,154 @@ using UnityEngine; namespace vnxbqy.UI { public class MailInfoWin : UIBase { [SerializeField] TextEx txtDate; [SerializeField] TextEx txtTitle; [SerializeField] Transform transNoAward; [SerializeField] RichText txtNoAwardInfo; [SerializeField] Transform transAward; [SerializeField] RichText txtAwardInfo; [SerializeField] ScrollerController scrAwardItem; [SerializeField] TextEx txtExpiryDate; [SerializeField] ButtonEx btnHave; [SerializeField] ButtonEx btnDelete; MailData nowMailData; bool isHasAward = false; MailManager model { get { return MailManager.Instance; } } protected override void InitComponent() { base.InitComponent(); btnHave.SetListener(OnClickHaveButton); btnDelete.SetListener(OnClickDeleteButton); } protected override void OnPreOpen() { scrAwardItem.OnRefreshCell += OnRefreshLowRewardCell; model.OnUpdateMailListEvent += OnUpdateMailListEvent; model.OnUpdateMailStateChangeEvent += OnUpdateMailStateChangeEvent; } protected override void OnOpen() { UpdateDataInfo(); Display(); CreateScrAward(); } protected override void OnPreClose() { scrAwardItem.OnRefreshCell -= OnRefreshLowRewardCell; model.OnUpdateMailListEvent -= OnUpdateMailListEvent; model.OnUpdateMailStateChangeEvent -= OnUpdateMailStateChangeEvent; } private void OnClickHaveButton() { if (model.nowUuid == null || model.nowUuid == string.Empty) { Debug.Log("当前查看的邮件没有UUID"); return; } model.ClaimMail(model.nowUuid); } private void OnClickDeleteButton() { if (model.nowUuid == null || model.nowUuid == string.Empty) { Debug.Log("当前查看的邮件没有UUID"); return; } model.DeleteMail(model.nowUuid); UIManager.Instance.CloseWindow<MailInfoWin>(); //邮件删除成功 SysNotifyMgr.Instance.ShowTip("Mail01"); } private void OnUpdateMailStateChangeEvent() { UpdateDataInfo(); Display(); CreateScrAward(); } private void OnUpdateMailListEvent() { UpdateDataInfo(); Display(); CreateScrAward(); } private void OnRefreshLowRewardCell(ScrollerDataType type, CellView cell) { var _cell = cell.GetComponent<MailInfoAwardItemCell>(); _cell?.Display(cell.index, cell); } private void CreateScrAward() { scrAwardItem.Refresh(); if (isHasAward) { for (int i = 0; i < nowMailData.Items.Count; i++) { CellInfo cellInfo = new CellInfo(); cellInfo.infoInt1 = nowMailData.MailState; scrAwardItem.AddCell(ScrollerDataType.Header, i); } } scrAwardItem.Restart(); } private void Display() { if (nowMailData == null) return; transNoAward.SetActive(!isHasAward); transAward.SetActive(isHasAward); txtDate.text = model.FormatCreateMailTime(nowMailData.CreateDateTime); if (nowMailData.IsTemplateMail()) { string key = nowMailData.GetTemplateKey(); if (MailConfig.HasKey(key)) { MailConfig config = MailConfig.Get(key); var templateParams = nowMailData.GetTemplateParams(); string content = string.Format(config.Content, templateParams.ToArray()); txtTitle.text = config.Title; txtNoAwardInfo.text = content; txtAwardInfo.text = content; } else { txtTitle.text = nowMailData.Title; txtNoAwardInfo.text = nowMailData.Text; txtAwardInfo.text = nowMailData.Text; } } else { txtTitle.text = nowMailData.Title; txtNoAwardInfo.text = nowMailData.Text; txtAwardInfo.text = nowMailData.Text; } int expiryDays = model.GetMailExpiryDays(nowMailData.CreateDateTime, nowMailData.LimitDays); txtExpiryDate.text = expiryDays > 0 ? Language.Get("Mail07", expiryDays) : string.Empty; } private void UpdateDataInfo() { if (!model.TryGetMailData(model.nowUuid, out nowMailData)) { UIManager.Instance.CloseWindow<MailInfoWin>(); } isHasAward = nowMailData != null && nowMailData.Items != null; } } } Main/Mail/MailInfoWin.cs.meta
New file @@ -0,0 +1,11 @@ fileFormatVersion: 2 guid: 67c6caf988a88c548b2eaeb8bb069eca MonoImporter: externalObjects: {} serializedVersion: 2 defaultReferences: [] executionOrder: 0 icon: {instanceID: 0} userData: assetBundleName: assetBundleVariant: Main/Mail/MailPersonalCell.cs
New file @@ -0,0 +1,50 @@ using UnityEngine; namespace vnxbqy.UI { public class MailPersonalCell : CellView { [SerializeField] ButtonEx btnMail; [SerializeField] ImageEx imgState; [SerializeField] ImageEx imgRed; [SerializeField] TextEx txtTitle; [SerializeField] TextEx txtDate; MailManager model { get { return MailManager.Instance; } } string uuid = string.Empty; public void Display(int index, CellView cellView) { MailCategory mailCategory = (MailCategory)cellView.info.Value.infoInt1; var list = model.GetSortMailScrList(mailCategory); if (list == null || index < 0 || index >= list.Count) return; uuid = list[index]; if (!model.TryGetMailData(uuid, out var mailData) || mailData == null) return; imgRed.SetActive(mailData.MailState == 1); txtTitle.text = mailData.Title; imgState.SetSprite(mailData.MailState == 2 || mailData.MailState == 3 ? "MailRead" : "MailNoRead"); if (mailData.Items != null) { txtDate.text = model.FormatCreateMailTime(mailData.CreateDateTime); } else { int expiryDay = model.GetMailExpiryDays(mailData.CreateDateTime, mailData.LimitDays); txtDate.text = expiryDay > 0 ? Language.Get("Mail07", expiryDay) : model.FormatCreateMailTime(mailData.CreateDateTime); } btnMail.SetListener(OnClickButtonMail); } private void OnClickButtonMail() { model.nowUuid = uuid; if (!model.TryGetMailData(uuid, out var mailData) || mailData == null) return; if (mailData.MailState == 1) { model.ReadMail(uuid); } UIManager.Instance.OpenWindow<MailInfoWin>(); } } } Main/Mail/MailPersonalCell.cs.meta
New file @@ -0,0 +1,12 @@ fileFormatVersion: 2 guid: 9b2f93157b0f88549b156091e0a828d8 timeCreated: 1508570733 licenseType: Pro MonoImporter: serializedVersion: 2 defaultReferences: [] executionOrder: 0 icon: {instanceID: 0} userData: assetBundleName: assetBundleVariant: Main/Mail/MailWin.cs
New file @@ -0,0 +1,173 @@ using System; using UnityEngine; namespace vnxbqy.UI { public class MailWin : UIBase { [SerializeField] Transform transPersonal; [SerializeField] Transform transGlobal; [SerializeField] ScrollerController scrPersonal; [SerializeField] ScrollerController scrGlobal; [SerializeField] ButtonEx btnDeleteRead; [SerializeField] ButtonEx btnClaimAll; [SerializeField] ToggleEx togTab0; [SerializeField] RedpointBehaviour rpTab0; [SerializeField] ToggleEx togTab1; [SerializeField] RedpointBehaviour rpTab1; [SerializeField] Transform transNoMail; MailManager model { get { return MailManager.Instance; } } protected override void InitComponent() { base.InitComponent(); btnDeleteRead.SetListener(OnDeleteRead); btnClaimAll.SetListener(OnClaimAll); togTab0.SetListener(OnTab0); togTab1.SetListener(OnTab1); } protected override void OnPreOpen() { model.OnUpdateMailListEvent += OnUpdateMailListEvent; model.OnUpdateMailStateChangeEvent += OnUpdateMailStateChangeEvent; scrPersonal.OnRefreshCell += OnRefreshPersonalCell; scrGlobal.OnRefreshCell += OnRefreshGlobalCell; rpTab0.redpointId = model.GetTabRedpointId(MailCategory.Personal); rpTab1.redpointId = model.GetTabRedpointId(MailCategory.Global); transNoMail.SetActive(false); } protected override void OnPreClose() { model.OnUpdateMailListEvent -= OnUpdateMailListEvent; model.OnUpdateMailStateChangeEvent -= OnUpdateMailStateChangeEvent; scrPersonal.OnRefreshCell -= OnRefreshPersonalCell; scrGlobal.OnRefreshCell -= OnRefreshGlobalCell; } private void OnTab0(bool value) { if (value) { transPersonal.SetActive(true); transGlobal.SetActive(false); model.nowMailCategory = MailCategory.Personal; CreatePersonalScr(model.nowMailCategory); } } private void OnTab1(bool value) { if (value) { transPersonal.SetActive(false); transGlobal.SetActive(true); model.nowMailCategory = MailCategory.Global; CreateGlobalScr(model.nowMailCategory); } } protected override void OnOpen() { togTab0.isOn = true; togTab1.isOn = false; model.nowMailCategory = MailCategory.Personal; CreatePersonalScr(model.nowMailCategory); } private void OnRefreshPersonalCell(ScrollerDataType type, CellView cell) { var _cell = cell.GetComponent<MailPersonalCell>(); _cell?.Display(cell.index, cell); } private void OnRefreshGlobalCell(ScrollerDataType type, CellView cell) { var _cell = cell.GetComponent<MailGlobalCell>(); _cell?.Display(cell.index, cell); } private void OnDeleteRead() { ConfirmCancel.ShowPopConfirm( Language.Get("Mail101"), Language.Get("Mail10"), (bool isOk) => { if (isOk) { model.DeleteMail(); //邮件删除成功 SysNotifyMgr.Instance.ShowTip("Mail01"); } }); } private void OnClaimAll() { if (!model.IsCanHaveMail()) { SysNotifyMgr.Instance.ShowTip("Mail02"); return; } model.ClaimMail(); } public void CreatePersonalScr(MailCategory mailCategory) { scrPersonal.Refresh(); var list = model.GetSortMailScrList(mailCategory); if (list != null) { for (int i = 0; i < list.Count; i++) { CellInfo cellInfo = new CellInfo(); cellInfo.infoInt1 = (int)mailCategory; scrPersonal.AddCell(ScrollerDataType.Header, i, cellInfo); } } scrPersonal.Restart(); } public void CreateGlobalScr(MailCategory mailCategory) { scrGlobal.Refresh(); var list = model.GetSortMailScrList(mailCategory); if (list != null) { for (int i = 0; i < list.Count; i++) { CellInfo cellInfo = new CellInfo(); cellInfo.infoInt1 = (int)mailCategory; scrGlobal.AddCell(ScrollerDataType.Header, i, cellInfo); } } scrGlobal.Restart(); } private void OnUpdateMailStateChangeEvent() { RefreshScr(); } private void OnUpdateMailListEvent() { RefreshScr(); } private void RefreshScr() { var list = model.GetSortMailScrList(model.nowMailCategory); if (list.IsNullOrEmpty()) { transNoMail.SetActive(true); } else { transNoMail.SetActive(false); scrPersonal.m_Scorller.RefreshActiveCellViews(); scrGlobal.m_Scorller.RefreshActiveCellViews(); } } } } Main/Mail/MailWin.cs.meta
New file @@ -0,0 +1,12 @@ fileFormatVersion: 2 guid: 19dce65856f34284e9a1e1a192e3e348 timeCreated: 1501491107 licenseType: Pro MonoImporter: serializedVersion: 2 defaultReferences: [] executionOrder: 0 icon: {instanceID: 0} userData: assetBundleName: assetBundleVariant: Main/Manager/GameSystemManager/MailManager.cs
@@ -241,10 +241,13 @@ pack.ReqType = ReqType; GameNetSystem.Instance.SendInfo(pack); } //没有一个可领取的邮件 //没有一个可领取的个人邮件 public bool IsCanHaveMail() { return mailDataDict.Values.Any(mail => var personalMails = GetMailList(MailCategory.Personal); return personalMails.Any(guid => mailDataDict.TryGetValue(guid, out var mail) && mail.MailState != 3 && mail.Items != null && mail.Items.Count > 0