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]);
                }
            }
        }
예제 #5
0
        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);
            }
        }
예제 #6
0
        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);
            }
        }
예제 #7
0
        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);
        }
예제 #8
0
 public void ResourceChanged(string resourceName)
 {
     OnResourceChanged?.Invoke(resourceName);
 }
예제 #9
0
 private void AddResource(ResourceType resourceType, ResourceGenerator generator)
 {
     _resourceTypes[resourceType] = Mathf.Clamp(_resourceTypes[resourceType] + generator.TotalNodes, 0, 999);
     HandleResourceChanged?.Invoke(_resourceTypes);
 }