public void Unserialize(BinaryReaderExt reader) { Id = reader.ReadInt64(); MarkId = reader.ReadInt64(); Name = reader.ReadUnicodeStatic(13); Description = reader.ReadUnicodeStatic(61); Url = reader.ReadAsciiStatic(33); CreateDate = reader.ReadUInt32(); CloseDate = reader.ReadUInt32(); BanishDate = reader.ReadUInt32(); OwnChannel = reader.ReadAsciiStatic(24); State = reader.ReadAsciiStatic(2); Ranking = reader.ReadUInt32(); Point = reader.ReadUInt32(); ChannelWinCnt = reader.ReadUInt32(); MemberCnt = reader.ReadUInt32(); TotalExp = reader.ReadInt64(); TotalMoney = reader.ReadInt64(); Version = reader.ReadUInt32(); OwnerId = reader.ReadInt64(); LeaderId = reader.ReadInt64(); OwnerName = reader.ReadUnicodeStatic(21); LeaderName = reader.ReadUnicodeStatic(21); }
public void CreateCharAnswerTest() { var packet = new CreateCharAnswerPacket() { CharacterName = "Test" }; var bytes = packet.GetBytes(); using (var ms = new MemoryStream(bytes)) { using (var bs = new BinaryReaderExt(ms)) { var characterName = bs.ReadUnicodeStatic(21); Assert.AreEqual(packet.CharacterName, characterName); } } }
public void CheckCharNameAnswerTest() { var packet = new CheckCharacterNameAnswerPacket() { CharacterName = "Test", Availability = true }; var bytes = packet.GetBytes(); using (var ms = new MemoryStream(bytes)) { using (var bs = new BinaryReaderExt(ms)) { var characterName = bs.ReadUnicodeStatic(21); Assert.AreEqual(packet.CharacterName, characterName); var availability = bs.ReadBoolean(); Assert.AreEqual(packet.Availability, availability); } } }
public void UserAuthAnswerPacket() { var packet = new UserAuthAnswerPacket(); var bytes = packet.GetBytes(); using (var ms = new MemoryStream(bytes)) { using (var bs = new BinaryReaderExt(ms)) { var ticket = bs.ReadUInt32(); Assert.AreEqual(packet.Ticket, ticket); var result = bs.ReadInt32(); Assert.AreEqual(packet.Result, result); var time = bs.ReadInt32(); Assert.AreEqual(packet.Time, time); bs.ReadBytes(64); // Filler var serverListId = bs.ReadUInt16(); Assert.AreEqual(packet.ServerListId, serverListId); var serverCount = bs.ReadInt32(); Assert.AreEqual(packet.ServerCount, serverCount); // Normally we could read all servers, but for tests only the first // is interesting var serverName = bs.ReadUnicodeStatic(32); StringAssert.AreEqualIgnoringCase(serverName, packet.Servers[0].ServerName); var serverId = bs.ReadUInt32(); Assert.AreEqual(packet.Servers[0].ServerId, serverId); var playerCount = bs.ReadSingle(); Assert.AreEqual(packet.Servers[0].PlayerCount, playerCount); var maxPlayers = bs.ReadSingle(); Assert.AreEqual(packet.Servers[0].MaxPlayers, maxPlayers); var serverState = bs.ReadInt32(); Assert.AreEqual(packet.Servers[0].ServerState, serverState); var gameTime = bs.ReadInt32(); Assert.AreEqual(packet.Servers[0].GameTime, gameTime); var lobbyTime = bs.ReadInt32(); Assert.AreEqual(packet.Servers[0].LobbyTime, lobbyTime); var area1Time = bs.ReadInt32(); Assert.AreEqual(packet.Servers[0].Area1Time, area1Time); var area2Time = bs.ReadInt32(); Assert.AreEqual(packet.Servers[0].Area2Time, area2Time); var rankingUpdateTime = bs.ReadInt32(); Assert.AreEqual(packet.Servers[0].RankingUpdateTime, rankingUpdateTime); var gameServerIp = bs.ReadBytes(4); Assert.AreEqual(packet.Servers[0].GameServerIp, gameServerIp); var lobbyServerIp = bs.ReadBytes(4); Assert.AreEqual(packet.Servers[0].LobbyServerIp, lobbyServerIp); var areaServer1Ip = bs.ReadBytes(4); Assert.AreEqual(packet.Servers[0].AreaServer1Ip, areaServer1Ip); var areaServer2Ip = bs.ReadBytes(4); Assert.AreEqual(packet.Servers[0].AreaServer2Ip, areaServer2Ip); var rankingServerIp = bs.ReadBytes(4); Assert.AreEqual(packet.Servers[0].RankingServerIp, rankingServerIp); var gameServerPort = bs.ReadUInt16(); Assert.AreEqual(packet.Servers[0].GameServerPort, gameServerPort); var lobbyServerPort = bs.ReadUInt16(); Assert.AreEqual(packet.Servers[0].LobbyServerPort, lobbyServerPort); var areaServerPort = bs.ReadUInt16(); Assert.AreEqual(packet.Servers[0].AreaServerPort, areaServerPort); var areaServer2Port = bs.ReadUInt16(); Assert.AreEqual(packet.Servers[0].AreaServer2Port, areaServer2Port); var areaServerUdpPort = bs.ReadUInt16(); Assert.AreEqual(packet.Servers[0].AreaServerUdpPort, areaServerUdpPort); var areaServer2UdpPort = bs.ReadUInt16(); Assert.AreEqual(packet.Servers[0].AreaServer2UdpPort, areaServer2UdpPort); var rankingServerPort = bs.ReadUInt16(); Assert.AreEqual(packet.Servers[0].RankingServerPort, rankingServerPort); } } }
public void UserInfoAnswerTest() { var packet = new UserInfoAnswerPacket() { Permissions = Utilities.Rand.Next(), Characters = new [] { new Character() { Name = "TestChar", Id = Utilities.Rand.NextUInt32(), Avatar = 2, Level = 10, ActiveVehicleId = Utilities.Rand.NextUInt32(), CreationDate = Utilities.Rand.Next(), CrewId = Utilities.Rand.NextUInt32(), ActiveCar = new Vehicle() // Normally this points to an object in GarageVehicles. { CarType = Utilities.Rand.NextUInt32(), BaseColor = Utilities.Rand.NextUInt32() }, Crew = new Crew { Name = "TestTeam", MarkId = Utilities.Rand.NextInt64() } } }, Username = "******" }; var bytes = packet.GetBytes(); // +2 here since packet id is 2 bytes aka short. Assert.IsTrue(bytes.Length + 2 == packet.ExpectedSize(), $"Packet Size mismatch {bytes.Length+2} vs expected {packet.ExpectedSize()}"); using (var ms = new MemoryStream(bytes)) { using (var bs = new BinaryReaderExt(ms)) { var permissions = bs.ReadInt32(); Assert.AreEqual(packet.Permissions, permissions); var characterCount = bs.ReadInt32(); Assert.AreEqual(packet.Characters.Length, characterCount); var username = bs.ReadUnicodeStatic(18); Assert.AreEqual(packet.Username, username); var long1 = bs.ReadInt64(); // Always 0 Assert.AreEqual(0, long1); var long2 = bs.ReadInt64(); // Always 0 Assert.AreEqual(0, long2); var long3 = bs.ReadInt64(); // Always 0 Assert.AreEqual(0, long3); var int1 = bs.ReadInt32(); // Always 0 Assert.AreEqual(0, int1); for (int i = 0; i < characterCount; i++) { var characterName = bs.ReadUnicodeStatic(21); StringAssert.AreEqualIgnoringCase(packet.Characters[i].Name, characterName); var charId = bs.ReadUInt64(); Assert.AreEqual(packet.Characters[i].Id, charId); var avatar = bs.ReadInt32(); Assert.AreEqual(packet.Characters[i].Avatar, avatar); var level = bs.ReadInt32(); Assert.AreEqual(packet.Characters[i].Level, level); var currentCarId = bs.ReadUInt32(); Assert.AreEqual(packet.Characters[i].ActiveVehicleId, currentCarId); var carType = bs.ReadUInt32(); Assert.AreEqual(packet.Characters[i].ActiveCar.CarType, carType); var baseColor = bs.ReadUInt32(); Assert.AreEqual(packet.Characters[i].ActiveCar.BaseColor, baseColor); var creationDate = bs.ReadInt32(); Assert.AreEqual(packet.Characters[i].CreationDate, creationDate); var tid = bs.ReadInt64(); // TeamId!!! Assert.AreEqual(packet.Characters[i].CrewId, tid); var teamMarkId = bs.ReadInt64(); Assert.AreEqual(packet.Characters[i].Crew.MarkId, teamMarkId); var teamName = bs.ReadUnicodeStatic(13); var expectedName = packet.Characters[i].Crew.Name; if (expectedName.Length > 13) { expectedName = expectedName.Substring(0, 13); } StringAssert.AreEqualIgnoringCase(expectedName, teamName); } } } }