Exemplo n.º 1
0
    void SelectCollection(BaseItemCollection selectedCollection)
    {
        _currentSelectedCollection         = selectedCollection;
        _collectionContainer.style.display = DisplayStyle.None;

        _itemContainer = _root.Q("SpellsContainer") as ScrollView;
        _itemContainer.Clear();
        _title.text = _currentSelectedCollection.name;

        var scrollViews = new VisualElement[ItemLevels.Length];

        for (var i = 0; i < ItemLevels.Length; i++)
        {
            var scrollView = new VisualElement();
            scrollView.AddToClassList("ScrollItemContainer");
            scrollView.styleSheets.Add(_styleSheet);
            scrollViews[i] = scrollView;

            var levelTitle = new Label("Level " + ItemLevels[i] + "+");
            levelTitle.AddToClassList("ItemLevelTitle");
            levelTitle.styleSheets.Add(_styleSheet);

            _itemContainer.Add(levelTitle);
            _itemContainer.Add(scrollView);
        }

        for (var u = 0; u < ItemLevels.Length; u++)
        {
            foreach (var item in _currentSelectedCollection.Items)
            {
                var button = new Button();
                button.AddToClassList("SkillButton");
                button.styleSheets.Add(_styleSheet);

                var label = new Label(item.name);
                label.AddToClassList("SkillButtonTitle");
                label.styleSheets.Add(_styleSheet);
                button.Add(label);

                var icon = new Image();
                icon.AddToClassList("SkillButtonIcon");
                icon.styleSheets.Add(_styleSheet);
                var itemicon = item.GetIcon(ItemLevels[u]);
                if (itemicon == null)
                {
                    itemicon = _defaultIcon;
                }
                icon.image = itemicon.texture;
                button.Add(icon);

                var field = new ObjectField();
                field.value      = item.GetIcon(ItemLevels[u]) ?? _defaultIcon;
                field.objectType = typeof(Sprite);
                var id = u;
                field.RegisterValueChangedCallback(changeEvent =>
                {
                    icon.image = ((Sprite)changeEvent.newValue)?.texture;
                    item.SetIcon(id, (Sprite)changeEvent.newValue);
                });
                button.Add(field);

                scrollViews[u].Add(button);
            }
        }
        _itemContainer.style.display          = DisplayStyle.Flex;
        _backToCollectionButton.style.display = DisplayStyle.Flex;
    }