public void Add(Item item) { Debug.Log("Add " + item.itemData.name); if (item.itemData.isResource) { if (resourceCount.ContainsKey(item)) { Debug.Log("Get Resource " + item.itemData.name + " " + resourceCount[item]); resourceCount[item]++; onResourceChangedCallBack?.Invoke(item); } else { Debug.Log("New Resource " + item.itemData.name); resourceCount.Add(item, 1); if (!gears.Contains(item)) { gears.Add(item); onGearChangedCallBack?.Invoke(item); showCluePanelCall?.Invoke(item); } onResourceChangedCallBack?.Invoke(item); } } else { if (!clues.Contains(item)) { Debug.Log("New Clue " + item.itemData.name); clues.Add(item); onClueChangedCallBack?.Invoke(); showCluePanelCall?.Invoke(item); } } }
public void SetResource(Resource resource, int value, bool silent) { if (!silent) { OnResourceChanged?.Invoke(resource, int.MaxValue, int.MaxValue); } }
// ------------ Adding to inventory list ------------ // // Returns true if item was picked up, otherwise false public bool Add(Item item) { if (!item.isDefaultItem) // if the item isn't a default item (default items include starting weapon, etc.) { if (items.Count >= space) { Debug.Log("Not enough room"); return(false); } items.Add(item); if (onItemChangedCallback != null) // safety net so no errors occur with delegate { onItemChangedCallback.Invoke(); // triggering the OnItemChanged event (can be found in InventoryUI) } if (item.itemType == ItemType.Resource) // if item is a resource, trigger the onResourceChanged event as well (can be found in InventoryUI) { onResourceChangedCallback.Invoke(item); } } return(true); }
public void SetResource(Resource resource, int value, bool silent) { if (!_resources.ContainsKey(resource)) { if (_resources != null) { _resources.Add(resource, value); if (!silent) { OnResourceChanged?.Invoke(resource, 0, _resources[resource]); } } else { throw new ArgumentException("Tried to spend a null resource."); } } else { int before = _resources[resource]; _resources[resource] = value; if (!silent) { OnResourceChanged?.Invoke(resource, before, _resources[resource]); } } }
public void Update() { var temp = Meat; Meat = Mathf.Min(Meat, StorageMaxCapacity); if (temp != Meat) { OnResourceChanged?.Invoke(ResourceTypes.Meat, Meat); } temp = Fruit; Fruit = Mathf.Min(Fruit, StorageMaxCapacity); if (temp != Fruit) { OnResourceChanged?.Invoke(ResourceTypes.Fruit, Fruit); } }
public void Store(ResourceTypes type, int quantity) { switch (type) { case ResourceTypes.Meat: Meat = Mathf.Min(Meat + quantity, StorageMaxCapacity); OnResourceChanged?.Invoke(ResourceTypes.Meat, Meat); break; case ResourceTypes.Fruit: Fruit = Mathf.Min(Fruit + quantity, StorageMaxCapacity); OnResourceChanged?.Invoke(ResourceTypes.Fruit, Fruit); break; default: throw new System.Exception("There is no such resource in manager: " + type); } }
public bool Spend(ResourceTypes type, int quantity) { if (IsEnough(type, quantity)) { switch (type) { case ResourceTypes.Meat: Meat -= quantity; OnResourceChanged?.Invoke(ResourceTypes.Meat, Meat); return(true); case ResourceTypes.Fruit: Fruit -= quantity; OnResourceChanged?.Invoke(ResourceTypes.Fruit, Fruit); return(true); default: throw new System.Exception("There is no such resource in manager: " + type); } } Debug.Log("Not enough resources: " + type); return(false); }
public void ResourceChanged(string resourceName) { OnResourceChanged?.Invoke(resourceName); }
private void AddResource(ResourceType resourceType, ResourceGenerator generator) { _resourceTypes[resourceType] = Mathf.Clamp(_resourceTypes[resourceType] + generator.TotalNodes, 0, 999); HandleResourceChanged?.Invoke(_resourceTypes); }