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);
        }
    }