public void RemoveResource(SimResource resource, int amount) { SimResourceBin bin = FindBin(resource); if (bin != null) bin.Remove(amount); }
public void TransferTo(SimResourceBin targetBin) { int toTransfer = Math.Min(amount, targetBin.capacity - targetBin.amount); amount -= toTransfer; targetBin.amount += toTransfer; }
public int GetCapacity(SimResource resource) { SimResourceBin bin = FindBin(resource); if (bin != null) return bin.capacity; return int.MaxValue; }
public int GetAmount(SimResource resource) { SimResourceBin bin = FindBin(resource); if (bin != null) return bin.amount; return 0; }
public void TransferResourcesTo(SimResourceBinCollection resourcesTarget) { for (int i = 0; i < bins.Count; i++) { SimResourceBin sourceBin = bins[i]; SimResourceBin targetBin = resourcesTarget.FindOrAddBin(sourceBin.resouce); sourceBin.TransferTo(targetBin); } }
public bool CanAddSomeResources(SimResourceBinCollection resourcesToTryAdd) { for (int i = 0; i < resourcesToTryAdd.bins.Count; i++) { SimResourceBin sourceBin = resourcesToTryAdd.bins[i]; if (sourceBin.amount > 0 && GetAmount(sourceBin.resouce) < GetCapacity(sourceBin.resouce)) return true; } return false; }
private SimResourceBin FindOrAddBin(SimResource resource) { SimResourceBin bin = FindBin(resource); if (bin == null) { bin = new SimResourceBin(); bin.resouce = resource; bins.Add(bin); } return bin; }
public void SetCapacity(SimResource resource, int capacity) { SimResourceBin bin = FindOrAddBin(resource); bin.SetCapacity(capacity); }
public void AddResource(SimResource resource, int amount) { SimResourceBin bin = FindOrAddBin(resource); bin.Add(amount); }