public void Reserve(Pawn claimant, Job job, LocalTargetInfo target)
 {
     if (!this.IsReservedBy(claimant, target))
     {
         PhysicalInteractionReservation physicalInteractionReservation = new PhysicalInteractionReservation();
         physicalInteractionReservation.target   = target;
         physicalInteractionReservation.claimant = claimant;
         physicalInteractionReservation.job      = job;
         this.reservations.Add(physicalInteractionReservation);
     }
 }
 public Pawn FirstReserverOf(LocalTargetInfo target)
 {
     for (int i = 0; i < this.reservations.Count; i++)
     {
         PhysicalInteractionReservation physicalInteractionReservation = this.reservations[i];
         if (physicalInteractionReservation.target == target)
         {
             return(physicalInteractionReservation.claimant);
         }
     }
     return(null);
 }
 public bool IsReservedBy(Pawn claimant, LocalTargetInfo target)
 {
     for (int i = 0; i < this.reservations.Count; i++)
     {
         PhysicalInteractionReservation physicalInteractionReservation = this.reservations[i];
         if (physicalInteractionReservation.target == target && physicalInteractionReservation.claimant == claimant)
         {
             return(true);
         }
     }
     return(false);
 }
 public void Release(Pawn claimant, Job job, LocalTargetInfo target)
 {
     for (int i = 0; i < this.reservations.Count; i++)
     {
         PhysicalInteractionReservation physicalInteractionReservation = this.reservations[i];
         if (physicalInteractionReservation.target == target && physicalInteractionReservation.claimant == claimant && physicalInteractionReservation.job == job)
         {
             this.reservations.RemoveAt(i);
             return;
         }
     }
     Log.Warning(claimant + " tried to release reservation on target " + target + ", but it's not reserved by him.");
 }