private IEnumerator AskForMissingItem() { var items = LostItem.Instances; var wantedItems = CustomerManager.Instance.wantedItems; while (items.Count - wantedItems.Count == 0) { yield return(null); } int max = items.Count; LostItem item = null; do { // Pick random available spot. var random = GameManager.Instance.Random; int randomIndex = random.Next(0, max); item = items[randomIndex]; } while (wantedItems.Contains(item)); wantedItems.Add(item); _wantedItem = item; // ReSharper disable once LocalVariableHidesMember var renderer = item.GetComponent <SpriteRenderer>(); _wantedItemRenderer.sprite = renderer.sprite; _wantedItemRenderer.color = Color.black; _wantedItemRenderer.gameObject.SetActive(true); }
public void ConstraintMovement(LostItem item, bool condition) { if (condition) { var itemBounds = item.GetComponent <BoxCollider2D>().bounds; var itemNewPosition = item.NewPosition; //Check if point is not within bounds if (itemNewPosition.x + itemBounds.extents.x > Bounds.max.x) { itemNewPosition.x = Bounds.max.x - itemBounds.extents.x; } else if (itemNewPosition.x - itemBounds.extents.x < Bounds.min.x) { itemNewPosition.x = Bounds.min.x + itemBounds.extents.x; } if (itemNewPosition.y + itemBounds.extents.y > Bounds.max.y && !item.IsSelected) { itemNewPosition.y = Bounds.max.y - itemBounds.extents.y; } else if (itemNewPosition.y - itemBounds.extents.y < Bounds.min.y) { itemNewPosition.y = Bounds.min.y + itemBounds.extents.y; } item.NewPosition = itemNewPosition; } }
public void PoolItem(LostItem item) { var sprite = item.GetComponent <SpriteRenderer>().sprite; for (int i = 0; i < _usedItems.Count; i++) { if (_usedItems[i].GetComponent <SpriteRenderer>().sprite == sprite) { _itemPool.Add(_usedItems[i]); _usedItems.Remove(_usedItems[i]); break; } } }