From 78bfe524ea4776c47f6314e56e97f39970b00fce Mon Sep 17 00:00:00 2001
From: client_linchunjie <461730578@qq.com>
Date: 星期二, 25 九月 2018 15:07:07 +0800
Subject: [PATCH] Merge branch 'master' into 1871天赋功能
---
System/Chat/ChatCtrl.cs | 82 +++++++++++++++++++++++++++++++++++++++++
1 files changed, 82 insertions(+), 0 deletions(-)
diff --git a/System/Chat/ChatCtrl.cs b/System/Chat/ChatCtrl.cs
index 220b877..b8eca6c 100644
--- a/System/Chat/ChatCtrl.cs
+++ b/System/Chat/ChatCtrl.cs
@@ -179,6 +179,9 @@
DTC0102_tagCDBPlayer.switchAccountEvent += SwitchAccountEvent;
StageManager.Instance.onStageLoadFinish += OnStageLoadFinish;
+ DTC0403_tagPlayerLoginLoadOK.playerLoginOkEvent += PlayerLoginOkEvent;
+
+ InitChatRedpoints();
FuncConfigConfig _cfg = Config.Instance.Get<FuncConfigConfig>("RandomWord");
try
@@ -192,12 +195,20 @@
}
}
+ private void PlayerLoginOkEvent()
+ {
+ UpdateRedpoint(ChatInfoType.Team);
+ UpdateRedpoint(ChatInfoType.Fairy);
+ }
+
private void OnStageLoadFinish()
{
bool isDungeon = StageManager.Instance.CurrentStage is DungeonStage;
if (!isDungeon)
{
ClearAllChatInfo();
+ unReadChatCounts[ChatInfoType.Fairy] = 0;
+ unReadChatCounts[ChatInfoType.Team] = 0;
}
}
@@ -430,6 +441,7 @@
{
ChatData chatData = new ChatFamilyData(vNetData.Content, (int)vNetData.PlayerID, vNetData.Name, vNetData.Extras);
KeepChatInfo(chatData);
+ ReceiveNewChat(ChatInfoType.Fairy);
}
/// <summary>
/// 濂藉弸绉佽亰
@@ -494,6 +506,7 @@
{
ChatData chatData = new ChatTeamData(vNetData.Content, (int)vNetData.PlayerID, vNetData.Name, vNetData.Extras);
KeepChatInfo(chatData);
+ ReceiveNewChat(ChatInfoType.Team);
}
/// <summary>
/// GM
@@ -990,6 +1003,75 @@
return string.Empty;
}
#endregion
+
+ #region 浠欑紭绾㈢偣
+ Dictionary<ChatInfoType, Redpoint> chatSocialRedpoints = new Dictionary<ChatInfoType, Redpoint>();
+ Dictionary<ChatInfoType, int> unReadChatCounts = new Dictionary<ChatInfoType, int>();
+ public void InitChatRedpoints()
+ {
+ chatSocialRedpoints.Add(ChatInfoType.Fairy, new Redpoint(MainRedDot.RedPoint_FriendChatKey, 2502));
+ chatSocialRedpoints.Add(ChatInfoType.Team, new Redpoint(MainRedDot.RedPoint_FriendChatKey, 2503));
+ unReadChatCounts.Add(ChatInfoType.Fairy, 0);
+ unReadChatCounts.Add(ChatInfoType.Team, 0);
+ }
+
+ public void ViewChat(ChatInfoType type)
+ {
+ if (unReadChatCounts.ContainsKey(type))
+ {
+ unReadChatCounts[type] = 0;
+ UpdateRedpoint(type);
+ }
+ }
+
+ void ReceiveNewChat(ChatInfoType type)
+ {
+ switch (type)
+ {
+ case ChatInfoType.Team:
+ if (!WindowCenter.Instance.CheckOpen<TeamChatWin>())
+ {
+ unReadChatCounts[ChatInfoType.Team] = Mathf.Min(unReadChatCounts[ChatInfoType.Team] + 1, 99);
+ }
+ break;
+ case ChatInfoType.Fairy:
+ if (!WindowCenter.Instance.CheckOpen<FairyChatWin>())
+ {
+ unReadChatCounts[ChatInfoType.Fairy] = Mathf.Min(unReadChatCounts[ChatInfoType.Fairy] + 1, 99);
+ }
+ break;
+ }
+ UpdateRedpoint(type);
+ }
+
+ public void UpdateRedpoint(ChatInfoType type)
+ {
+ if (chatSocialRedpoints.ContainsKey(type))
+ {
+ var redpoint = chatSocialRedpoints[type];
+ if (unReadChatCounts[type] > 0)
+ {
+ redpoint.state = RedPointState.Quantity;
+ redpoint.count = unReadChatCounts[type];
+ }
+ else
+ {
+ redpoint.state = RedPointState.None;
+ }
+ }
+ var socialRed = MainRedDot.Instance.redPointFriendChat;
+ if (chatSocialRedpoints[ChatInfoType.Fairy].state == RedPointState.Quantity
+ || chatSocialRedpoints[ChatInfoType.Team].state == RedPointState.Quantity)
+ {
+ socialRed.count = unReadChatCounts[ChatInfoType.Fairy] > 0 ?
+ unReadChatCounts[ChatInfoType.Fairy] : unReadChatCounts[ChatInfoType.Team];
+ }
+ else
+ {
+ socialRed.count = 0;
+ }
+ }
+ #endregion
}
public struct ChatExtraData
{
--
Gitblit v1.8.0