public CapturableIterator(Instance capture_point, CavityInfo capture_cavity_info, int capture_cell)
 {
     capturePoint      = capture_point;
     captureCavityInfo = capture_cavity_info;
     captureCell       = capture_cell;
     result            = null;
 }
            public void Iterate(object target_obj)
            {
                KMonoBehaviour kMonoBehaviour = target_obj as KMonoBehaviour;

                if (!((UnityEngine.Object)kMonoBehaviour == (UnityEngine.Object)null))
                {
                    FixedCapturableMonitor.Instance sMI = kMonoBehaviour.GetSMI <FixedCapturableMonitor.Instance>();
                    if (sMI != null && CanCapturableBeCapturedAtCapturePoint(sMI, capturePoint, captureCavityInfo, captureCell))
                    {
                        result = sMI;
                    }
                }
            }
        private static bool CanCapturableBeCapturedAtCapturePoint(FixedCapturableMonitor.Instance capturable, Instance capture_point, CavityInfo capture_cavity_info, int capture_cell)
        {
            if (!capturable.IsRunning())
            {
                return(false);
            }
            if (capturable.HasTag(GameTags.Creatures.Bagged))
            {
                return(false);
            }
            if (capturable.targetCapturePoint != capture_point && !capturable.targetCapturePoint.IsNullOrStopped())
            {
                return(false);
            }
            if (capture_point.def.isCreatureEligibleToBeCapturedCb != null && !capture_point.def.isCreatureEligibleToBeCapturedCb(capturable.gameObject, capture_point))
            {
                return(false);
            }
            if (!capturable.GetComponent <ChoreConsumer>().IsChoreEqualOrAboveCurrentChorePriority <FixedCaptureStates>())
            {
                return(false);
            }
            int        cell          = Grid.PosToCell(capturable.transform.GetPosition());
            CavityInfo cavityForCell = Game.Instance.roomProber.GetCavityForCell(cell);

            if (cavityForCell == null || cavityForCell != capture_cavity_info)
            {
                return(false);
            }
            int navigationCost = capturable.GetComponent <Navigator>().GetNavigationCost(capture_cell);

            if (navigationCost == -1)
            {
                return(false);
            }
            TreeFilterable          component  = capture_point.GetComponent <TreeFilterable>();
            IUserControlledCapacity component2 = capture_point.GetComponent <IUserControlledCapacity>();

            if (component.ContainsTag(capturable.GetComponent <KPrefabID>().PrefabTag) && component2.AmountStored <= component2.UserMaxCapacity)
            {
                return(false);
            }
            return(true);
        }