From 6df9b52e1d68d4bb145fcf6d0520c2fbfed6cef1 Mon Sep 17 00:00:00 2001
From: yyl <yyl>
Date: 星期二, 27 五月 2025 16:35:13 +0800
Subject: [PATCH] Merge branch 'master' of http://192.168.1.20:10010/r/Project_SG_scripts
---
Main/Mail/MailGlobalCell.cs | 50 +++++
Main/Mail/MailInfoWin.cs | 154 +++++++++++++++++
Main/Manager/GameSystemManager/MailManager.cs | 7
Main/Mail/MailWin.cs | 173 +++++++++++++++++++
Main/Mail/MailGlobalCell.cs.meta | 11 +
Main/Mail/MailInfoAwardItemCell.cs.meta | 11 +
Main/Mail/MailInfoAwardItemCell.cs | 26 ++
Main/Mail/MailInfoWin.cs.meta | 11 +
Main/Mail/MailWin.cs.meta | 12 +
Main/Mail/MailPersonalCell.cs | 50 +++++
Main/Mail/MailPersonalCell.cs.meta | 12 +
11 files changed, 515 insertions(+), 2 deletions(-)
diff --git a/Main/Mail/MailGlobalCell.cs b/Main/Mail/MailGlobalCell.cs
new file mode 100644
index 0000000..7da0aac
--- /dev/null
+++ b/Main/Mail/MailGlobalCell.cs
@@ -0,0 +1,50 @@
+锘縰sing 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>();
+ }
+ }
+}
\ No newline at end of file
diff --git a/Main/Mail/MailGlobalCell.cs.meta b/Main/Mail/MailGlobalCell.cs.meta
new file mode 100644
index 0000000..12c2cfe
--- /dev/null
+++ b/Main/Mail/MailGlobalCell.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: baaef1e2dac4e30499722be1d4c60bb4
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Main/Mail/MailInfoAwardItemCell.cs b/Main/Mail/MailInfoAwardItemCell.cs
new file mode 100644
index 0000000..5795352
--- /dev/null
+++ b/Main/Mail/MailInfoAwardItemCell.cs
@@ -0,0 +1,26 @@
+锘縰sing 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);
+ }
+ }
+}
\ No newline at end of file
diff --git a/Main/Mail/MailInfoAwardItemCell.cs.meta b/Main/Mail/MailInfoAwardItemCell.cs.meta
new file mode 100644
index 0000000..51e1539
--- /dev/null
+++ b/Main/Mail/MailInfoAwardItemCell.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 2b475cf66abe5c94fb8aa8664ef46141
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Main/Mail/MailInfoWin.cs b/Main/Mail/MailInfoWin.cs
new file mode 100644
index 0000000..b93e4ea
--- /dev/null
+++ b/Main/Mail/MailInfoWin.cs
@@ -0,0 +1,154 @@
+锘縰sing 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("褰撳墠鏌ョ湅鐨勯偖浠舵病鏈塙UID");
+ return;
+ }
+ model.ClaimMail(model.nowUuid);
+ }
+ private void OnClickDeleteButton()
+ {
+ if (model.nowUuid == null || model.nowUuid == string.Empty)
+ {
+ Debug.Log("褰撳墠鏌ョ湅鐨勯偖浠舵病鏈塙UID");
+ 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;
+ }
+ }
+}
+
diff --git a/Main/Mail/MailInfoWin.cs.meta b/Main/Mail/MailInfoWin.cs.meta
new file mode 100644
index 0000000..6db9ea2
--- /dev/null
+++ b/Main/Mail/MailInfoWin.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 67c6caf988a88c548b2eaeb8bb069eca
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Main/Mail/MailPersonalCell.cs b/Main/Mail/MailPersonalCell.cs
new file mode 100644
index 0000000..1dad912
--- /dev/null
+++ b/Main/Mail/MailPersonalCell.cs
@@ -0,0 +1,50 @@
+锘縰sing 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>();
+ }
+ }
+}
\ No newline at end of file
diff --git a/Main/Mail/MailPersonalCell.cs.meta b/Main/Mail/MailPersonalCell.cs.meta
new file mode 100644
index 0000000..2d0f7ba
--- /dev/null
+++ b/Main/Mail/MailPersonalCell.cs.meta
@@ -0,0 +1,12 @@
+fileFormatVersion: 2
+guid: 9b2f93157b0f88549b156091e0a828d8
+timeCreated: 1508570733
+licenseType: Pro
+MonoImporter:
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Main/Mail/MailWin.cs b/Main/Mail/MailWin.cs
new file mode 100644
index 0000000..91da8dd
--- /dev/null
+++ b/Main/Mail/MailWin.cs
@@ -0,0 +1,173 @@
+锘縰sing 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();
+ }
+ }
+ }
+}
+
diff --git a/Main/Mail/MailWin.cs.meta b/Main/Mail/MailWin.cs.meta
new file mode 100644
index 0000000..38b2ed7
--- /dev/null
+++ b/Main/Mail/MailWin.cs.meta
@@ -0,0 +1,12 @@
+fileFormatVersion: 2
+guid: 19dce65856f34284e9a1e1a192e3e348
+timeCreated: 1501491107
+licenseType: Pro
+MonoImporter:
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Main/Manager/GameSystemManager/MailManager.cs b/Main/Manager/GameSystemManager/MailManager.cs
index 0c26623..bf933e8 100644
--- a/Main/Manager/GameSystemManager/MailManager.cs
+++ b/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
--
Gitblit v1.8.0