public int GetResourceQuantity(SettlementResourceData resource) { if (!_resources.ContainsKey(resource)) { return(0); } return(_resources[resource]); }
public void AddResource(SettlementResourceData resource) { if (_resources.ContainsKey(resource)) { _resources[resource]++; } else { _resources.Add(resource, 1); } OnSettlementResourceChange?.Invoke(); }
public void AddResource(SettlementResourceData resource) { if (_currentBoxIndex >= _boxCapacity) { return; } GameObject box = _boxHolder.transform.GetChild(_currentBoxIndex).gameObject; box.SetActive(true); _currentBoxIndex++; settlementData.AddResource(resource); }
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); }
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); }
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); }