using Assets.MyGame.Scripts.Net.WebResponses; using Newtonsoft.Json; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using UnityEngine; using UnityEngine.SceneManagement; namespace Assets.MyGame.Scripts.Net { public class WebSocketReponseList { /// /// 获取房间列表 room /// /// public static void GetRoomListChineseChessResult(string msg) { var var1 = UIManager.Instance.Show(UIPanel.MainGamePanelZGXQ, msg); } public static void GetGoldConfigSuccessChineseChessResult(string msg) { UIManager.Instance.Get(UIPanel.MainGamePanelZGXQ).subUIManager.ShowAsync(UIPanel.ZGXQGameExplain); } /// /// 获取房间列表 room /// /// public static void GetRoomListResult(string msg) { var var1 = UIManager.Instance.Get(UIPanel.HomeMainPanel); var selectRoomPanel = var1.subUIManager.Get(UIPanel.SelectRoomLeavePenel); if (selectRoomPanel != null && selectRoomPanel.isMySelectRoom) selectRoomPanel.panel_UIHome_BY_MySelectRoomPenel.Show(msg); else { var v = JsonConvert.DeserializeObject>>(msg).arguments[0]; foreach (var item in v) { if (item.currentOnlinePlayerCount < item.maxPlayerCount) { WebSocketSendList.GetRoomInfo(item.roomId); break; //if (item) //{ //UIHome_BY_SelectRoomLevelPanel.StartGame(item); //} } } } } /// /// 加入房间 room /// /// public static void RoomJoinNotice(string msg) { string sceneName = ""; UIPanel uIPanel = UIPanel.None; switch (GameManager.Instance.gameData.currGameType) { case GameType.JQQD: break; case GameType.defaultPanel: break; case GameType.FLZY: sceneName = "FLZY"; uIPanel = UIPanel.MainGamePanelFLZY; break; case GameType.YYSC: sceneName = "YYSC"; uIPanel = UIPanel.MainGamePanelYYSC; break; case GameType.ZGXQ: break; case GameType.XJMH: sceneName = "XJMH"; uIPanel = UIPanel.MainGamePanelXJMH; break; case GameType.HHWK: sceneName = "HHWK"; uIPanel = UIPanel.MainGamePanelHHWK; break; default: break; } if (UIManager.Instance.Get(uIPanel)==null) { UIManager.Instance.ShowAsync(uIPanel, UIPanel.HomeMainPanel, msg); // 卸载所有已加载的游戏地图场景 string[] gameScenes = { "FLZY", "YYSC", "XJMH", "HHWK" }; foreach (var sn in gameScenes) { var s = SceneManager.GetSceneByName(sn); if (s.IsValid() && s.isLoaded) SceneManager.UnloadSceneAsync(sn); } SceneManager.LoadSceneAsync(sceneName, LoadSceneMode.Additive); UIManager.Instance.Close(UIPanel.HomeMainPanel); WebSocketManager.Instance.isGame = true; } } /// /// 房间列表 room /// /// public static void RoomInfo(string msg) { WebSocketManager.Instance.isGame = false; var roomData = JsonConvert.DeserializeObject>(msg).arguments[0]; if (roomData != null) { GameManager.Instance.gameData.currRoomData = roomData; } else { Debug.LogError("roomdata是空:" + msg); } } public static void RoomKillNotice(string msg) { CreateFishManager.Instance.Ws_DieFish(msg); } public static void RoomFireNotice(string msg) { FireCannonSendData fireCannonSendData = JsonConvert.DeserializeObject>(msg).arguments[0]; var syncGameData = fireCannonSendData.extra; EventCenter.Instance.EventTrigger(ConstEventString.SyncGameData_FireBullet, fireCannonSendData); } public static void SyncPlayerGold(string msg) { var gold = JsonConvert.DeserializeObject>(msg).arguments[0]; switch (GameManager.Instance.gameData.currGameType) { case GameType.JQQD: break; case GameType.defaultPanel: UIManager.Instance.Get(UIPanel.MainGamePanelDefault).currSitData.goldNum = gold; break; case GameType.FLZY: UIManager.Instance.Get(UIPanel.MainGamePanelFLZY).currSitData.goldNum = gold; break; case GameType.YYSC: UIManager.Instance.Get(UIPanel.MainGamePanelYYSC).currSitData.goldNum = gold; break; case GameType.ZGXQ: break; case GameType.XJMH: UIManager.Instance.Get(UIPanel.MainGamePanelXJMH).currSitData.goldNum = gold; break; case GameType.HHWK: UIManager.Instance.Get(UIPanel.MainGamePanelHHWK).currSitData.goldNum = gold; break; default: break; } } public static void GetRoomInfoResult(string msg) { //GameManager.Instance.StartGame();RoomChangeResponse var roomData = JsonConvert.DeserializeObject>(msg).arguments[0]; UIHome_BY_SelectRoomLevelPanel.StartGame(roomData); } public static void SyncGameDataResult(string msg) { var syncGameData = JsonConvert.DeserializeObject>(msg).arguments[0]; switch (syncGameData.frameType) { case FrameDataType.none: break; case FrameDataType.rotateTurrect: EventCenter.Instance.EventTrigger(ConstEventString.SyncGameData_Rotate, syncGameData); break; case FrameDataType.fireBullet: //EventCenter.Instance.EventTrigger(ConstEventString.SyncGameData_FireBullet, syncGameData); break; case FrameDataType.createFish: EventCenter.Instance.EventTrigger(ConstEventString.SyncGameData_CreateFish, syncGameData); break; case FrameDataType.changeAutoTarget: EventCenter.Instance.EventTrigger(ConstEventString.SyncGameData_ChangeTargetMonster, syncGameData); break; case FrameDataType.randomDieFish: EventCenter.Instance.EventTrigger(ConstEventString.SyncGameData_RendromDieFish, syncGameData); break; case FrameDataType.freezeFish: EventCenter.Instance.EventTrigger(ConstEventString.SyncGameData_FreezeFish, syncGameData); break; case FrameDataType.changeTurretState: EventCenter.Instance.EventTrigger(ConstEventString.SyncGameData_TurretState, syncGameData); break; case FrameDataType.changeTurret: EventCenter.Instance.EventTrigger(ConstEventString.SyncGameData_ChangeTurret, syncGameData); break; case FrameDataType.changeCannonMultiple: EventCenter.Instance.EventTrigger(ConstEventString.SyncGameData_ChangeCannonMultiple, syncGameData); break; default: break; } } public static void LeaveRoomResult(string msg) { //WebSocketManager.Instance.isGame = false; //GameManager.Instance.StartGame();RoomChangeResponse var userid = JsonConvert.DeserializeObject>(msg).arguments[0]; switch (GameManager.Instance.gameData.currGameType) { case GameType.JQQD: break; case GameType.defaultPanel: break; case GameType.FLZY: { var panel = UIManager.Instance.Get(UIPanel.MainGamePanelFLZY); if (panel.currSitData.user == userid) { UIManager.Instance.ShowAsync(UIPanel.HomeMainPanel, UIPanel.MainGamePanelFLZY); break; } foreach (var item in panel.list_Sits) { if (item.user == userid) { item.gameObject.SetActive(false); } } } break; case GameType.YYSC: { var panel = UIManager.Instance.Get(UIPanel.MainGamePanelYYSC); if (panel.currSitData.user == userid) { UIManager.Instance.ShowAsync(UIPanel.HomeMainPanel, UIPanel.MainGamePanelYYSC); break; } foreach (var item in panel.list_Sits) { if (item.user == userid) { item.gameObject.SetActive(false); } } } break; case GameType.ZGXQ: break; case GameType.XJMH: { var panel = UIManager.Instance.Get(UIPanel.MainGamePanelXJMH); if (panel.currSitData.user == userid) { UIManager.Instance.ShowAsync(UIPanel.HomeMainPanel, UIPanel.MainGamePanelXJMH); break; } foreach (var item in panel.list_Sits) { Debug.Log(item.user + "---" + userid); if (item.user == userid) { Debug.Log("推出星际迷航"); item.gameObject.SetActive(false); } } } break; case GameType.HHWK: { var panel = UIManager.Instance.Get(UIPanel.MainGamePanelHHWK); if (panel.currSitData.user == userid) { UIManager.Instance.ShowAsync(UIPanel.HomeMainPanel, UIPanel.MainGamePanelHHWK); break; } foreach (var item in panel.list_Sits) { if (item.user == userid) { item.gameObject.SetActive(false); } } } break; default: break; } } // ---------------- LoginHub ---------------- /// /// LoginHub Broadcast — 大厅公告广播 /// public static void LoginBroadcast(string msg) { var data = JsonConvert.DeserializeObject>(msg).arguments[0]; UIManager.Instance.ShowBoardGongGao(data.message); } /// /// LoginHub AssetUpdated — 资产变动通知 /// public static void AssetUpdated(string msg) { var data = JsonConvert.DeserializeObject>(msg).arguments[0]; // 触发用户数据刷新 var userId = GameManager.Instance?.user?.id; if (!string.IsNullOrEmpty(userId)) APIRequestList.GetUser(userId, a => GameManager.Instance.UpdataUserData(a)); } /// /// LoginHub BackpackUpdated — 背包变动通知 /// public static void BackpackUpdated(string msg) { var data = JsonConvert.DeserializeObject>(msg).arguments[0]; // 刷新用户数据(道具列表在 GetUser 返回中) var userId = GameManager.Instance?.user?.id; if (!string.IsNullOrEmpty(userId)) APIRequestList.GetUser(userId, a => GameManager.Instance.UpdataUserData(a)); } /// /// LoginHub NewEmail — 新邮件通知 /// public static void NewEmail(string msg) { var data = JsonConvert.DeserializeObject>(msg).arguments[0]; UIManager.Instance.ShowBoardError($"收到新邮件:{data.title}"); } // ---------------- Customer ---------------- /// /// 发起会话回调(用户端) /// isOk=false 时弹错误提示;isOk=true 时自动加入会话房间 /// public static void Customer_OnConversationStarted(CustomerConversationStartedResult result) { if (!result.isOk) { UIManager.Instance.ShowBoardError(result.msg); return; } // 加入会话房间,之后才能收发消息 //WebSocketSendList.Customer_JoinConversation(result.conversation.id); // TODO: 通知客服 UI 显示会话(替换为你的实际 Panel 调用) UIManager.Instance.Get(UIPanel.HomeMainPanel).subUIManager.Get(UIPanel.ServicePanel)?.OnConversationStarted(result); } /// /// 消息接收回调(用户端 & 客服端) /// public static void Customer_OnMessageReceived(CustomerMessageReceived msg) { // TODO: 通知客服 UI 追加消息(替换为你的实际 Panel 调用) UIManager.Instance.Get(UIPanel.HomeMainPanel).subUIManager.Get(UIPanel.ServicePanel)?.OnMessageReceived(msg); Debug.Log($"[Customer] 收到消息 from {msg.senderName}({msg.senderType}): {msg.content}"); } /// /// 新会话通知(客服端) /// public static void Customer_OnNewConversation(CustomerNewConversationNotice notice) { // 客服端自动加入会话房间 WebSocketSendList.Customer_JoinConversation(notice.conversationId); // TODO: 通知客服端 UI 显示新会话(替换为你的实际 Panel 调用) // UIManager.Instance.Get(UIPanel.CustomerServicePanel)?.OnNewConversation(notice); Debug.Log($"[Customer] 新会话来了,userId={notice.userId},userName={notice.userName}"); } /// /// LoginHub Broadcast 数据 /// [Serializable] public class LoginBroadcastData { public string userName; public string avatarUrl; public int level; public int vipLevel; public string message; public long time; } /// /// LoginHub AssetUpdated 数据 /// [Serializable] public class LoginAssetData { public int currencyType; public int changeType; public long amount; public long newGold; public int newDiamond; public string source; public string remark; } /// /// LoginHub BackpackUpdated 数据 /// [Serializable] public class LoginBackpackData { public string action; public string propNumber; public int count; public List props; } /// /// LoginHub NewEmail 数据 /// [Serializable] public class LoginNewEmailData { public string title; public string emailId; } } } // end namespace