internal static Protocol.RoomOptions ConvertToRoomOptions(string roomName, RoomOptions options, List <string> expectedUserIds) { var roomOptions = new Protocol.RoomOptions(); if (!string.IsNullOrEmpty(roomName)) { roomOptions.Cid = roomName; } if (options != null) { roomOptions.Visible = options.Visible; roomOptions.Open = options.Open; roomOptions.EmptyRoomTtl = options.EmptyRoomTtl; roomOptions.PlayerTtl = options.PlayerTtl; roomOptions.MaxMembers = options.MaxPlayerCount; roomOptions.Flag = options.Flag; roomOptions.Attr = CodecUtils.Serialize(options.CustomRoomProperties).ToByteString(); roomOptions.LobbyAttrKeys.AddRange(options.CustomRoomPropertyKeysForLobby); } if (expectedUserIds != null) { roomOptions.ExpectMembers.AddRange(expectedUserIds); } return(roomOptions); }
public void PlayObject() { var playObj = new PlayObject { ["i"] = 123, ["b"] = true, ["str"] = "hello, world" }; var subPlayObj = new PlayObject { ["si"] = 345, ["sb"] = true, ["sstr"] = "code" }; playObj.Add("obj", subPlayObj); var subPlayArr = new PlayArray { 666, true, "engineer" }; playObj.Add("arr", subPlayArr); var genericValue = CodecUtils.Serialize(playObj); Debug.Log(genericValue); var newPlayObj = CodecUtils.Deserialize(genericValue) as PlayObject; Assert.AreEqual(newPlayObj["i"], 123); Assert.AreEqual(newPlayObj["b"], true); Assert.AreEqual(newPlayObj["str"], "hello, world"); var newSubPlayObj = newPlayObj["obj"] as PlayObject; Assert.AreEqual(newSubPlayObj["si"], 345); Assert.AreEqual(newSubPlayObj["sb"], true); Assert.AreEqual(newSubPlayObj["sstr"], "code"); var newSubPlayArr = newPlayObj["arr"] as PlayArray; Assert.AreEqual(newSubPlayArr[0], 666); Assert.AreEqual(newSubPlayArr[1], true); Assert.AreEqual(newSubPlayArr[2], "engineer"); // Dictionary to PlayObject var dict = new Dictionary <string, int> { { "hello", 123 }, { "world", 456 } }; var dictObj = new PlayObject(dict); Assert.AreEqual(dictObj["hello"], 123); Assert.AreEqual(dictObj["world"], 456); }
public void PlayArray() { var playArr = new PlayArray { 123, true, "hello, world", new PlayObject { ["i"] = 23, ["b"] = true, ["str"] = "hello" } }; var genericValue = CodecUtils.Serialize(playArr); Debug.Log(genericValue); var newPlayArr = CodecUtils.Deserialize(genericValue) as PlayArray; Assert.AreEqual(newPlayArr[0], 123); Assert.AreEqual(newPlayArr[1], true); Assert.AreEqual(newPlayArr[2], "hello, world"); var subPlayObj = newPlayArr[3] as PlayObject; Assert.AreEqual(subPlayObj["i"], 23); Assert.AreEqual(subPlayObj["b"], true); Assert.AreEqual(subPlayObj["str"], "hello"); // List to PlayArray var iList = new List <int> { 10, 24 }; var iArr = new PlayArray(iList); Assert.AreEqual(iArr[0], 10); Assert.AreEqual(iArr[1], 24); var sList = new List <string> { "hello", "world" }; var sArr = new PlayArray(sList); Assert.AreEqual(sArr[0], "hello"); Assert.AreEqual(sArr[1], "world"); }
public void CustomType() { CodecUtils.RegisterType(typeof(Hero), 10, Hero.Serialize, Hero.Deserialize); CodecUtils.RegisterType(typeof(Weapon), 11, Weapon.Serialize, Weapon.Deserialize); var hero = new Hero { Name = "Li Lei", Score = 99.9f, Hp = 10, Mp = 8, Weapons = new List <Weapon> { new Weapon { Name = "pen", Attack = 100 }, new Weapon { Name = "erase", Attack = 200 } } }; var data = CodecUtils.Serialize(hero); var newHero = CodecUtils.Deserialize(data) as Hero; Assert.AreEqual(newHero.Name, "Li Lei"); Assert.AreEqual(Math.Abs(newHero.Score - 99.9f) < float.Epsilon, true); Assert.AreEqual(newHero.Hp, 10); Assert.AreEqual(newHero.Mp, 8); var pen = newHero.Weapons[0]; Assert.AreEqual(pen.Name, "pen"); Assert.AreEqual(pen.Attack, 100); var erase = newHero.Weapons[1]; Assert.AreEqual(erase.Name, "erase"); Assert.AreEqual(erase.Attack, 200); }