예제 #1
0
    // creates a field item
    public FieldItem CreateItem()
    {
        // sets item values
        GameObject itemBox   = GameObject.Instantiate((GameObject)Resources.Load(itemPrefab));
        FieldItem  fieldItem = itemBox.GetComponent <FieldItem>();

        fieldItem.ResetDespawnCountdown();
        fieldItem.RandomizeItem();

        // returns the new field item.
        return(fieldItem);
    }
예제 #2
0
    // gets a field item
    public FieldItem GetItem()
    {
        // generates new item
        if (itemPool.Count == 0)
        {
            // creates the item.
            return(CreateItem());
        }
        else // takes item from the pool
        {
            // original
            // FieldItem itemBox = itemPool.Dequeue();
            // itemBox.ResetDespawnCountdown();
            // itemBox.gameObject.SetActive(true);
            // itemBox.RandomizeItem(); // randomize item

            // new
            FieldItem itemBox = null;

            // checks for null values
            do
            {
                // gets item
                itemBox = itemPool.Dequeue();

                // if the item box was null, go through the list again.
                if (itemBox == null)
                {
                    continue;
                }

                // sets values if it isn't null.
                itemBox.ResetDespawnCountdown();
                itemBox.gameObject.SetActive(true);
                itemBox.RandomizeItem();                     // randomize item
            }while (itemBox == null && itemPool.Count != 0); // while a preset item hasn't been found.

            // no items were found in the list.
            if (itemBox == null)
            {
                itemBox = CreateItem();
            }

            // returns item box.
            return(itemBox);
        }
    }
예제 #3
0
    // sets the total amount of items that are available.
    public void SetItemCount(int itemCount)
    {
        // there are more items that should be available
        if (itemPool.Count > itemCount)
        {
            do
            {
                // removes the item from the list
                FieldItem item = itemPool.Dequeue();

                // item was set to null.
                if (item == null)
                {
                    continue;
                }

                Object.Destroy(item.gameObject);
            }while (itemPool.Count > itemCount);
        }
        // there are less items than should be available
        else if (itemPool.Count < itemCount)
        {
            do
            {
                // generates an item and adds it to the list.
                // TODO: check for component being on prefab?
                GameObject itemBox   = GameObject.Instantiate((GameObject)Resources.Load(itemPrefab));
                FieldItem  fieldItem = itemBox.GetComponent <FieldItem>();
                itemBox.SetActive(false);

                // missing component
                if (fieldItem == null)
                {
                    fieldItem = itemBox.AddComponent <FieldItem>();
                }

                fieldItem.RandomizeItem();
                itemPool.Enqueue(fieldItem);
            }while (itemPool.Count < itemCount);
        }
    }