public override bool CanReserveFreeSpace(int resourceID, Character character) { return(RequiresEmptying == false && character.Reservation == null && MissingResources.ContainsKey(resourceID) && PendingResources.ContainsKey(character) == false); }
public override bool TransferFromStorage(int resourceID, Character character) { if (ReservedResources.ContainsKey(character) && ReservedResources[character] == resourceID && character.HasResource == false) { ReservedResources.Remove(character); character.AddResource(resourceID); if (MissingResources.ContainsKey(resourceID)) { MissingResources[resourceID] = MissingResources[resourceID] + 1; } else { MissingResources.Add(resourceID, 1); } MissingResourcesCount++; CurrentResourceCount--; Changed = true; return(true); } else { return(false); } }
public override bool ReserveFreeSpace(int resourceID, Character character) { if (CanReserveFreeSpace(resourceID, character)) { MissingResources[resourceID] = MissingResources[resourceID] - 1; if (MissingResources[resourceID] == 0) { MissingResources.Remove(resourceID); } PendingResources.Add(character, resourceID); return(true); } else { return(false); } }
public override bool RemoveFreeSpaceReservation(Character character) { if (PendingResources.ContainsKey(character)) { int resourceID = PendingResources[character]; PendingResources.Remove(character); if (MissingResources.ContainsKey(resourceID)) { MissingResources[resourceID] = MissingResources[resourceID] + 1; } else { MissingResources[resourceID] = 1; } return(true); } else { return(false); } }