public bool IsReservedBy(Pawn claimant, IAttackTarget target)
 {
     for (int i = 0; i < reservations.Count; i++)
     {
         AttackTargetReservation attackTargetReservation = reservations[i];
         if (attackTargetReservation.target == target && attackTargetReservation.claimant == claimant)
         {
             return(true);
         }
     }
     return(false);
 }
        private int GetReservationsCount(IAttackTarget target, Faction faction)
        {
            int num = 0;

            for (int i = 0; i < reservations.Count; i++)
            {
                AttackTargetReservation attackTargetReservation = reservations[i];
                if (attackTargetReservation.target == target && attackTargetReservation.claimant.Faction == faction)
                {
                    num++;
                }
            }
            return(num);
        }
 public void Reserve(Pawn claimant, Job job, IAttackTarget target)
 {
     if (target == null)
     {
         Log.Warning(string.Concat(claimant, " tried to reserve null attack target."));
     }
     else if (!IsReservedBy(claimant, target))
     {
         AttackTargetReservation attackTargetReservation = new AttackTargetReservation();
         attackTargetReservation.target   = target;
         attackTargetReservation.claimant = claimant;
         attackTargetReservation.job      = job;
         reservations.Add(attackTargetReservation);
     }
 }
 public static bool ReleaseAllClaimedBy(AttackTargetReservationManager __instance, Pawn claimant)
 {
     lock (reservations(__instance))
     {
         for (int num = reservations(__instance).Count - 1; num >= 0; num--)
         {
             AttackTargetReservation reservation = reservations(__instance)[num];
             if (reservation != null && reservation.claimant == claimant)
             {
                 reservations(__instance).RemoveAt(num);
             }
         }
     }
     return(false);
 }
Beispiel #5
0
        public static bool FirstReservationFor(AttackTargetReservationManager __instance, ref IAttackTarget __result, Pawn claimant)
        {
            List <AttackTargetReservation> snapshotReservations = reservations(__instance);

            for (int i = snapshotReservations.Count - 1; i >= 0; i--)
            {
                AttackTargetReservation reservation = snapshotReservations[i];
                if (reservation.claimant == claimant)
                {
                    __result = reservation.target;
                    return(false);
                }
            }
            __result = null;
            return(false);
        }
        public static bool GetReservationsCount(AttackTargetReservationManager __instance, ref int __result, IAttackTarget target, Faction faction)
        {
            int num = 0;
            List <AttackTargetReservation> snapshotReservations = __instance.reservations;

            for (int i = 0; i < snapshotReservations.Count; i++)
            {
                AttackTargetReservation attackTargetReservation = snapshotReservations[i];
                if (attackTargetReservation.target == target && attackTargetReservation.claimant.Faction == faction)
                {
                    num++;
                }
            }

            __result = num;
            return(false);
        }
Beispiel #7
0
        public static bool IsReservedBy(AttackTargetReservationManager __instance, ref bool __result, Pawn claimant, IAttackTarget target)
        {
            List <AttackTargetReservation> snapshotReservations = reservations(__instance);

            for (int i = 0; i < snapshotReservations.Count; i++)
            {
                AttackTargetReservation attackTargetReservation = snapshotReservations[i];
                if (attackTargetReservation.target == target && attackTargetReservation.claimant == claimant)
                {
                    __result = true;
                    return(false);
                }
            }

            __result = false;
            return(false);
        }
 public void Release(Pawn claimant, Job job, IAttackTarget target)
 {
     if (target == null)
     {
         Log.Warning(string.Concat(claimant, " tried to release reservation on null attack target."));
         return;
     }
     for (int i = 0; i < reservations.Count; i++)
     {
         AttackTargetReservation attackTargetReservation = reservations[i];
         if (attackTargetReservation.target == target && attackTargetReservation.claimant == claimant && attackTargetReservation.job == job)
         {
             reservations.RemoveAt(i);
             return;
         }
     }
     Log.Warning(string.Concat(claimant, " with job ", job, " tried to release reservation on target ", target, ", but it's not reserved by him."));
 }
 public static bool ReleaseAllClaimedBy(AttackTargetReservationManager __instance, Pawn claimant)
 {
     lock (RimThreaded.map_AttackTargetReservationManager_reservations_Lock)
     {
         List <AttackTargetReservation> snapshotReservations        = __instance.reservations;
         List <AttackTargetReservation> newAttackTargetReservations = new List <AttackTargetReservation>(snapshotReservations.Count);
         for (int i = 0; i < snapshotReservations.Count - 1; i++)
         {
             AttackTargetReservation attackTargetReservation = snapshotReservations[i];
             if (attackTargetReservation.claimant != claimant)
             {
                 newAttackTargetReservations.Add(attackTargetReservation);
             }
         }
         __instance.reservations = newAttackTargetReservations;
     }
     return(false);
 }
        private static int GetReservationsCount2(AttackTargetReservationManager __instance, IAttackTarget target, Faction faction)
        {
            int num = 0;

            for (int i = 0; i < reservations(__instance).Count; i++)
            {
                AttackTargetReservation attackTargetReservation = reservations(__instance)[i];
                if (attackTargetReservation != null)
                {
                    if (attackTargetReservation.target == target && attackTargetReservation.claimant != null && attackTargetReservation.claimant.Faction == faction)
                    {
                        num++;
                    }
                }
            }

            return(num);
        }
        public static bool ReleaseAllForTarget(AttackTargetReservationManager __instance, IAttackTarget target)
        {
            List <AttackTargetReservation> attackTargetReservations = reservations(__instance);

            lock (attackTargetReservations)
            {
                for (int i = attackTargetReservations.Count - 1; i >= 0; i--)
                {
                    AttackTargetReservation attackTargetReservation = attackTargetReservations[i];
                    if (attackTargetReservation != null && attackTargetReservation.target == target)
                    {
                        attackTargetReservations.RemoveAt(i);
                    }
                }
            }

            return(false);
        }
Beispiel #12
0
        public static bool ReleaseAllForTarget(AttackTargetReservationManager __instance, IAttackTarget target)
        {
            lock (RimThreaded.map_AttackTargetReservationManager_reservations_Lock)
            {
                List <AttackTargetReservation> snapshotReservations        = reservations(__instance);
                List <AttackTargetReservation> newAttackTargetReservations = new List <AttackTargetReservation>(snapshotReservations.Count);
                for (int i = 0; i < snapshotReservations.Count - 1; i++)
                {
                    AttackTargetReservation attackTargetReservation = snapshotReservations[i];
                    if (attackTargetReservation.target != target)
                    {
                        newAttackTargetReservations.Add(attackTargetReservation);
                    }
                }
                reservations(__instance) = newAttackTargetReservations;
            }

            return(false);
        }
        public void Reserve(AttackTargetReservationManager __instance, Pawn claimant, Job job, IAttackTarget target)
        {
            bool isReservedBy = __instance.IsReservedBy(claimant, target);

            if (target == null)
            {
                Log.Warning(claimant + " tried to reserve null attack target.");
            }
            else if (!isReservedBy)
            {
                AttackTargetReservation attackTargetReservation = new AttackTargetReservation();
                attackTargetReservation.target   = target;
                attackTargetReservation.claimant = claimant;
                attackTargetReservation.job      = job;
                lock (reservations(__instance))
                {
                    reservations(__instance).Add(attackTargetReservation);
                }
            }
        }
Beispiel #14
0
 public void Release(Pawn claimant, Job job, IAttackTarget target)
 {
     if (target == null)
     {
         Log.Warning(claimant + " tried to release reservation on null attack target.");
     }
     else
     {
         for (int i = 0; i < this.reservations.Count; i++)
         {
             AttackTargetReservation attackTargetReservation = this.reservations[i];
             if (attackTargetReservation.target == target && attackTargetReservation.claimant == claimant && attackTargetReservation.job == job)
             {
                 this.reservations.RemoveAt(i);
                 return;
             }
         }
         Log.Warning(claimant + " with job " + job + " tried to release reservation on target " + target + ", but it's not reserved by him.");
     }
 }
 public static bool Reserve(AttackTargetReservationManager __instance, Pawn claimant, Job job, IAttackTarget target)
 {
     if (target == null)
     {
         Log.Warning(string.Concat(claimant, " tried to reserve null attack target."));
     }
     else if (!__instance.IsReservedBy(claimant, target))
     {
         AttackTargetReservation attackTargetReservation = new AttackTargetReservation
         {
             target   = target,
             claimant = claimant,
             job      = job
         };
         lock (RimThreaded.map_AttackTargetReservationManager_reservations_Lock)
         {
             __instance.reservations = new List <AttackTargetReservation>(__instance.reservations)
             {
                 attackTargetReservation
             };
         }
     }
     return(false);
 }