public virtual void Read(BinaryReaderExt r) { EntryFlags = r.ReadInt64(); EntryNumber = r.ReadInt32(); bool hasString = r.ReadBoolean(); EntryName = r.ReadString(0x38); bool hasLabel = r.ReadBoolean(); EntryLabel = r.ReadString(0x40); bool hasStartPosition = r.ReadBoolean(); StartPosition = new LVDVector3(r.ReadSingle(), r.ReadSingle(), r.ReadSingle()); UseStartPosition = r.ReadBoolean(); // Unknown r.Skip(1); UnknownIndex2 = r.ReadInt32(); r.Skip(1); UnknownVector = new LVDVector3(r.ReadSingle(), r.ReadSingle(), r.ReadSingle()); UnknownIndex = r.ReadInt32(); r.Skip(1); BoneName = r.ReadString(0x40); }
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 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); } } } }