private static bool CanReserveInt(PawnDestinationReservationManager __instance, IntVec3 c, Faction faction, Pawn ignoreClaimant = null, bool draftedOnly = false) { if (faction == null) { return(true); } PawnDestinationSet pawnDestinationSet = null; GetPawnDestinationSetFor(__instance, ref pawnDestinationSet, faction); List <PawnDestinationReservation> list = pawnDestinationSet.list; for (int i = 0; i < list.Count; i++) { if (null != list[i]) { if (null != list[i].claimant) { if (list[i].target == c && ( ignoreClaimant == null || list[i].claimant != ignoreClaimant) && (!draftedOnly || list[i].claimant.Drafted)) { return(false); } } } } return(true); }
public static bool GetPawnDestinationSetFor(PawnDestinationReservationManager __instance, ref PawnDestinationSet __result, Faction faction) { PawnDestinationSet value = reservedDestinations.GetOrAdd(faction, new PawnDestinationSet()); __result = value; return(false); }
public static bool FirstObsoleteReservationFor(PawnDestinationReservationManager __instance, ref IntVec3 __result, Pawn p) { if (p.Faction == null) { __result = IntVec3.Invalid; return(false); } PawnDestinationSet pawnDestinationSet = null; GetPawnDestinationSetFor(__instance, ref pawnDestinationSet, p.Faction); List <PawnDestinationReservation> list = pawnDestinationSet.list; PawnDestinationReservation pawnDestinationReservation; for (int i = 0; i < list.Count; i++) { try { pawnDestinationReservation = list[i]; } catch (ArgumentException) { break; } if (null != pawnDestinationReservation) { if (pawnDestinationReservation.claimant == p && pawnDestinationReservation.obsolete) { __result = pawnDestinationReservation.target; return(false); } } } __result = IntVec3.Invalid; return(false); }
public static bool GetPawnDestinationSetFor(PawnDestinationReservationManager __instance, ref PawnDestinationSet __result, Faction faction) { lock (__instance) { if (!__instance.reservedDestinations.TryGetValue(faction, out PawnDestinationSet value)) { value = new PawnDestinationSet(); __instance.reservedDestinations.Add(faction, value); } __result = value; } return(false); }