Exemplo n.º 1
0
    public ManageContentScreen()
    {
        XElement node = ContentManager.Get <XElement>("Screens/ManageContentScreen");

        LoadContents(this, node);
        m_contentList                   = Children.Find <ListPanelWidget>("ContentList");
        m_deleteButton                  = Children.Find <ButtonWidget>("DeleteButton");
        m_uploadButton                  = Children.Find <ButtonWidget>("UploadButton");
        m_changeFilterButton            = Children.Find <ButtonWidget>("ChangeFilter");
        m_filterLabel                   = Children.Find <LabelWidget>("Filter");
        m_contentList.ItemWidgetFactory = delegate(object obj)
        {
            ListItem        listItem = (ListItem)obj;
            ContainerWidget containerWidget;
            if (listItem.Type == ExternalContentType.BlocksTexture)
            {
                XElement node2 = ContentManager.Get <XElement>("Widgets/BlocksTextureItem");
                containerWidget = (ContainerWidget)Widget.LoadWidget(this, node2, null);
                RectangleWidget rectangleWidget = containerWidget.Children.Find <RectangleWidget>("BlocksTextureItem.Icon");
                LabelWidget     labelWidget     = containerWidget.Children.Find <LabelWidget>("BlocksTextureItem.Text");
                LabelWidget     labelWidget2    = containerWidget.Children.Find <LabelWidget>("BlocksTextureItem.Details");
                Texture2D       texture         = m_blocksTexturesCache.GetTexture(listItem.Name);
                BlocksTexturesManager.GetCreationDate(listItem.Name);
                rectangleWidget.Subtexture = new Subtexture(texture, Vector2.Zero, Vector2.One);
                labelWidget.Text           = listItem.DisplayName;
                labelWidget2.Text          = string.Format(LanguageControl.Get(fName, 1), texture.Width, texture.Height);
                if (!listItem.IsBuiltIn)
                {
                    labelWidget2.Text += $" | {listItem.CreationTime.ToLocalTime():dd MMM yyyy HH:mm}";
                    if (listItem.UseCount > 0)
                    {
                        labelWidget2.Text += string.Format(LanguageControl.Get(fName, 2), listItem.UseCount);
                    }
                }
            }
            else
            {
                if (listItem.Type != ExternalContentType.CharacterSkin)
                {
                    if (listItem.Type == ExternalContentType.FurniturePack)
                    {
                        XElement node3 = ContentManager.Get <XElement>("Widgets/FurniturePackItem");
                        containerWidget = (ContainerWidget)Widget.LoadWidget(this, node3, null);
                        LabelWidget labelWidget3 = containerWidget.Children.Find <LabelWidget>("FurniturePackItem.Text");
                        LabelWidget labelWidget4 = containerWidget.Children.Find <LabelWidget>("FurniturePackItem.Details");
                        labelWidget3.Text = listItem.DisplayName;
                        try
                        {
                            List <FurnitureDesign> designs = FurniturePacksManager.LoadFurniturePack(null, listItem.Name);
                            labelWidget4.Text = string.Format(LanguageControl.Get(fName, 3), FurnitureDesign.ListChains(designs).Count);
                            if (string.IsNullOrEmpty(listItem.Name))
                            {
                                return(containerWidget);
                            }
                            labelWidget4.Text += $" | {listItem.CreationTime.ToLocalTime():dd MMM yyyy HH:mm}";
                            return(containerWidget);
                        }
                        catch (Exception ex)
                        {
                            labelWidget4.Text = labelWidget4.Text + LanguageControl.Get("Usual", "error") + ex.Message;
                            return(containerWidget);
                        }
                    }
                    throw new InvalidOperationException(LanguageControl.Get(fName, 10));
                }
                XElement node4 = ContentManager.Get <XElement>("Widgets/CharacterSkinItem");
                containerWidget = (ContainerWidget)Widget.LoadWidget(this, node4, null);
                PlayerModelWidget playerModelWidget = containerWidget.Children.Find <PlayerModelWidget>("CharacterSkinItem.Model");
                LabelWidget       labelWidget5      = containerWidget.Children.Find <LabelWidget>("CharacterSkinItem.Text");
                LabelWidget       labelWidget6      = containerWidget.Children.Find <LabelWidget>("CharacterSkinItem.Details");
                Texture2D         texture2          = m_characterSkinsCache.GetTexture(listItem.Name);
                playerModelWidget.PlayerClass          = PlayerClass.Male;
                playerModelWidget.CharacterSkinTexture = texture2;
                labelWidget5.Text = listItem.DisplayName;
                labelWidget6.Text = string.Format(LanguageControl.Get(fName, 4), texture2.Width, texture2.Height);
                if (!listItem.IsBuiltIn)
                {
                    labelWidget6.Text += $" | {listItem.CreationTime.ToLocalTime():dd MMM yyyy HH:mm}";
                    if (listItem.UseCount > 0)
                    {
                        labelWidget6.Text += string.Format(LanguageControl.Get(fName, 2), listItem.UseCount);
                    }
                }
            }
            return(containerWidget);
        };
    }
Exemplo n.º 2
0
    private void UpdateList()
    {
        WorldsManager.UpdateWorldsList();
        List <ListItem> list = new List <ListItem>();

        if (m_filter == ExternalContentType.BlocksTexture || m_filter == ExternalContentType.Unknown)
        {
            BlocksTexturesManager.UpdateBlocksTexturesList();
            foreach (string name2 in BlocksTexturesManager.BlockTexturesNames)
            {
                list.Add(new ListItem
                {
                    Name         = name2,
                    IsBuiltIn    = BlocksTexturesManager.IsBuiltIn(name2),
                    Type         = ExternalContentType.BlocksTexture,
                    DisplayName  = BlocksTexturesManager.GetDisplayName(name2),
                    CreationTime = BlocksTexturesManager.GetCreationDate(name2),
                    UseCount     = WorldsManager.WorldInfos.Count((WorldInfo wi) => wi.WorldSettings.BlocksTextureName == name2)
                });
            }
        }
        if (m_filter == ExternalContentType.CharacterSkin || m_filter == ExternalContentType.Unknown)
        {
            CharacterSkinsManager.UpdateCharacterSkinsList();
            foreach (string name in CharacterSkinsManager.CharacterSkinsNames)
            {
                list.Add(new ListItem
                {
                    Name         = name,
                    IsBuiltIn    = CharacterSkinsManager.IsBuiltIn(name),
                    Type         = ExternalContentType.CharacterSkin,
                    DisplayName  = CharacterSkinsManager.GetDisplayName(name),
                    CreationTime = CharacterSkinsManager.GetCreationDate(name),
                    UseCount     = WorldsManager.WorldInfos.Count((WorldInfo wi) => wi.PlayerInfos.Any((PlayerInfo pi) => pi.CharacterSkinName == name))
                });
            }
        }
        if (m_filter == ExternalContentType.FurniturePack || m_filter == ExternalContentType.Unknown)
        {
            FurniturePacksManager.UpdateFurniturePacksList();
            foreach (string furniturePackName in FurniturePacksManager.FurniturePackNames)
            {
                list.Add(new ListItem
                {
                    Name         = furniturePackName,
                    IsBuiltIn    = false,
                    Type         = ExternalContentType.FurniturePack,
                    DisplayName  = FurniturePacksManager.GetDisplayName(furniturePackName),
                    CreationTime = FurniturePacksManager.GetCreationDate(furniturePackName)
                });
            }
        }
        list.Sort(delegate(ListItem o1, ListItem o2)
        {
            if (o1.IsBuiltIn && !o2.IsBuiltIn)
            {
                return(-1);
            }
            if (o2.IsBuiltIn && !o1.IsBuiltIn)
            {
                return(1);
            }
            if (string.IsNullOrEmpty(o1.Name) && !string.IsNullOrEmpty(o2.Name))
            {
                return(-1);
            }
            return((!string.IsNullOrEmpty(o1.Name) && string.IsNullOrEmpty(o2.Name)) ? 1 : string.Compare(o1.DisplayName, o2.DisplayName));
        });
        m_contentList.ClearItems();
        foreach (ListItem item in list)
        {
            m_contentList.AddItem(item);
        }
    }