From f8cbdc1df7874411fbdaece66c623c13affced1b Mon Sep 17 00:00:00 2001 From: ALIENJACK Date: Wed, 11 Dec 2024 21:29:19 +0800 Subject: [PATCH] =?UTF-8?q?=E7=9B=AE=E5=BD=95=E7=BB=93=E6=9E=84=E8=B0=83?= =?UTF-8?q?=E6=95=B4=E6=92=9E=E4=B8=8A=E4=BA=86pull...?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- AxibugEmuOnline.Client/Assets/Script/App.cs | 183 ------- .../Assets/Script/App.cs.meta | 2 - .../Assets/Script/AppMain/App.cs | 9 +- .../Assets/Script/AppMain/Initer.cs | 9 + .../Assets/Script/AppMain/Manager/AppRoom.cs | 1 + .../Assets/Script/Initer.cs | 29 -- .../Assets/Script/Initer.cs.meta | 2 - .../Assets/Script/Manager.meta | 8 - .../Assets/Script/Manager/AppRoom.cs | 457 ------------------ .../Assets/Script/Manager/AppRoom.cs.meta | 2 - 10 files changed, 16 insertions(+), 686 deletions(-) delete mode 100644 AxibugEmuOnline.Client/Assets/Script/App.cs delete mode 100644 AxibugEmuOnline.Client/Assets/Script/App.cs.meta delete mode 100644 AxibugEmuOnline.Client/Assets/Script/Initer.cs delete mode 100644 AxibugEmuOnline.Client/Assets/Script/Initer.cs.meta delete mode 100644 AxibugEmuOnline.Client/Assets/Script/Manager.meta delete mode 100644 AxibugEmuOnline.Client/Assets/Script/Manager/AppRoom.cs delete mode 100644 AxibugEmuOnline.Client/Assets/Script/Manager/AppRoom.cs.meta diff --git a/AxibugEmuOnline.Client/Assets/Script/App.cs b/AxibugEmuOnline.Client/Assets/Script/App.cs deleted file mode 100644 index 8ac773e..0000000 --- a/AxibugEmuOnline.Client/Assets/Script/App.cs +++ /dev/null @@ -1,183 +0,0 @@ -using AxibugEmuOnline.Client.Manager; -using AxibugEmuOnline.Client.Network; -using System.Collections; -using System.IO; -using System.Threading.Tasks; -using UnityEngine; -using UnityEngine.Networking; -using static AxibugEmuOnline.Client.HttpAPI; -using static AxibugEmuOnline.Client.Manager.LogManager; - -namespace AxibugEmuOnline.Client.ClientCore -{ - public static class App - { - public static string TokenStr; - public static string IP; - public static int Port; - public static LogManager log; - public static NetworkHelper network; - public static AppLogin login; - public static AppChat chat; - public static UserDataManager user; - //public static AppNetGame netgame; - public static AppEmu emu; - public static RomLib nesRomLib; - public static HttpAPI httpAPI; - public static CacheManager CacheMgr; - public static AppRoom roomMgr; - public static AppSettings settings; - public static FilterManager filter; - public static AppShare share; - static bool bTest; - static string mTestSrvIP; - #region Mono - public static TickLoop tickLoop; - private static CoroutineRunner coRunner; - #endregion - -#if UNITY_PSP2 - public static string PersistentDataPath => "ux0:data/AxibugEmu"; -#else - public static string PersistentDataPath => Application.persistentDataPath; -#endif - public static void Init(Initer initer,bool isTest = false,string testSrvIP = "") - { - settings = new AppSettings(); - - log = new LogManager(); - LogManager.OnLog += OnNoSugarNetLog; - network = new NetworkHelper(); - login = new AppLogin(); - chat = new AppChat(); - user = new UserDataManager(); - emu = new AppEmu(); - //netgame = new AppNetGame(); - httpAPI = new HttpAPI(); - nesRomLib = new RomLib(EnumPlatform.NES); - CacheMgr = new CacheManager(); - roomMgr = new AppRoom(); - share = new AppShare(); - filter = new FilterManager(initer.m_filterVolume, initer.m_filterPreview, initer.m_xmbBg); - bTest = isTest; - mTestSrvIP = testSrvIP; - var go = new GameObject("[AppAxibugEmuOnline]"); - GameObject.DontDestroyOnLoad(go); - tickLoop = go.AddComponent(); - coRunner = go.AddComponent(); - - if (UnityEngine.Application.platform == RuntimePlatform.PSP2) - { - //PSV 等平台需要手动创建目录 - PersistentDataPathDir(); - } - - var importNode = GameObject.Find("IMPORTENT"); - if (importNode != null) GameObject.DontDestroyOnLoad(importNode); - - StartCoroutine(AppTickFlow()); - RePullNetInfo(); - } - - private static void PersistentDataPathDir() - { - if (!Directory.Exists(PersistentDataPath)) - { - Directory.CreateDirectory(PersistentDataPath); - } - } - - private static IEnumerator AppTickFlow() - { - while (true) - { - Tick(); - yield return null; - } - } - - public static void RePullNetInfo() - { - StartCoroutine(StartNetInit()); - } - - static IEnumerator StartNetInit() - { - if (App.network.isConnected) - yield break; - - int platform = 0; - if (bTest) - { - yield return null; - Connect(mTestSrvIP, 10492); - yield break; - } - - UnityWebRequest request = UnityWebRequest.Get($"{App.httpAPI.WebSiteApi}/CheckStandInfo?platform={platform}&version={Application.version}"); - yield return request.SendWebRequest(); - - if (request.result != UnityWebRequest.Result.Success) - yield break; - - App.log.Debug($"ApiResp => {request.downloadHandler.text}"); - Resp_CheckStandInfo resp = JsonUtility.FromJson(request.downloadHandler.text); - //需要更新 - if (resp.needUpdateClient == 1) - { - //TODO - } - - yield return null; - //Connect("127.0.0.1", 10492); - Connect(resp.serverIp, resp.serverPort); - } - - private static void Tick() - { - nesRomLib.ExecuteFetchRomInfo(); - } - - public static Coroutine StartCoroutine(IEnumerator itor) - { - return coRunner.StartCoroutine(itor); - } - - public static void StopCoroutine(Coroutine cor) - { - coRunner.StopCoroutine(cor); - } - - public static void Connect(string IP, int port) - { - Task task = new Task(() => - { - network.Init(IP, port); - }); - task.Start(); - } - - public static void Close() - { - App.log.Info("停止"); - } - static void OnNoSugarNetLog(int LogLevel, string msg) - { - E_LogType logType = (E_LogType)LogLevel; - switch (logType) - { - case E_LogType.Debug: - case E_LogType.Info: - Debug.Log("[AxiEmu]:" + msg); - break; - case E_LogType.Warning: - Debug.LogWarning("[AxiEmu]:" + msg); - break; - case E_LogType.Error: - Debug.LogError("[AxiEmu]:" + msg); - break; - } - } - - } -} \ No newline at end of file diff --git a/AxibugEmuOnline.Client/Assets/Script/App.cs.meta b/AxibugEmuOnline.Client/Assets/Script/App.cs.meta deleted file mode 100644 index 2c1bfbd..0000000 --- a/AxibugEmuOnline.Client/Assets/Script/App.cs.meta +++ /dev/null @@ -1,2 +0,0 @@ -fileFormatVersion: 2 -guid: d8c50df5df7b4834c84889fbdad9eb9b \ No newline at end of file diff --git a/AxibugEmuOnline.Client/Assets/Script/AppMain/App.cs b/AxibugEmuOnline.Client/Assets/Script/AppMain/App.cs index 5b3d8af..6c0c45d 100644 --- a/AxibugEmuOnline.Client/Assets/Script/AppMain/App.cs +++ b/AxibugEmuOnline.Client/Assets/Script/AppMain/App.cs @@ -29,6 +29,8 @@ namespace AxibugEmuOnline.Client.ClientCore public static AppSettings settings; public static FilterManager filter; public static AppShare share; + static bool bTest; + static string mTestSrvIP; #region Mono public static TickLoop tickLoop; private static CoroutineRunner coRunner; @@ -39,7 +41,7 @@ namespace AxibugEmuOnline.Client.ClientCore #else public static string PersistentDataPath => Application.persistentDataPath; #endif - public static void Init(Initer initer) + public static void Init(Initer initer, bool isTest = false, string testSrvIP = "") { settings = new AppSettings(); @@ -57,6 +59,8 @@ namespace AxibugEmuOnline.Client.ClientCore roomMgr = new AppRoom(); share = new AppShare(); filter = new FilterManager(initer.m_filterVolume, initer.m_filterPreview, initer.m_xmbBg); + bTest = isTest; + mTestSrvIP = testSrvIP; var go = new GameObject("[AppAxibugEmuOnline]"); GameObject.DontDestroyOnLoad(go); tickLoop = go.AddComponent(); @@ -103,11 +107,10 @@ namespace AxibugEmuOnline.Client.ClientCore yield break; int platform = 0; - bool bTest = false; if (bTest) { yield return null; - Connect("192.168.0.47", 10492); + Connect(mTestSrvIP, 10492); yield break; } diff --git a/AxibugEmuOnline.Client/Assets/Script/AppMain/Initer.cs b/AxibugEmuOnline.Client/Assets/Script/AppMain/Initer.cs index 6bf10ea..56c3eaa 100644 --- a/AxibugEmuOnline.Client/Assets/Script/AppMain/Initer.cs +++ b/AxibugEmuOnline.Client/Assets/Script/AppMain/Initer.cs @@ -11,9 +11,18 @@ namespace AxibugEmuOnline.Client public CanvasGroup m_xmbBg; public static string dev_UUID; +#if UNITY_EDITOR + public bool bTest = false; + public string mTestSrvIP = "192.168.0.47"; +#endif + private void Awake() { +#if UNITY_EDITOR + App.Init(this, bTest, mTestSrvIP); +#else App.Init(this); +#endif dev_UUID = SystemInfo.deviceUniqueIdentifier; } } diff --git a/AxibugEmuOnline.Client/Assets/Script/AppMain/Manager/AppRoom.cs b/AxibugEmuOnline.Client/Assets/Script/AppMain/Manager/AppRoom.cs index ddb96a2..2f76372 100644 --- a/AxibugEmuOnline.Client/Assets/Script/AppMain/Manager/AppRoom.cs +++ b/AxibugEmuOnline.Client/Assets/Script/AppMain/Manager/AppRoom.cs @@ -189,6 +189,7 @@ namespace AxibugEmuOnline.Client.Manager { App.log.Info("取得完整房间列表"); Protobuf_Room_List_RESP msg = ProtoBufHelper.DeSerizlize(reqData); + dictRoomListID2Info.Clear(); for (int i = 0; i < msg.RoomMiniInfoList.Count; i++) AddOrUpdateRoomList(msg.RoomMiniInfoList[i]); Eventer.Instance.PostEvent(EEvent.OnRoomListAllUpdate); diff --git a/AxibugEmuOnline.Client/Assets/Script/Initer.cs b/AxibugEmuOnline.Client/Assets/Script/Initer.cs deleted file mode 100644 index 2112d11..0000000 --- a/AxibugEmuOnline.Client/Assets/Script/Initer.cs +++ /dev/null @@ -1,29 +0,0 @@ -using AxibugEmuOnline.Client.ClientCore; -using UnityEngine; -using UnityEngine.Rendering.PostProcessing; - -namespace AxibugEmuOnline.Client -{ - public class Initer : MonoBehaviour - { - public PostProcessVolume m_filterVolume; - public CanvasGroup m_filterPreview; - public CanvasGroup m_xmbBg; - public static string dev_UUID; - -#if UNITY_EDITOR - public bool bTest = false; - public string mTestSrvIP = "192.168.0.47"; -#endif - - private void Awake() - { -#if UNITY_EDITOR - App.Init(this, bTest, mTestSrvIP); -#else - App.Init(this); -#endif - dev_UUID = SystemInfo.deviceUniqueIdentifier; - } - } -} diff --git a/AxibugEmuOnline.Client/Assets/Script/Initer.cs.meta b/AxibugEmuOnline.Client/Assets/Script/Initer.cs.meta deleted file mode 100644 index 2a7ea7a..0000000 --- a/AxibugEmuOnline.Client/Assets/Script/Initer.cs.meta +++ /dev/null @@ -1,2 +0,0 @@ -fileFormatVersion: 2 -guid: df60926444dcb584c80f9917e9ea798f \ No newline at end of file diff --git a/AxibugEmuOnline.Client/Assets/Script/Manager.meta b/AxibugEmuOnline.Client/Assets/Script/Manager.meta deleted file mode 100644 index aa9a3cb..0000000 --- a/AxibugEmuOnline.Client/Assets/Script/Manager.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: cbed35db3530cb4418c467bc76d101bb -folderAsset: yes -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/AxibugEmuOnline.Client/Assets/Script/Manager/AppRoom.cs b/AxibugEmuOnline.Client/Assets/Script/Manager/AppRoom.cs deleted file mode 100644 index 9e8bee9..0000000 --- a/AxibugEmuOnline.Client/Assets/Script/Manager/AppRoom.cs +++ /dev/null @@ -1,457 +0,0 @@ -using AxibugEmuOnline.Client.ClientCore; -using AxibugEmuOnline.Client.Common; -using AxibugEmuOnline.Client.Event; -using AxibugEmuOnline.Client.Network; -using AxibugProtobuf; -using AxiReplay; -using Google.Protobuf; -using System.Collections.Generic; -using System.Linq; - -namespace AxibugEmuOnline.Client.Manager -{ - public class AppRoom - { - public Protobuf_Room_MiniInfo mineRoomMiniInfo { get; private set; } = null; - public bool InRoom => mineRoomMiniInfo != null; - public bool IsHost => mineRoomMiniInfo?.HostPlayerUID == App.user.userdata.UID; - public bool IsScreenProviderUID => mineRoomMiniInfo?.ScreenProviderUID == App.user.userdata.UID; - public RoomGameState RoomState => mineRoomMiniInfo.GameState; - public int MinePlayerIdx => GetMinePlayerIndex(); - public int WaitStep { get; private set; } = -1; - public byte[] RawData { get; private set; } = null; - public NetReplay netReplay { get; private set; } - - Dictionary dictRoomListID2Info = new Dictionary(); - - struct S_PlayerMiniInfo - { - public long UID; - public string NickName; - } - - Protobuf_Room_List _Protobuf_Room_List = new Protobuf_Room_List(); - Protobuf_Room_Get_Screen _Protobuf_Room_Get_Screen = new Protobuf_Room_Get_Screen(); - Protobuf_Room_Create _Protobuf_Room_Create = new Protobuf_Room_Create(); - Protobuf_Room_Join _Protobuf_Room_Join = new Protobuf_Room_Join(); - Protobuf_Room_Leave _Protobuf_Room_Leave = new Protobuf_Room_Leave(); - Protobuf_Room_Player_Ready _Protobuf_Room_Player_Ready = new Protobuf_Room_Player_Ready(); - Protobuf_Room_SinglePlayerInputData _Protobuf_Room_SinglePlayerInputData = new Protobuf_Room_SinglePlayerInputData(); - Protobuf_Screnn_Frame _Protobuf_Screnn_Frame = new Protobuf_Screnn_Frame(); - public AppRoom() - { - NetMsg.Instance.RegNetMsgEvent((int)CommandID.CmdRoomList, RecvGetRoomList); - NetMsg.Instance.RegNetMsgEvent((int)CommandID.CmdRoomListUpdate, RecvGetRoomListUpdate); - NetMsg.Instance.RegNetMsgEvent((int)CommandID.CmdRoomGetScreen, RecvRoomGetScreen); - NetMsg.Instance.RegNetMsgEvent((int)CommandID.CmdRoomCreate, RecvCreateRoom); - NetMsg.Instance.RegNetMsgEvent((int)CommandID.CmdRoomJoin, RecvJoinRoom); - NetMsg.Instance.RegNetMsgEvent((int)CommandID.CmdRoomLeave, RecvLeavnRoom); - NetMsg.Instance.RegNetMsgEvent((int)CommandID.CmdRoomMyRoomStateChanged, RecvRoomMyRoomStateChange); - NetMsg.Instance.RegNetMsgEvent((int)CommandID.CmdRoomWaitStep, RecvRoom_WaitStep); - NetMsg.Instance.RegNetMsgEvent((int)CommandID.CmdRoomHostPlayerUpdateStateRaw, RecvHostPlayer_UpdateStateRaw); - NetMsg.Instance.RegNetMsgEvent((int)CommandID.CmdRoomSynPlayerInput, RecvHostSyn_RoomFrameAllInputData); - NetMsg.Instance.RegNetMsgEvent((int)CommandID.CmdScreen, OnScreen); - } - - #region 房间列表管理 - bool AddOrUpdateRoomList(Protobuf_Room_MiniInfo roomInfo) - { - bool bNew = !dictRoomListID2Info.ContainsKey(roomInfo.RoomID); - dictRoomListID2Info[roomInfo.RoomID] = roomInfo; - return bNew; - } - bool RemoveRoomList(int roomId) - { - if (dictRoomListID2Info.ContainsKey(roomId)) - { - dictRoomListID2Info.Remove(roomId); - return true; - } - return false; - } - /// - /// 获取单个房间MiniInfo - /// - /// - /// - /// - public bool GetRoomListMiniInfo(int roomId, out Protobuf_Room_MiniInfo MiniInfo) - { - if (dictRoomListID2Info.ContainsKey(roomId)) - { - MiniInfo = dictRoomListID2Info[roomId]; - return true; - } - MiniInfo = null; - return false; - } - public List GetRoomList() - { - List result = new List(); - foreach (var item in dictRoomListID2Info) - { - result.Add(item.Value); - } - return result; - } - #endregion - - #region Replay - public void InitRePlay() - { - netReplay = new NetReplay(); - netReplay.ResetData(); - } - public void ReleaseRePlay() - { - netReplay.ResetData(); - } - #endregion - - #region 房间管理 - int GetMinePlayerIndex() - { - if (mineRoomMiniInfo == null) - return -1; - - if (mineRoomMiniInfo.Player1UID == App.user.userdata.UID) - return 0; - if (mineRoomMiniInfo.Player2UID == App.user.userdata.UID) - return 1; - if (mineRoomMiniInfo.Player3UID == App.user.userdata.UID) - return 2; - if (mineRoomMiniInfo.Player4UID == App.user.userdata.UID) - return 3; - return -1; - } - - long[] GetRoom4PlayerUIDs() - { - if (mineRoomMiniInfo == null) - return null; - long[] result = new long[4]; - if (mineRoomMiniInfo.Player1UID > 0) - result[0] = mineRoomMiniInfo.Player1UID; - if (mineRoomMiniInfo.Player2UID > 0) - result[1] = mineRoomMiniInfo.Player2UID; - if (mineRoomMiniInfo.Player3UID > 0) - result[2] = mineRoomMiniInfo.Player3UID; - if (mineRoomMiniInfo.Player4UID > 0) - result[3] = mineRoomMiniInfo.Player4UID; - return result; - } - - S_PlayerMiniInfo[] GetRoom4PlayerMiniInfos() - { - if (mineRoomMiniInfo == null) - return null; - S_PlayerMiniInfo[] result = new S_PlayerMiniInfo[4]; - if (mineRoomMiniInfo.Player1UID > 0) - { - result[0].UID = mineRoomMiniInfo.Player1UID; - result[0].NickName = mineRoomMiniInfo.Player1NickName; - } - if (mineRoomMiniInfo.Player2UID > 0) - { - result[1].UID = mineRoomMiniInfo.Player2UID; - result[1].NickName = mineRoomMiniInfo.Player2NickName; - } - if (mineRoomMiniInfo.Player3UID > 0) - { - result[2].UID = mineRoomMiniInfo.Player3UID; - result[2].NickName = mineRoomMiniInfo.Player3NickName; - } - if (mineRoomMiniInfo.Player4UID > 0) - { - result[3].UID = mineRoomMiniInfo.Player4UID; - result[3].NickName = mineRoomMiniInfo.Player4NickName; - } - return result; - } - - #endregion - - /// - /// 获取所有房间列表 - /// - /// - public void SendGetRoomList() - { - App.log.Info("拉取房间列表"); - App.network.SendToServer((int)CommandID.CmdRoomList, ProtoBufHelper.Serizlize(_Protobuf_Room_List)); - } - - /// - /// 获取所有房间列表 - /// - /// - void RecvGetRoomList(byte[] reqData) - { - App.log.Info("取得完整房间列表"); - Protobuf_Room_List_RESP msg = ProtoBufHelper.DeSerizlize(reqData); - dictRoomListID2Info.Clear(); - for (int i = 0; i < msg.RoomMiniInfoList.Count; i++) - AddOrUpdateRoomList(msg.RoomMiniInfoList[i]); - Eventer.Instance.PostEvent(EEvent.OnRoomListAllUpdate); - } - - /// - /// 获取单个列表更新 - /// - /// - void RecvGetRoomListUpdate(byte[] reqData) - { - App.log.Debug("单个房间状态更新"); - Protobuf_Room_Update_RESP msg = ProtoBufHelper.DeSerizlize(reqData); - if (msg.UpdateType == 0) - { - if (AddOrUpdateRoomList(msg.RoomMiniInfo)) - { - Eventer.Instance.PostEvent(EEvent.OnRoomListSingleAdd, msg.RoomMiniInfo.RoomID); - } - else - { - Eventer.Instance.PostEvent(EEvent.OnRoomListSingleUpdate, msg.RoomMiniInfo.RoomID); - } - } - else - { - RemoveRoomList(msg.RoomMiniInfo.RoomID); - Eventer.Instance.PostEvent(EEvent.OnRoomListSingleClose, msg.RoomMiniInfo.RoomID); - } - } - - /// - /// 获取房间画面快照 - /// - /// - public void SendGetRoomScreen(int RoomID) - { - _Protobuf_Room_Get_Screen.RoomID = RoomID; - App.log.Info($"获取房间画面快照"); - App.network.SendToServer((int)CommandID.CmdRoomGetScreen, ProtoBufHelper.Serizlize(_Protobuf_Room_Get_Screen)); - } - /// - /// 获取单个房间画面 - /// - /// - void RecvRoomGetScreen(byte[] reqData) - { - App.log.Debug("单个房间状态更新"); - Protobuf_Room_Get_Screen_RESP msg = ProtoBufHelper.DeSerizlize(reqData); - //解压 - byte[] data = Helper.DecompressByteArray(msg.RawBitmap.ToArray()); - Eventer.Instance.PostEvent(EEvent.OnRoomGetRoomScreen, msg.RoomID, data); - } - - /// - /// 创建房间 - /// - /// - /// - /// - public void SendCreateRoom(int GameRomID, int JoinPlayerIdx, string GameRomHash = null) - { - _Protobuf_Room_Create.JoinPlayerIdx = JoinPlayerIdx; - _Protobuf_Room_Create.GameRomID = GameRomID; - _Protobuf_Room_Create.GameRomHash = GameRomHash; - App.log.Info($"创建房间"); - App.network.SendToServer((int)CommandID.CmdRoomCreate, ProtoBufHelper.Serizlize(_Protobuf_Room_Create)); - } - - /// - /// 创建房间成功 - /// - /// - void RecvCreateRoom(byte[] reqData) - { - App.log.Debug("创建房间成功"); - Protobuf_Room_Create_RESP msg = ProtoBufHelper.DeSerizlize(reqData); - mineRoomMiniInfo = msg.RoomMiniInfo; - InitRePlay(); - } - - /// - /// 创建房间 - /// - /// - /// - /// - public void SendJoinRoom(int RoomID, int JoinPlayerIdx) - { - _Protobuf_Room_Join.RoomID = RoomID; - _Protobuf_Room_Join.PlayerNum = JoinPlayerIdx; - App.log.Info($"创建房间"); - App.network.SendToServer((int)CommandID.CmdRoomJoin, ProtoBufHelper.Serizlize(_Protobuf_Room_Join)); - } - - /// - /// 加入房间成功 - /// - /// - void RecvJoinRoom(byte[] reqData) - { - App.log.Debug("加入房间成功"); - Protobuf_Room_Join_RESP msg = ProtoBufHelper.DeSerizlize(reqData); - mineRoomMiniInfo = msg.RoomMiniInfo; - InitRePlay(); - Eventer.Instance.PostEvent(EEvent.OnMineJoinRoom); - } - - /// - /// 离开房间 - /// - /// - public void SendLeavnRoom() - { - if (!InRoom) - return; - _Protobuf_Room_Leave.RoomID = mineRoomMiniInfo.RoomID; - App.log.Info($"LeavnRoom"); - App.network.SendToServer((int)CommandID.CmdRoomLeave, ProtoBufHelper.Serizlize(_Protobuf_Room_Leave)); - } - - /// - /// 离开房间成功 - /// - /// - void RecvLeavnRoom(byte[] reqData) - { - App.log.Debug("离开房间成功"); - Protobuf_Room_Leave_RESP msg = ProtoBufHelper.DeSerizlize(reqData); - ReleaseRePlay(); - mineRoomMiniInfo = null; - Eventer.Instance.PostEvent(EEvent.OnMineLeavnRoom); - } - - void RecvRoomMyRoomStateChange(byte[] reqData) - { - Protobuf_Room_MyRoom_State_Change msg = ProtoBufHelper.DeSerizlize(reqData); - long[] oldRoomPlayer = GetRoom4PlayerUIDs(); - mineRoomMiniInfo = msg.RoomMiniInfo; - long[] newRoomPlayer = GetRoom4PlayerUIDs(); - for (int i = 0; i < 4; i++) - { - long OldPlayer = oldRoomPlayer[i]; - long NewPlayer = newRoomPlayer[i]; - if (OldPlayer == NewPlayer) - continue; - //位置之前有人,但是离开了 - if (OldPlayer > 0) - { - Eventer.Instance.PostEvent(EEvent.OnOtherPlayerLeavnRoom, i, OldPlayer); - if (NewPlayer > 0)//而且害换了一个玩家 - Eventer.Instance.PostEvent(EEvent.OnOtherPlayerJoinRoom, i, NewPlayer); - } - else //之前没人 - Eventer.Instance.PostEvent(EEvent.OnOtherPlayerJoinRoom, i, NewPlayer); - } - } - - /// - /// 上报即时存档 - /// - /// - public void SendHostRaw(byte[] RawData) - { - //压缩 - byte[] compressRawData = Helper.CompressByteArray(RawData); - Protobuf_Room_HostPlayer_UpdateStateRaw msg = new Protobuf_Room_HostPlayer_UpdateStateRaw() - { - LoadStateRaw = Google.Protobuf.ByteString.CopyFrom(compressRawData) - }; - App.log.Info($"上报即时存档数据 原数据大小:{RawData.Length},压缩后;{compressRawData.Length}"); - App.network.SendToServer((int)CommandID.CmdRoomHostPlayerUpdateStateRaw, ProtoBufHelper.Serizlize(msg)); - } - - void RecvRoom_WaitStep(byte[] reqData) - { - Protobuf_Room_WaitStep_RESP msg = ProtoBufHelper.DeSerizlize(reqData); - if (WaitStep != msg.WaitStep) - { - WaitStep = msg.WaitStep; - if (WaitStep == 1) - { - byte[] decompressRawData = Helper.DecompressByteArray(msg.LoadStateRaw.ToByteArray()); - App.log.Info($"收到即时存档数据 解压后;{decompressRawData.Length}"); - RawData = decompressRawData; - ReleaseRePlay(); - } - Eventer.Instance.PostEvent(EEvent.OnRoomWaitStepChange, WaitStep); - } - } - - void RecvHostPlayer_UpdateStateRaw(byte[] reqData) - { - Protobuf_Room_HostPlayer_UpdateStateRaw_RESP msg = ProtoBufHelper.DeSerizlize(reqData); - App.log.Info($"鸡翅孙当上报成功"); - } - - /// - /// 即时存档加载完毕 - /// - public void SendRoomPlayerReady() - { - App.log.Debug("上报准备完毕"); - App.network.SendToServer((int)CommandID.CmdRoomPlayerReady, ProtoBufHelper.Serizlize(_Protobuf_Room_Player_Ready)); - } - - /// - /// 同步上行 - /// - public void SendRoomSingelPlayerInput(uint FrameID, uint InputData) - { - _Protobuf_Room_SinglePlayerInputData.FrameID = FrameID; - _Protobuf_Room_SinglePlayerInputData.InputData = InputData; - App.network.SendToServer((int)CommandID.CmdRoomSingelPlayerInput, ProtoBufHelper.Serizlize(_Protobuf_Room_SinglePlayerInputData)); - } - - ulong TestAllData = 0; - void RecvHostSyn_RoomFrameAllInputData(byte[] reqData) - { - Protobuf_Room_Syn_RoomFrameAllInputData msg = ProtoBufHelper.DeSerizlize(reqData); - if (TestAllData != msg.InputData) - { - TestAllData = msg.InputData; - App.log.Debug($"ServerFrameID->{msg.ServerFrameID} FrameID->{msg.FrameID} ClientFrame->{netReplay.mCurrClientFrameIdx} InputData->{msg.InputData}"); - } - netReplay.InData(new ReplayStep() { FrameStartID = (int)msg.FrameID, InPut = msg.InputData }, (int)msg.ServerFrameID); - } - - public void SendScreen(byte[] RenderBuffer) - { - //压缩 - byte[] comData = Helper.CompressByteArray(RenderBuffer); - _Protobuf_Screnn_Frame.FrameID = 0; - _Protobuf_Screnn_Frame.RawBitmap = ByteString.CopyFrom(comData); - App.network.SendToServer((int)CommandID.CmdScreen, ProtoBufHelper.Serizlize(_Protobuf_Screnn_Frame)); - } - - public void OnScreen(byte[] reqData) - { - Protobuf_Screnn_Frame msg = ProtoBufHelper.DeSerizlize(reqData); - //解压 - byte[] data = Helper.DecompressByteArray(msg.RawBitmap.ToArray()); - } - } - - public static class RoomEX - { - /// - /// 获取房间空闲席位下标 (返回True表示由余位) - /// - /// - /// - /// - public static bool GetFreeSlot(this Protobuf_Room_MiniInfo roomMiniInfo, out int[] freeSlots) - { - List temp = new List(); - if (roomMiniInfo.Player1UID <= 0) temp.Add(0); - if (roomMiniInfo.Player2UID <= 0) temp.Add(1); - if (roomMiniInfo.Player3UID <= 0) temp.Add(2); - if (roomMiniInfo.Player4UID <= 0) temp.Add(3); - freeSlots = temp.ToArray(); - return freeSlots.Length > 0; - } - } -} \ No newline at end of file diff --git a/AxibugEmuOnline.Client/Assets/Script/Manager/AppRoom.cs.meta b/AxibugEmuOnline.Client/Assets/Script/Manager/AppRoom.cs.meta deleted file mode 100644 index ea66b58..0000000 --- a/AxibugEmuOnline.Client/Assets/Script/Manager/AppRoom.cs.meta +++ /dev/null @@ -1,2 +0,0 @@ -fileFormatVersion: 2 -guid: eb89085725d97c949b82f372fe8173ef \ No newline at end of file