zhaoyang 2 gadi atpakaļ
vecāks
revīzija
8339480a68

+ 1 - 0
GameClient/Assets/Game/HotUpdate/Constant/ConstMessage.cs

@@ -111,6 +111,7 @@ namespace GFGGame
         public const string LEAGUE_ANSWER_START = "LEAGUE_ANSWER_START";//联盟新一轮答题开始
         public const string LEAGUE_ANSWER_END = "LEAGUE_ANSWER_END";//联盟本轮答题结束
         public const string OTHER_ROLE_INFO_CHANGE = "OTHER_ROLE_INFO_CHANGE";//其他玩家信息变化
+        public const string NOTICE_CHAT_MESSAGE = "NOTICE_CHAT_MESSAGE";//通知聊天信息
 
     }
 }

+ 2 - 1
GameClient/Assets/Game/HotUpdate/Controller/GameController.cs

@@ -101,7 +101,7 @@ namespace GFGGame
             GFGUIPackage.AddPackage(ResPathUtil.GetUIPackagePath("CommonGame"));
             GFGUIPackage.AddPackage(ResPathUtil.GetUIPackagePath("Main"));
 
-            LeagueSproxy.ReqGetLeagueInfo().Coroutine();
+            // LeagueSproxy.ReqGetLeagueInfo().Coroutine();
             await ItemProxy.GetItemInfos();
             await InstanceZonesSProxy.GetInstanceZonesInfos();
             await StorageSProxy.ReqGetClientValues();
@@ -174,6 +174,7 @@ namespace GFGGame
             DailyTaskDataManager.Instance.Clear();
             TravelDataManager.Instance.Clear();
             ArenaDataManager.Instance.Clear();
+            ChatDataManager.Instance.Clear();
             GameGlobal.zoneScene.GetComponent<SessionComponent>()?.Disconnect();
             GameGlobal.zoneScene.GetComponent<ServerInfosComponent>()?.ServerInfoList?.Clear();
             GameGlobal.zoneScene.GetComponent<AccountInfoComponent>()?.Clear();

+ 19 - 0
GameClient/Assets/Game/HotUpdate/Data/ChatDataManager.cs

@@ -0,0 +1,19 @@
+using System.Collections.Generic;
+using ET;
+using UnityEngine;
+
+namespace GFGGame
+{
+
+    public class ChatDataManager : SingletonBase<ChatDataManager>
+    {
+        public Dictionary<int, List<ChatData>> ChatDatas = new Dictionary<int, List<ChatData>>();//int:ChatType
+        public Dictionary<long, List<ChatData>> PrivateChatDatas = new Dictionary<long, List<ChatData>>();//int:RoleId
+
+        public void Clear()
+        {
+            ChatDatas.Clear();
+            PrivateChatDatas.Clear();
+        }
+    }
+}

+ 11 - 0
GameClient/Assets/Game/HotUpdate/Data/ChatDataManager.cs.meta

@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: caed960486e6d194d9d2e33c9567e228
+MonoImporter:
+  externalObjects: {}
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

+ 11 - 1
GameClient/Assets/Game/HotUpdate/Data/RoleDataManager.cs

@@ -179,7 +179,17 @@ namespace GFGGame
             roleName = GameGlobal.zoneScene.GetComponent<RoleInfosComponent>().GetCurrentRoleName();
             roleId = GameGlobal.zoneScene.GetComponent<RoleInfosComponent>().CurrentRoleId;
         }
-
+        public static OtherRoleInfoData GetOtherRoleInfoData(OtherRoleInfoProto otherRoleInfo)
+        {
+            OtherRoleInfoData otherRoleInfoData = new OtherRoleInfoData();
+            otherRoleInfoData.roleId = otherRoleInfo.RoleId;
+            otherRoleInfoData.headId = otherRoleInfo.HeadItemId;
+            otherRoleInfoData.headBorderId = otherRoleInfo.HeadBorderItemId;
+            otherRoleInfoData.roleName = otherRoleInfo.RoleName;
+            otherRoleInfoData.roleLv = otherRoleInfo.RoleLvl;
+            otherRoleInfoData.offlineTimeSec = otherRoleInfo.OfflineTimeSec;
+            return otherRoleInfoData;
+        }
         private static int oldLvValue;
         public static void RoleLvUp(int oldValue)
         {

+ 11 - 0
GameClient/Assets/Game/HotUpdate/Data/VO/ChatData.cs

@@ -0,0 +1,11 @@
+namespace GFGGame
+{
+    public class ChatData
+    {
+        public int Type;//ChatType
+        public OtherRoleInfoData RoleInfo; //玩家信息
+        public long TargetId; //私聊时需要
+        public string Content; //内容
+        public long Time; //时间
+    }
+}

+ 11 - 0
GameClient/Assets/Game/HotUpdate/Data/VO/ChatData.cs.meta

@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: d0671a6e62ad6864b8f8ef7995b2b34e
+MonoImporter:
+  externalObjects: {}
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

+ 5 - 4
GameClient/Assets/Game/HotUpdate/ServerProxy/ArenaSproxy.cs

@@ -361,10 +361,11 @@ namespace GFGGame
             arenaTarget.FightScores = arenaTargetProto.FightPower;
             if (arenaTarget.Type == FightTargetType.PLAYER)
             {
-                arenaTarget.RoleInfo.roleId = arenaTargetProto.RoleInfo.RoleId;
-                arenaTarget.RoleInfo.roleName = arenaTargetProto.RoleInfo.RoleName;
-                arenaTarget.RoleInfo.roleLv = arenaTargetProto.RoleInfo.RoleLvl;
-                arenaTarget.RoleInfo.headId = arenaTargetProto.RoleInfo.HeadItemId;
+                // arenaTarget.RoleInfo.roleId = arenaTargetProto.RoleInfo.RoleId;
+                // arenaTarget.RoleInfo.roleName = arenaTargetProto.RoleInfo.RoleName;
+                // arenaTarget.RoleInfo.roleLv = arenaTargetProto.RoleInfo.RoleLvl;
+                // arenaTarget.RoleInfo.headId = arenaTargetProto.RoleInfo.HeadItemId;
+                arenaTarget.RoleInfo = RoleDataManager.GetOtherRoleInfoData(arenaTargetProto.RoleInfo);
             }
             else
             {

+ 82 - 0
GameClient/Assets/Game/HotUpdate/ServerProxy/ChatSProxy.cs

@@ -0,0 +1,82 @@
+using System.Collections.Generic;
+using ET;
+using GFGGame;
+
+namespace ET
+{
+    public class NoticeNoticeChatMsg : AMHandler<S2C_NoticeChatMsg>
+    {
+        protected override async ETTask Run(Session session, S2C_NoticeChatMsg message)
+        {
+            ChatData chatData = new ChatData();
+            chatData.Type = message.Type;
+            chatData.RoleInfo = RoleDataManager.GetOtherRoleInfoData(message.RoleInfo);
+            chatData.TargetId = chatData.RoleInfo.roleId;
+            chatData.Content = message.Content;
+            chatData.Time = message.Time;
+            if (message.Type == ChatType.Private)
+            {
+                ChatDataManager.Instance.PrivateChatDatas[chatData.TargetId].Add(chatData);
+            }
+            else
+            {
+                ChatDataManager.Instance.PrivateChatDatas[chatData.Type].Add(chatData);
+            }
+            EventAgent.DispatchEvent(ConstMessage.NOTICE_CHAT_MESSAGE);
+            await ETTask.CompletedTask;
+        }
+    }
+}
+namespace GFGGame
+{
+    public static class ChatSProxy
+    {
+        public static async ETTask<bool> ReqSendChatMsg(int type, string content, long targetId = 0)
+        {
+            S2C_SendChatMsg response = null;
+            response = (S2C_SendChatMsg)await MessageHelper.SendToServer(new C2S_SendChatMsg() { Type = type, Content = content, TargetId = targetId });
+            if (response != null)
+            {
+                if (response.Error == ErrorCode.ERR_Success)
+                {
+                    return true;
+                }
+            }
+            return false;
+        }
+        public static async ETTask<bool> ReqQueryChatMsg(int type)
+        {
+            S2C_QueryChatMsg response = null;
+            response = (S2C_QueryChatMsg)await MessageHelper.SendToServer(new C2S_QueryChatMsg() { Type = type });
+            if (response != null)
+            {
+                if (response.Error == ErrorCode.ERR_Success)
+                {
+                    if (ChatDataManager.Instance.ChatDatas.ContainsKey(type))
+                    {
+                        ChatDataManager.Instance.ChatDatas[type].Clear();
+                    }
+                    for (int i = 0; i < response.ChatMsgs.Count; i++)
+                    {
+                        ChatData chatData = new ChatData();
+                        chatData.Type = response.ChatMsgs[i].Type;
+                        chatData.RoleInfo = RoleDataManager.GetOtherRoleInfoData(response.ChatMsgs[i].RoleInfo);
+                        chatData.TargetId = chatData.RoleInfo.roleId;
+                        chatData.Content = response.ChatMsgs[i].Content;
+                        chatData.Time = response.ChatMsgs[i].Time;
+                        if (response.ChatMsgs[i].Type == ChatType.Private)
+                        {
+                            ChatDataManager.Instance.PrivateChatDatas[chatData.TargetId].Add(chatData);
+                        }
+                        else
+                        {
+                            ChatDataManager.Instance.ChatDatas[chatData.Type].Add(chatData);
+                        }
+                    }
+                    return true;
+                }
+            }
+            return false;
+        }
+    }
+}

+ 11 - 0
GameClient/Assets/Game/HotUpdate/ServerProxy/ChatSProxy.cs.meta

@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 5b323c9b018851044b6a9ecf74b452a0
+MonoImporter:
+  externalObjects: {}
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

+ 5 - 15
GameClient/Assets/Game/HotUpdate/ServerProxy/LeagueSproxy.cs

@@ -42,7 +42,7 @@ namespace GFGGame
     {
         protected override async ETTask Run(Session session, L2C_NoticeApplyLeague message)
         {
-            OtherRoleInfoData otherRoleInfo = LeagueSproxy.GetOtherRoleInfoData(message.RoleInfo);
+            OtherRoleInfoData otherRoleInfo = RoleDataManager.GetOtherRoleInfoData(message.RoleInfo);
             LeagueDataManager.Instance.ListApplyDatas[otherRoleInfo.roleId] = otherRoleInfo;
             await ETTask.CompletedTask;
         }
@@ -355,7 +355,7 @@ namespace GFGGame
                 {
                     for (int i = 0; i < response.RoleInfo.Count; i++)
                     {
-                        LeagueDataManager.Instance.ListApplyDatas[response.RoleInfo[i].RoleId] = GetOtherRoleInfoData(response.RoleInfo[i]);
+                        LeagueDataManager.Instance.ListApplyDatas[response.RoleInfo[i].RoleId] = RoleDataManager.GetOtherRoleInfoData(response.RoleInfo[i]);
                     }
                     return true;
                 }
@@ -724,7 +724,7 @@ namespace GFGGame
         public static LeagueMemberData GetLeagueMemberData(LeagueMemberDetailInfoProto memberDetailInfoProto)
         {
             LeagueMemberData memberData = new LeagueMemberData();
-            memberData.RoleInfo = GetOtherRoleInfoData(memberDetailInfoProto.RoleInfo);
+            memberData.RoleInfo = RoleDataManager.GetOtherRoleInfoData(memberDetailInfoProto.RoleInfo);
             memberData.Pos = memberDetailInfoProto.Pos;
             memberData.WeekContribution = memberDetailInfoProto.WeekContribution;
             memberData.AllContribution = memberDetailInfoProto.AllContribution;
@@ -750,23 +750,13 @@ namespace GFGGame
         public static LeagueLogData GetLeagueLogData(LeagueJoinQuitLogProto logProto)
         {
             LeagueLogData logData = new LeagueLogData();
-            logData.RoleInfo = GetOtherRoleInfoData(logProto.RoleInfo);
+            logData.RoleInfo = RoleDataManager.GetOtherRoleInfoData(logProto.RoleInfo);
             logData.Type = logProto.Type;
             logData.Time = logProto.Time;
             logData.OldPos = logProto.OldPos;
             logData.NewPos = logProto.NewPos;
             return logData;
         }
-        public static OtherRoleInfoData GetOtherRoleInfoData(OtherRoleInfoProto otherRoleInfo)
-        {
-            OtherRoleInfoData otherRoleInfoData = new OtherRoleInfoData();
-            otherRoleInfoData.roleId = otherRoleInfo.RoleId;
-            otherRoleInfoData.headId = otherRoleInfo.HeadItemId;
-            otherRoleInfoData.headBorderId = otherRoleInfo.HeadBorderItemId;
-            otherRoleInfoData.roleName = otherRoleInfo.RoleName;
-            otherRoleInfoData.roleLv = otherRoleInfo.RoleLvl;
-            otherRoleInfoData.offlineTimeSec = otherRoleInfo.OfflineTimeSec;
-            return otherRoleInfoData;
-        }
+
     }
 }

+ 12 - 10
GameClient/Assets/Game/HotUpdate/ServerProxy/RoleInfoSProxy.cs

@@ -16,21 +16,23 @@ namespace GFGGame
             {
                 if (LeagueDataManager.Instance.LeagueData.LeagueMemberDatas.ContainsKey(message.RoleInfos[i].RoleId))
                 {
-                    UpdateRoleChange(LeagueDataManager.Instance.LeagueData.LeagueMemberDatas[message.RoleInfos[i].RoleId].RoleInfo, message.RoleInfos[i]);
+                    // UpdateRoleChange(LeagueDataManager.Instance.LeagueData.LeagueMemberDatas[message.RoleInfos[i].RoleId].RoleInfo, message.RoleInfos[i]);
+                    OtherRoleInfoData roleInfo = LeagueDataManager.Instance.LeagueData.LeagueMemberDatas[message.RoleInfos[i].RoleId].RoleInfo;
+                    roleInfo = RoleDataManager.GetOtherRoleInfoData(message.RoleInfos[i]);
                 }
             }
             EventAgent.DispatchEvent(ConstMessage.OTHER_ROLE_INFO_CHANGE);
             await ETTask.CompletedTask;
         }
-        private void UpdateRoleChange(OtherRoleInfoData roleInfoData, OtherRoleInfoProto roleInfoProto)
-        {
-            roleInfoData.roleId = roleInfoProto.RoleId;
-            roleInfoData.roleLv = roleInfoProto.RoleLvl;
-            roleInfoData.roleName = roleInfoProto.RoleName;
-            roleInfoData.headId = roleInfoProto.HeadItemId;
-            roleInfoData.headBorderId = roleInfoProto.HeadBorderItemId;
-            roleInfoData.offlineTimeSec = roleInfoProto.OfflineTimeSec;
-        }
+        // private void UpdateRoleChange(OtherRoleInfoData roleInfoData, OtherRoleInfoProto roleInfoProto)
+        // {
+        //     roleInfoData.roleId = roleInfoProto.RoleId;
+        //     roleInfoData.roleLv = roleInfoProto.RoleLvl;
+        //     roleInfoData.roleName = roleInfoProto.RoleName;
+        //     roleInfoData.headId = roleInfoProto.HeadItemId;
+        //     roleInfoData.headBorderId = roleInfoProto.HeadBorderItemId;
+        //     roleInfoData.offlineTimeSec = roleInfoProto.OfflineTimeSec;
+        // }
     }
     public static class RoleInfoSProxy
     {