public void OnItemBunchAdded(ItemBunchDto itemBunch) { var itemPrefab = _prefabContainer.GetItemPrefab(itemBunch.TypeId); Stack <GameObject> stack; if (items.ContainsKey(itemBunch.TypeId)) { stack = items[itemBunch.TypeId]; var itemComponent = stack.Peek().GetComponent <ItemComponent>(); var count = Math.Min(itemComponent.CountPerSlot - itemComponent.Count, itemBunch.Count); itemComponent.Count += count; itemBunch.Count -= count; } else { stack = new Stack <GameObject>(); items.Add(itemBunch.TypeId, stack); } while (itemBunch.Count > 0) { var freeSlot = slots.First(x => x.childCount == 0); var itemObject = Instantiate(itemPrefab, freeSlot.transform); var itemComponent = itemObject.GetComponent <ItemComponent>(); var count = Math.Min(itemComponent.CountPerSlot - itemComponent.Count, itemBunch.Count); itemComponent.Count += count; itemBunch.Count -= count; stack.Push(itemObject); } }
public void OnItemBunchRemoved(ItemBunchDto itemBunch) { var stack = items[itemBunch.TypeId]; while (itemBunch.Count > 0) { var itemObject = stack.Peek(); var itemComponent = itemObject.GetComponent <ItemComponent>(); var count = Math.Min(itemComponent.Count, itemBunch.Count); itemComponent.Count -= count; itemBunch.Count -= count; if (itemComponent.Count == 0) { stack.Pop(); Destroy(itemObject); } } }
public void RemoveItemBunch(int constructionId, ItemBunchDto bunchDto) { var construction = _level.GetConstruction(constructionId); construction.RemoveItemBunch(new ItemBunch(bunchDto, _typeRepository)); }
public void AddItemBunch(int constructionId, ItemBunchDto bunchDto) { _level.GetConstruction(constructionId) .AddItemBunch(new ItemBunch(bunchDto, _typeRepository)); }