diff --git a/Assets/Talo Game Services/Talo/Runtime/APIs/BaseAPI.cs b/Assets/Talo Game Services/Talo/Runtime/APIs/BaseAPI.cs index e86a3dd..a350d0a 100644 --- a/Assets/Talo Game Services/Talo/Runtime/APIs/BaseAPI.cs +++ b/Assets/Talo Game Services/Talo/Runtime/APIs/BaseAPI.cs @@ -67,6 +67,11 @@ protected async Task Call( var allHeaders = continuity ? headers : BuildHeaders(); + if (Talo.Settings.logRequests && Debug.isDebugBuild) + { + Debug.Log($"<-- {method} {uri}{(continuity ? " [CONTINUITY]" : "")} {content}"); + } + if (Talo.Settings.offlineMode) { return HandleOfflineRequest(uri, method, content, allHeaders); @@ -91,6 +96,11 @@ protected async Task Call( await Task.Yield(); } + if (Talo.Settings.logResponses && Debug.isDebugBuild) + { + Debug.Log($"--> {method} {uri} [{www.responseCode}] {www.downloadHandler.text}"); + } + if (www.result == UnityWebRequest.Result.Success) { return www.downloadHandler.text; diff --git a/Assets/Talo Game Services/Talo/Runtime/SocketResponses/SocketResponse.cs b/Assets/Talo Game Services/Talo/Runtime/SocketResponses/SocketResponse.cs index 66f44c3..f74a419 100644 --- a/Assets/Talo Game Services/Talo/Runtime/SocketResponses/SocketResponse.cs +++ b/Assets/Talo Game Services/Talo/Runtime/SocketResponses/SocketResponse.cs @@ -1,8 +1,9 @@ +using System; using UnityEngine; namespace TaloGameServices { - [System.Serializable] + [Serializable] public class SocketResponse { private class SocketMessage @@ -13,20 +14,28 @@ private class SocketMessage public string message; - public SocketResponse(string message) + public SocketResponse(string message) { this.message = message; } public string GetResponseType() { - var message = JsonUtility.FromJson>(this.message); - return message.res; + var json = JsonUtility.FromJson>(message); + return json.res; } public T GetData() { return JsonUtility.FromJson>(message).data; } + + public object GetJsonData() + { + var json = message.Substring(1, message.Length - 2) // remove the curly braces + .Replace("\"res\":\"" + GetResponseType() + "\",", "") // remove the response type + .Replace("\"data\":", ""); // remove the data key, only keep the value + return json; + } } } diff --git a/Assets/Talo Game Services/Talo/Runtime/TaloSettings.cs b/Assets/Talo Game Services/Talo/Runtime/TaloSettings.cs index dcd3bde..03702b2 100644 --- a/Assets/Talo Game Services/Talo/Runtime/TaloSettings.cs +++ b/Assets/Talo Game Services/Talo/Runtime/TaloSettings.cs @@ -16,5 +16,9 @@ public class TaloSettings : ScriptableObject public bool offlineMode = false; [Tooltip("Whether to automatically connect to the Talo socket when the game starts")] public bool autoConnectSocket = true; + [Tooltip("Enable request logs in Debug builds")] + public bool logRequests = true; + [Tooltip("Enable response logs in Debug builds")] + public bool logResponses = true; } } diff --git a/Assets/Talo Game Services/Talo/Runtime/TaloSocket.cs b/Assets/Talo Game Services/Talo/Runtime/TaloSocket.cs index a705b65..b784ede 100644 --- a/Assets/Talo Game Services/Talo/Runtime/TaloSocket.cs +++ b/Assets/Talo Game Services/Talo/Runtime/TaloSocket.cs @@ -43,6 +43,11 @@ private void HandleMessage(WebSocketConnection connection, WebSocketMessage wsm) var res = response.GetResponseType(); OnMessageReceived?.Invoke(response); + if (Talo.Settings.logResponses && Debug.isDebugBuild) + { + Debug.Log($"--> WSS {res} {response.GetJsonData()}"); + } + switch (res) { case "v1.connected": @@ -83,7 +88,13 @@ public void CloseConnection() public void Send(SocketRequest request) { - socket.AddOutgoingMessage(JsonUtility.ToJson(request)); + var data = JsonUtility.ToJson(request); + + if (Talo.Settings.logRequests && Debug.isDebugBuild) + { + Debug.Log($"<-- WSS {request.req} {data}"); + } + socket.AddOutgoingMessage(data); } private void IdentifyPlayer()