// 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); }
// 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); } }
// 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); } }