public virtual bool CanReserveFreeSpace(int resourceID, Character character)
 {
     return(RequiresEmptying == false &&
            UnreservedFreeSpace > 0 &&
            FreeSpaceReservations.Contains(character) == false &&
            Building.Prototype.RestrictedResources.Contains(resourceID) == false);
 }
 public virtual bool ReserveFreeSpace(int resourceID, Character character)
 {
     if (CanReserveFreeSpace(resourceID, character))
     {
         FreeSpaceReservations.Add(character);
         return(true);
     }
     else
     {
         return(false);
     }
 }
 public virtual bool RemoveFreeSpaceReservation(Character character)
 {
     if (FreeSpaceReservations.Contains(character))
     {
         FreeSpaceReservations.Remove(character);
         return(true);
     }
     else
     {
         return(false);
     }
 }
 public virtual bool TransferToStorage(int resourceID, Character character)
 {
     if (FreeSpaceReservations.Contains(character) &&
         character.Resource == resourceID)
     {
         FreeSpaceReservations.Remove(character);
         if (Resources.ContainsKey(resourceID))
         {
             Resources[resourceID] = Resources[resourceID] + 1;
         }
         else
         {
             Resources[resourceID] = 1;
         }
         CurrentResourceCount++;
         character.RemoveResource();
         character.ReservationUsed();
         Changed = true;
         return(true);
     }
     return(false);
 }