예제 #1
0
        public override ThinkNode DeepCopy(bool resolve = true)
        {
            ThinkNode_QueuedJob thinkNode_QueuedJob = (ThinkNode_QueuedJob)base.DeepCopy(resolve);

            thinkNode_QueuedJob.inBedOnly = inBedOnly;
            return(thinkNode_QueuedJob);
        }
예제 #2
0
        public override ThinkNode DeepCopy(bool resolve = true)
        {
            ThinkNode_QueuedJob obj = (ThinkNode_QueuedJob)base.DeepCopy(resolve);

            obj.inBedOnly = inBedOnly;
            return(obj);
        }
예제 #3
0
        public static bool TryIssueJobPackage(ThinkNode_QueuedJob __instance, ref ThinkResult __result, Pawn pawn, JobIssueParams jobParams)
        {
            JobQueue jobQueue = pawn.jobs.jobQueue;

            if (pawn.Downed || jobQueue.AnyCanBeginNow(pawn, __instance.inBedOnly))
            {
                while (jobQueue.Count > 0 && !jobQueue.Peek().job.CanBeginNow(pawn, __instance.inBedOnly))
                {
                    QueuedJob queuedJob = jobQueue.Dequeue();
                    pawn.ClearReservationsForJob(queuedJob.job);
                    if (pawn.jobs.debugLog)
                    {
                        pawn.jobs.DebugLogEvent("   Throwing away queued job that I cannot begin now: " + queuedJob.job);
                    }
                }
            }

            if (jobQueue.Count > 0)
            {
                QueuedJob jqpeek = jobQueue.Peek();
                if (jqpeek != null)
                {
                    if (jqpeek.job.CanBeginNow(pawn, __instance.inBedOnly))
                    {
                        QueuedJob queuedJob2 = jobQueue.Dequeue();
                        if (pawn.jobs.debugLog)
                        {
                            pawn.jobs.DebugLogEvent("   Returning queued job: " + queuedJob2.job);
                        }

                        __result = new ThinkResult(queuedJob2.job, __instance, queuedJob2.tag, fromQueue: true);
                        return(false);
                    }
                }
            }

            __result = ThinkResult.NoJob;
            return(false);
        }