private static void SerializeOfficialItem(NavigatorOfficialItem Item, ServerMessage Message)
        {
            RoomInstance Instance = null;
            RoomInfo Info = null;

            if (!Item.IsCategory)
            {
                Instance = Item.TryGetRoomInstance();
                Info = Item.GetRoomInfo();
            }

            int Type = 3;

            if (Item.IsCategory)
            {
                Type = 4;
            }
            else if (Info != null && Info.Type == RoomType.Flat)
            {
                Type = 2;
            }

            Message.AppendUInt32(Item.Id);
            Message.AppendStringWithBreak(Item.Name);
            Message.AppendStringWithBreak(Item.Descr);
            Message.AppendInt32((int)Item.DisplayType);
            Message.AppendStringWithBreak(Item.BannerLabel);
            Message.AppendStringWithBreak(Item.ImageType == NavigatorOfficialItemImageType.External ? Item.Image : string.Empty);
            Message.AppendUInt32(Item.ParentId);
            Message.AppendInt32(Info != null ? Info.CurrentUsers : 0);
            Message.AppendInt32(Type);

            if (Item.IsCategory)
            {
                Message.AppendBoolean(Item.CategoryAutoExpand); // Category auto expand
            }
            else if (Info != null && Info.Type == RoomType.Public)
            {
                Message.AppendStringWithBreak(Item.ImageType == NavigatorOfficialItemImageType.Internal ? Item.Image : string.Empty);
                Message.AppendInt32(0); // Appears to be nothing but junk!
                Message.AppendInt32(0); // Something to do with room parts (e.g. lido part 0 & 1) default 0
                Message.AppendStringWithBreak(Info.SWFs);
                Message.AppendInt32(Info.MaxUsers);
                Message.AppendUInt32(Info.Id);
            }
            else if (Info != null && Info.Type == RoomType.Flat)
            {
                NavigatorRoomListComposer.SerializeRoom(Message, Info);
            }
        }
Exemplo n.º 2
0
        private static void SerializeOfficialItem(NavigatorOfficialItem Item, ServerMessage Message)
        {
            RoomInstance Instance = null;
            RoomInfo     Info     = null;

            if (!Item.IsCategory)
            {
                Instance = Item.TryGetRoomInstance();
                Info     = Item.GetRoomInfo();
            }

            int Type = 3;

            if (Item.IsCategory)
            {
                Type = 4;
            }
            else if (Info != null && Info.Type == RoomType.Flat)
            {
                Type = 2;
            }

            Message.AppendUInt32(Item.Id);
            Message.AppendStringWithBreak(Item.Name);
            Message.AppendStringWithBreak(Item.Descr);
            Message.AppendInt32((int)Item.DisplayType);
            Message.AppendStringWithBreak(Item.BannerLabel);
            Message.AppendStringWithBreak(Item.ImageType == NavigatorOfficialItemImageType.External ? Item.Image : string.Empty);
            Message.AppendUInt32(Item.ParentId);
            Message.AppendInt32(Info != null ? Info.CurrentUsers : 0);
            Message.AppendInt32(Type);

            if (Item.IsCategory)
            {
                Message.AppendBoolean(Item.CategoryAutoExpand); // Category auto expand
            }
            else if (Info != null && Info.Type == RoomType.Public)
            {
                Message.AppendStringWithBreak(Item.ImageType == NavigatorOfficialItemImageType.Internal ? Item.Image : string.Empty);
                Message.AppendInt32(0); // Appears to be nothing but junk!
                Message.AppendInt32(0); // Something to do with room parts (e.g. lido part 0 & 1) default 0
                Message.AppendStringWithBreak(Info.SWFs);
                Message.AppendInt32(Info.MaxUsers);
                Message.AppendUInt32(Info.Id);
            }
            else if (Info != null && Info.Type == RoomType.Flat)
            {
                NavigatorRoomListComposer.SerializeRoom(Message, Info);
            }
        }