コード例 #1
0
ファイル: Crew.cs プロジェクト: sortaloc/DriftCity
 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);
 }
コード例 #2
0
        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);
                }
            }
        }
コード例 #3
0
        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);
                }
            }
        }
コード例 #4
0
        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);
                }
            }
        }
コード例 #5
0
        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);
                    }
                }
            }
        }