فهرست منبع

debug mode + retry on full room

Llandy Riveron Del Risco 4 ماه پیش
والد
کامیت
c46ca770d9

+ 117 - 0
Assets/Scripts/Script/ContinuousController.cs

@@ -1225,6 +1225,10 @@ public class ContinuousController : MonoBehaviour
             Application.Quit();
         }
 #endif
+        if (Input.GetKeyDown(KeyCode.F1))
+        {
+            _showPhotonDebug = !_showPhotonDebug;
+        }
     }
     int _frameCount = 0;
     int _updateFrame = 40;
@@ -1298,7 +1302,120 @@ public class ContinuousController : MonoBehaviour
         Debug.Log($"random number sequence initialization,InitState:{random}");
     }
 
+    #region Photon Debug HUD
+    bool _showPhotonDebug = false;
+    Photon.Realtime.IConnectionCallbacks _connectionCallbacks;
+    Photon.Realtime.IMatchmakingCallbacks _matchmakingCallbacks;
+    Photon.Realtime.ILobbyCallbacks _lobbyCallbacks;
+
+    void OnEnable()
+    {
+        var listener = new PhotonDebugListener();
+        _connectionCallbacks = listener;
+        _matchmakingCallbacks = listener;
+        _lobbyCallbacks = listener;
+        PhotonNetwork.AddCallbackTarget(listener);
+    }
+
+    void OnDisable()
+    {
+        if (_connectionCallbacks != null)
+            PhotonNetwork.RemoveCallbackTarget(_connectionCallbacks);
+    }
+
+    class PhotonDebugListener :
+        Photon.Realtime.IConnectionCallbacks,
+        Photon.Realtime.IMatchmakingCallbacks,
+        Photon.Realtime.ILobbyCallbacks
+    {
+        public void OnDisconnected(Photon.Realtime.DisconnectCause cause)
+        {
+            Debug.LogWarning($"[Photon Debug] Disconnected: {cause}");
+        }
+
+        public void OnConnected() { }
+        public void OnConnectedToMaster()
+        {
+            Debug.Log("[Photon Debug] Connected to Master");
+        }
+        public void OnRegionListReceived(Photon.Realtime.RegionHandler handler) { }
+        public void OnCustomAuthenticationResponse(Dictionary<string, object> data) { }
+        public void OnCustomAuthenticationFailed(string debugMessage)
+        {
+            Debug.LogError($"[Photon Debug] Auth failed: {debugMessage}");
+        }
+
+        public void OnJoinedLobby()
+        {
+            Debug.Log("[Photon Debug] Joined Lobby");
+        }
+        public void OnLeftLobby()
+        {
+            Debug.Log("[Photon Debug] Left Lobby");
+        }
+        public void OnLobbyStatisticsUpdate(List<Photon.Realtime.TypedLobbyInfo> lobbyStatistics) { }
+        public void OnRoomListUpdate(List<Photon.Realtime.RoomInfo> roomList) { }
+
+        public void OnJoinedRoom()
+        {
+            Debug.Log($"[Photon Debug] Joined Room: {PhotonNetwork.CurrentRoom?.Name}");
+        }
+        public void OnJoinRoomFailed(short returnCode, string message)
+        {
+            Debug.LogError($"[Photon Debug] Join Room FAILED: [{returnCode}] {message}");
+        }
+        public void OnJoinRandomFailed(short returnCode, string message)
+        {
+            Debug.LogError($"[Photon Debug] Join Random FAILED: [{returnCode}] {message}");
+        }
+        public void OnCreateRoomFailed(short returnCode, string message)
+        {
+            Debug.LogError($"[Photon Debug] Create Room FAILED: [{returnCode}] {message}");
+        }
+        public void OnCreatedRoom()
+        {
+            Debug.Log("[Photon Debug] Created Room");
+        }
+        public void OnLeftRoom()
+        {
+            Debug.Log("[Photon Debug] Left Room");
+        }
+        public void OnFriendListUpdate(List<Photon.Realtime.FriendInfo> friendList) { }
+    }
+
+    void OnGUI()
+    {
+        if (!_showPhotonDebug) return;
+
+        string status;
 
+        if (!PhotonNetwork.IsConnected)
+        {
+            status = "<color=#FF4444>[Photon] Disconnected</color>";
+        }
+        else if (PhotonNetwork.InRoom)
+        {
+            string roomName = PhotonNetwork.CurrentRoom != null ? PhotonNetwork.CurrentRoom.Name : "?";
+            int players = PhotonNetwork.CurrentRoom != null ? PhotonNetwork.CurrentRoom.PlayerCount : 0;
+            status = $"<color=#44FF44>[Photon] Connected | Region: {PhotonNetwork.CloudRegion} | Room: {roomName} ({players} players)</color>";
+        }
+        else if (PhotonNetwork.InLobby)
+        {
+            status = $"<color=#44FF44>[Photon] Connected | Region: {PhotonNetwork.CloudRegion} | In Lobby</color>";
+        }
+        else
+        {
+            status = $"<color=#FFAA00>[Photon] Connected | Region: {PhotonNetwork.CloudRegion} | Not in Lobby/Room</color>";
+        }
+
+        GUIStyle style = new GUIStyle(GUI.skin.label);
+        style.fontSize = 16;
+        style.richText = true;
+        style.fontStyle = FontStyle.Bold;
+
+        GUI.Label(new Rect(10, 10, 800, 30), status, style);
+    }
+    #endregion
 }
 
 #region Manage random numbers

+ 1 - 1
Assets/Scripts/Script/EnterRoom.cs

@@ -68,7 +68,7 @@ public class EnterRoom : MonoBehaviourPunCallbacks
     {
         if (CanClickEnterRoomButton() && canClick)
         {
-            ContinuousController.instance.StartCoroutine(JoinRoomCoroutine());
+            PhotonNetwork.JoinRoom(RoomIDInputField.text);
         }
     }
 

+ 15 - 0
Assets/Scripts/Script/LobbyManager_RandomMatch.cs

@@ -306,6 +306,21 @@ public class LobbyManager_RandomMatch : MonoBehaviourPunCallbacks
     }
     #endregion
 
+    #region Callback when joining a room fails
+    public override void OnJoinRoomFailed(short returnCode, string message)
+    {
+        if (this.gameObject.activeSelf && !DoneCompleteMatching)
+        {
+            Debug.Log($"[RandomMatch] Join room failed: [{returnCode}] {message}, retrying...");
+            RandomRoomName = null;
+            startJoin = false;
+            m = false;
+            n = false;
+            StartRandomMatch();
+        }
+    }
+    #endregion
+
     #region Process to create a room
     public IEnumerator CreateRoomCoroutine(bool isRandomMatch)
     {

+ 0 - 5
Assets/Scripts/Script/RoomManager.cs

@@ -108,11 +108,6 @@ public class RoomManager : MonoBehaviourPunCallbacks
     {
         CreateRoomFailed = false;
 
-        if (!PhotonNetwork.IsConnected)
-        {
-            yield return ContinuousController.instance.StartCoroutine(PhotonUtility.ConnectToMasterServerCoroutine());
-        }
-
         yield return new WaitWhile(() => !PhotonNetwork.IsConnectedAndReady);
 
         if (!PhotonNetwork.InLobby)

+ 8 - 6
Assets/Scripts/Script/SelectBattleMode.cs

@@ -61,17 +61,19 @@ public class SelectBattleMode : MonoBehaviour
 
         Opening.instance.battle.selectBattleDeck.Off();
 
+        yield return ContinuousController.instance.StartCoroutine(loadingObject.StartLoading("Connecting"));
+
         connecting = true;
 
-        if (PhotonNetwork.IsConnected)
-        {
-            yield return ContinuousController.instance.StartCoroutine(loadingObject.StartLoading("Disconnecting"));
-            yield return ContinuousController.instance.StartCoroutine(PhotonUtility.DisconnectCoroutine());
-            yield return ContinuousController.instance.StartCoroutine(loadingObject.EndLoading());
-        }
+        yield return ContinuousController.instance.StartCoroutine(PhotonUtility.ConnectToLobbyCoroutine());
+
+        // ContinuousController.instance.BattleDeckData = null;
+        yield return ContinuousController.instance.StartCoroutine(PhotonUtility.DeleteBattleDeckData());
 
         connecting = false;
 
+        yield return ContinuousController.instance.StartCoroutine(loadingObject.EndLoading());
+
         this.gameObject.SetActive(true);
 
         StartSelectBattleMode();