public void AddResources(List <ResourceAmount> resources) { foreach (ResourceAmount resource in resources) { ResourceLibrary.ResourceType resourceName = resource.ResourceType.Type; if (PutResources.ContainsKey(resourceName)) { ResourceAmount amount = PutResources[resourceName]; amount.NumResources += resource.NumResources; } else { ResourceAmount amount = new ResourceAmount(); amount.NumResources += resource.NumResources; amount.ResourceType = resource.ResourceType; PutResources[resourceName] = amount; } } if (MeetsBuildRequirements()) { Build(); } }
public bool IsResourceSatisfied(Resource.ResourceTags name) { int required = GetNumRequiredResources(name); int current = 0; if (PutResources.ContainsKey(name)) { current = (int)PutResources[name].NumResources; } return(current >= required); }
public string GetTextDisplay() { string toReturn = ToBuild.RoomData.Name; foreach (Quantitiy <Resource.ResourceTags> amount in ToBuild.RoomData.RequiredResources.Values) { toReturn += "\n"; int numResource = 0; if (PutResources.ContainsKey(amount.ResourceType)) { numResource = (int)(PutResources[amount.ResourceType].NumResources); } toReturn += amount.ResourceType.ToString() + " : " + numResource + "/" + Math.Max((int)(amount.NumResources * VoxelOrders.Count * 0.25f), 1); } return(toReturn); }
public bool MeetsBuildRequirements() { bool toReturn = true; foreach (Resource.ResourceTags s in ToBuild.RoomData.RequiredResources.Keys) { if (!PutResources.ContainsKey(s)) { return(false); } else { toReturn = toReturn && (PutResources[s].NumResources >= Math.Max((int)(ToBuild.RoomData.RequiredResources[s].NumResources * VoxelOrders.Count * 0.25f), 1)); } } return(toReturn); }
public void AddResources(List <Quantitiy <Resource.ResourceTags> > resources) { foreach (Quantitiy <Resource.ResourceTags> resource in resources) { if (PutResources.ContainsKey(resource.ResourceType)) { Quantitiy <Resource.ResourceTags> amount = PutResources[resource.ResourceType]; amount.NumResources += resource.NumResources; } else { Quantitiy <Resource.ResourceTags> amount = new Quantitiy <Resource.ResourceTags>(); amount.NumResources += resource.NumResources; amount.ResourceType = resource.ResourceType; PutResources[resource.ResourceType] = amount; } } }
public List <Quantitiy <Resource.ResourceTags> > ListRequiredResources() { List <Quantitiy <Resource.ResourceTags> > toReturn = new List <Quantitiy <Resource.ResourceTags> >(); foreach (Resource.ResourceTags s in ToBuild.RoomData.RequiredResources.Keys) { int needed = Math.Max((int)(ToBuild.RoomData.RequiredResources[s].NumResources * VoxelOrders.Count * 0.25f), 1); int currentResources = 0; if (PutResources.ContainsKey(s)) { currentResources = PutResources[s].NumResources; } if (currentResources >= needed) { continue; } toReturn.Add(new Quantitiy <Resource.ResourceTags>(s, needed - currentResources)); } return(toReturn); }