コード例 #1
0
        public void AddResources(List <InventoryItemStats> itemStats, bool displayOnUi = true)
        {
            var sb = new StringBuilder("Found ");

            foreach (var item in itemStats)
            {
                if (_items.ContainsKey(item.inventoryItem.itemId))
                {
                    var inventoryItemStats = _items[item.inventoryItem.itemId];
                    inventoryItemStats.itemCount     += item.itemCount;
                    _items[item.inventoryItem.itemId] = inventoryItemStats;
                }
                else
                {
                    var inventoryItemStats = new InventoryItemStats
                    {
                        itemCount     = item.itemCount,
                        inventoryItem = item.inventoryItem
                    };
                    _items.Add(item.inventoryItem.itemId, inventoryItemStats);
                }

                sb.Append($"{item.itemCount} {item.inventoryItem.displayName}, ");
            }

            sb.Length -= 2;

            if (displayOnUi)
            {
                contentDisplay.text = sb.ToString();
                contentDisplayAnimator.SetTrigger(Controls.UIDisplayTextTrigger);
            }

            resourcesChanged?.Invoke();
        }
コード例 #2
0
        private void CheckInteractionTime()
        {
            if (Input.GetKeyDown(Controls.InteractionKey))
            {
                UniSlider.instance.InitSlider(gameObject);
            }
            else if (Input.GetKeyUp(Controls.InteractionKey))
            {
                UniSlider.instance.DiscardSlider(gameObject);
            }
            else if (Input.GetKey(Controls.InteractionKey))
            {
                _currentInteractionTime += Time.deltaTime;
            }
            else
            {
                _currentInteractionTime = 0;
            }

            if (_currentInteractionTime >= maxInteractionTime)
            {
                _collectibleCollected = true;
                UniSlider.instance.DiscardSlider(gameObject);

                var collectionItems = new List <InventoryItemStats>();
                for (var i = 0; i < collectibles.Count; i++)
                {
                    var inventoryItemStats = collectibles[i];
                    var randomValue        = Random.Range(0, 1000) % inventoryItemStats.itemCount;

                    if (inventoryItemStats.itemCount <= 1)
                    {
                        randomValue = inventoryItemStats.itemCount;
                    }
                    if (randomValue <= 0)
                    {
                        randomValue = 1;
                    }

                    var newCollectionItem = new InventoryItemStats
                    {
                        itemCount     = randomValue,
                        inventoryItem = inventoryItemStats.inventoryItem
                    };

                    collectionItems.Add(newCollectionItem);
                }

                ResourceManager.instance.AddResources(collectionItems);
                DestroyCollectible();
            }
        }
コード例 #3
0
        public void AddResource(InventoryItem item, int count = 1)
        {
            if (_items.ContainsKey(item.itemId))
            {
                var inventoryItemStats = _items[item.itemId];
                inventoryItemStats.itemCount += count;
                _items[item.itemId]           = inventoryItemStats;
            }
            else
            {
                var inventoryItemStats = new InventoryItemStats
                {
                    itemCount     = count,
                    inventoryItem = item
                };
                _items.Add(item.itemId, inventoryItemStats);
            }

            resourcesChanged?.Invoke();
        }