Beispiel #1
0
        public override void WriteTo(HPacket packet)
        {
            packet.Write(Id);
            packet.Write(Name);

            packet.Write(OwnerId);
            packet.Write(OwnerName);

            packet.Write(DoorMode);
            packet.Write(UserCount);
            packet.Write(MaxUserCount);

            packet.Write(Description);
            packet.Write(TradeMode);
            packet.Write(Ranking);
            packet.Write(Category);
            packet.Write(Stars);

            //TODO: Not happy with this
            int bitmaskPosition = packet.BodyLength;

            packet.Write(0);
            HRoomFlags flags = HRoomFlags.None;

            if (!string.IsNullOrEmpty(ThumbnailUrl))
            {
                flags |= HRoomFlags.HasCustomThumbnail;
                packet.Write(ThumbnailUrl);
            }

            if (!string.IsNullOrEmpty(GroupName) && !string.IsNullOrEmpty(GroupBadgeCode))
            {
                flags |= HRoomFlags.HasGroup;
                packet.Write(GroupId);
                packet.Write(GroupName);
                packet.Write(GroupBadgeCode);
            }

            if (!string.IsNullOrEmpty(AdName) && !string.IsNullOrEmpty(AdDescription))
            {
                flags |= HRoomFlags.HasAdvertisement;
                packet.Write(AdName);
                packet.Write(AdDescription);
                packet.Write(AdExpiresInMinutes);
            }

            flags |= ShowOwner ? HRoomFlags.ShowOwner : 0;
            flags |= AllowPets ? HRoomFlags.AllowPets : 0;
            flags |= ShowEntryAd ? HRoomFlags.ShowRoomAd : 0;

            packet.Write((int)flags, bitmaskPosition);
        }
Beispiel #2
0
        public HRoomEntry(HPacket packet)
            : base(packet)
        {
            Id   = packet.ReadInt32();
            Name = packet.ReadUTF8();

            OwnerId   = packet.ReadInt32();
            OwnerName = packet.ReadUTF8();

            DoorMode     = packet.ReadInt32();
            UserCount    = packet.ReadInt32();
            MaxUserCount = packet.ReadInt32();

            Description = packet.ReadUTF8();
            TradeMode   = packet.ReadInt32();
            Ranking     = packet.ReadInt32();
            Category    = packet.ReadInt32();
            Stars       = packet.ReadInt32();

            Tags = new string[packet.ReadInt32()];
            for (int i = 0; i < Tags.Length; i++)
            {
                Tags[i] = packet.ReadUTF8();
            }

            HRoomFlags roomEntryBitmask = (HRoomFlags)packet.ReadInt32();

            if (roomEntryBitmask.HasFlag(HRoomFlags.HasCustomThumbnail))
            {
                ThumbnailUrl = packet.ReadUTF8();
            }
            if (roomEntryBitmask.HasFlag(HRoomFlags.HasGroup))
            {
                GroupId        = packet.ReadInt32();
                GroupName      = packet.ReadUTF8();
                GroupBadgeCode = packet.ReadUTF8();
            }
            if (roomEntryBitmask.HasFlag(HRoomFlags.HasAdvertisement))
            {
                AdName             = packet.ReadUTF8();
                AdDescription      = packet.ReadUTF8();
                AdExpiresInMinutes = packet.ReadInt32();
            }

            ShowOwner   = roomEntryBitmask.HasFlag(HRoomFlags.ShowOwner);
            AllowPets   = roomEntryBitmask.HasFlag(HRoomFlags.AllowPets);
            ShowEntryAd = roomEntryBitmask.HasFlag(HRoomFlags.ShowRoomAd);
        }
Beispiel #3
0
    public HRoomEntry(IHFormat format, ref ReadOnlySpan <byte> packetSpan)
    {
        Id   = format.Read <int>(ref packetSpan);
        Name = format.ReadUTF8(ref packetSpan);

        OwnerId   = format.Read <int>(ref packetSpan);
        OwnerName = format.ReadUTF8(ref packetSpan);

        DoorMode     = (HDoorMode)format.Read <int>(ref packetSpan);
        UserCount    = format.Read <int>(ref packetSpan);
        MaxUserCount = format.Read <int>(ref packetSpan);

        Description = format.ReadUTF8(ref packetSpan);
        TradeMode   = (HTradeMode)format.Read <int>(ref packetSpan);
        Ranking     = format.Read <int>(ref packetSpan);
        Stars       = format.Read <int>(ref packetSpan);
        Category    = (HRoomCategory)format.Read <int>(ref packetSpan);

        Tags = new string[format.Read <int>(ref packetSpan)];
        for (int i = 0; i < Tags.Length; i++)
        {
            Tags[i] = format.ReadUTF8(ref packetSpan);
        }

        HRoomFlags roomFlags = (HRoomFlags)format.Read <int>(ref packetSpan);

        if (roomFlags.HasFlag(HRoomFlags.HasCustomThumbnail))
        {
            ThumbnailUrl = format.ReadUTF8(ref packetSpan);
        }
        if (roomFlags.HasFlag(HRoomFlags.HasGroup))
        {
            GroupId        = format.Read <int>(ref packetSpan);
            GroupName      = format.ReadUTF8(ref packetSpan);
            GroupBadgeCode = format.ReadUTF8(ref packetSpan);
        }
        if (roomFlags.HasFlag(HRoomFlags.HasAdvertisement))
        {
            AdName             = format.ReadUTF8(ref packetSpan);
            AdDescription      = format.ReadUTF8(ref packetSpan);
            AdExpiresInMinutes = format.Read <int>(ref packetSpan);
        }

        ShowOwner   = roomFlags.HasFlag(HRoomFlags.ShowOwner);
        AllowPets   = roomFlags.HasFlag(HRoomFlags.AllowPets);
        ShowEntryAd = roomFlags.HasFlag(HRoomFlags.ShowRoomAd);
    }