Esempio n. 1
0
    public int GetResourceQuantity(SettlementResourceData resource)
    {
        if (!_resources.ContainsKey(resource))
        {
            return(0);
        }

        return(_resources[resource]);
    }
Esempio n. 2
0
 public void AddResource(SettlementResourceData resource)
 {
     if (_resources.ContainsKey(resource))
     {
         _resources[resource]++;
     }
     else
     {
         _resources.Add(resource, 1);
     }
     OnSettlementResourceChange?.Invoke();
 }
Esempio n. 3
0
    public void AddResource(SettlementResourceData resource)
    {
        if (_currentBoxIndex >= _boxCapacity)
        {
            return;
        }

        GameObject box = _boxHolder.transform.GetChild(_currentBoxIndex).gameObject;

        box.SetActive(true);
        _currentBoxIndex++;
        settlementData.AddResource(resource);
    }
Esempio n. 4
0
    private bool HasRequiredResources()
    {
        foreach (KeyValuePair <SettlementResourceData, int> kvp in upgrade.RequiredResources)
        {
            SettlementResourceData resourceRequired = kvp.Key;
            int amountRequired = kvp.Value;

            int amountInSettlement = settlement.SettlementData.GetResourceQuantity(resourceRequired);
            if (amountInSettlement < amountRequired)
            {
                return(false);
            }
        }
        return(true);
    }
Esempio n. 5
0
    public bool RemoveResource(SettlementResourceData resource, int quanity)
    {
        if (!_resources.ContainsKey(resource))
        {
            return(false);
        }

        if (_resources[resource] < quanity)
        {
            return(false);
        }

        _resources[resource] = _resources[resource] - quanity;

        if (_resources[resource] == 0)
        {
            _resources.Remove(resource);
        }
        OnSettlementResourceChange?.Invoke();
        return(true);
    }
Esempio n. 6
0
    public virtual void ApplyUpgrade()
    {
        if (!HasRequiredResources())
        {
            Debug.Log("You do not have the required resources");
            return;
        }

        foreach (KeyValuePair <SettlementResourceData, int> kvp in upgrade.RequiredResources)
        {
            SettlementResourceData resourceRequired = kvp.Key;
            int amountRequired = kvp.Value;

            settlement.SettlementData.RemoveResource(resourceRequired, amountRequired);
        }
        int        markerIndex   = SettlementUpgradeUI.Instance.upgradeMarkerIndex;
        GameObject upgradeObject = Instantiate(upgrade.Prefab, settlement.settlementUpgradeSpawns[markerIndex]);

        upgradeObject.transform.localPosition = new Vector3(0, 0, 0);
        settlement.DisableMarkerAtIndex(markerIndex);

        Destroy(gameObject);
    }