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