Esempio n. 1
0
        private void CreateOrDestroyAndSetItems(System.Func <int, int> valueGenerator, System.Func <int, int, float> weightGenerator)
        {
            if (_selectedItemPanel != null)
            {
                _selectedItemPanel.selected = false;
            }

            while (_itemPanels.Count < quantityOfItems)
            {
                WeightedShuffleItemPanel itemPanel = Instantiate(weightedShuffleItemPrefab);
                itemPanel.transform.SetParent(itemsPanel, false);
                _itemPanels.Add(itemPanel);
            }

            while (_itemPanels.Count > quantityOfItems)
            {
                Destroy(_itemPanels[_itemPanels.Count - 1].gameObject);
                _itemPanels.RemoveAt(_itemPanels.Count - 1);
            }

            _items.Clear();

            for (int i = 0; i < _itemPanels.Count; ++i)
            {
                int   value  = valueGenerator(i);
                float weight = weightGenerator(i, value);

                WeightedShuffleItemPanel itemPanel = _itemPanels[i];
                itemPanel.SetValue(value, _itemPanels.Count);
                itemPanel.SetWeight(Mathf.RoundToInt(weight), 99);

                _items.Add(new WeightedValue(value, weight));
            }
        }
Esempio n. 2
0
        public void OnShuffle()
        {
            if (_selectedItemPanel != null)
            {
                _selectedItemPanel.selected = false;
            }

            _random.Shuffle(_items);

            for (int i = 0; i < _itemPanels.Count; ++i)
            {
                WeightedShuffleItemPanel itemPanel = _itemPanels[i];
                itemPanel.SetValue(_items[i].value, _itemPanels.Count);
                itemPanel.SetWeight(Mathf.RoundToInt(_items[i].weight), 99);
            }
        }