diff --git a/Assets/ColyseusClient.cs b/Assets/ColyseusClient.cs index 047a95ea..58cb940f 100644 --- a/Assets/ColyseusClient.cs +++ b/Assets/ColyseusClient.cs @@ -12,7 +12,7 @@ public class ColyseusClient : MonoBehaviour { // UI Buttons are attached through Unity Inspector - public Button m_ConnectButton, m_JoinButton, m_ReJoinButton, m_SendMessageButton, m_LeaveButton; + public Button m_ConnectButton, m_JoinButton, m_ReJoinButton, m_SendMessageButton, m_LeaveButton, m_GetAvailableRoomsButton; public InputField m_EndpointField; public Text m_IdText, m_SessionIdText; @@ -32,6 +32,7 @@ public class ColyseusClient : MonoBehaviour { m_ReJoinButton.onClick.AddListener(ReJoinRoom); m_SendMessageButton.onClick.AddListener(SendMessage); m_LeaveButton.onClick.AddListener(LeaveRoom); + m_GetAvailableRoomsButton.onClick.AddListener(GetAvailableRooms); /* Always call Recv if Colyseus connection is open */ while (true) @@ -139,6 +140,21 @@ void LeaveRoom() entities.Clear(); } + void GetAvailableRooms() + { + client.GetAvailableRooms(roomName, (RoomAvailable[] roomsAvailable) => + { + Debug.Log("Available rooms (" + roomsAvailable.Length + ")"); + for (var i=0; i< roomsAvailable.Length;i++) + { + Debug.Log("roomId: " + roomsAvailable[i].roomId); + Debug.Log("maxClients: " + roomsAvailable[i].maxClients); + Debug.Log("clients: " + roomsAvailable[i].clients); + Debug.Log("metadata: " + roomsAvailable[i].metadata); + } + }); + } + void SendMessage() { if (room != null) diff --git a/Assets/ExampleScene.unity b/Assets/ExampleScene.unity index ad8b9d9e..c1b380a3 100644 Binary files a/Assets/ExampleScene.unity and b/Assets/ExampleScene.unity differ diff --git a/Assets/Plugins/Colyseus/Room.cs b/Assets/Plugins/Colyseus/Room.cs index 4aecca20..ea02089f 100644 --- a/Assets/Plugins/Colyseus/Room.cs +++ b/Assets/Plugins/Colyseus/Room.cs @@ -2,8 +2,6 @@ using System.IO; using System.Collections; using System.Collections.Generic; - -using UnityEngine; using GameDevWare.Serialization; namespace Colyseus diff --git a/Assets/Plugins/Colyseus/Utils/ObjectExtensions.cs b/Assets/Plugins/Colyseus/Utils/ObjectExtensions.cs index 6a599e6b..11967335 100644 --- a/Assets/Plugins/Colyseus/Utils/ObjectExtensions.cs +++ b/Assets/Plugins/Colyseus/Utils/ObjectExtensions.cs @@ -14,9 +14,15 @@ public static T ToObject(object source) where T : class, new() var someObjectType = someObject.GetType(); foreach (var item in (IDictionary)source) { - someObjectType - .GetProperty(item.Key) - .SetValue(someObject, item.Value, null); + var prop = someObjectType.GetProperty(item.Key); + try + { + prop.SetValue(someObject, Convert.ChangeType(item.Value, prop.PropertyType), null); + + } catch (OverflowException e) { + // workaround for parsing Infinity on RoomAvailable.maxClients + prop.SetValue(someObject, uint.MaxValue, null); + } } return someObject;