public override bool TransferToStorage(int resourceID, Character character) { if (PendingResources.ContainsKey(character) && PendingResources[character] == resourceID && character.Resource == resourceID) { PendingResources.Remove(character); MissingResourcesCount--; CurrentResourceCount++; if (Resources.ContainsKey(resourceID)) { Resources[resourceID] = Resources[resourceID] + 1; } else { Resources[resourceID] = 1; } character.RemoveResource(); character.ReservationUsed(); Changed = true; return(true); } return(false); }
public override bool CanReserveFreeSpace(int resourceID, Character character) { return(RequiresEmptying == false && character.Reservation == null && MissingResources.ContainsKey(resourceID) && PendingResources.ContainsKey(character) == 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); } }