示例#1
0
	public void RemoveResource(SimResource resource, int amount)
	{
		SimResourceBin bin = FindBin(resource);
		
		if (bin != null)
			bin.Remove(amount);
	}
示例#2
0
    public void TransferTo(SimResourceBin targetBin)
    {
        int toTransfer = Math.Min(amount, targetBin.capacity - targetBin.amount);

        amount -= toTransfer;

        targetBin.amount += toTransfer;
    }
示例#3
0
	public int GetCapacity(SimResource resource)
	{
		SimResourceBin bin = FindBin(resource);
		
		if (bin != null)
			return bin.capacity;
		
		return int.MaxValue;
	}
示例#4
0
	public int GetAmount(SimResource resource)
	{
		SimResourceBin bin = FindBin(resource);
		
		if (bin != null)
			return bin.amount;
		
		return 0;
	}
示例#5
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);
		}
	}
示例#6
0
	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;
	}
示例#7
0
	private SimResourceBin FindOrAddBin(SimResource resource)
	{
		SimResourceBin bin = FindBin(resource);
		
		if (bin == null)
		{
			bin = new SimResourceBin();
			bin.resouce = resource;
			bins.Add(bin);
		}
		
		return bin;
	}
示例#8
0
	public void SetCapacity(SimResource resource, int capacity)
	{
		SimResourceBin bin = FindOrAddBin(resource);
		
		bin.SetCapacity(capacity);
	}
示例#9
0
	public void AddResource(SimResource resource, int amount)
	{
		SimResourceBin bin = FindOrAddBin(resource);
		
		bin.Add(amount);
	}