public static bool UpdateReservationAndWorker(this CompConditionalPostDraw comp)
        {
            bool DoHaveReservation = comp.UpdateReservation();

            comp.UpdateWorker();
            Tools.Warn(comp.parent.LabelShort + " >> reservation: " + DoHaveReservation + " worker: " + comp.Worker?.LabelShort, comp.MyDebug);
            return(DoHaveReservation);
        }
        public static void MaybeUpdateReservations(this CompConditionalPostDraw comp)
        {
            if (!comp.RequiresReservationUpdate || !comp.IsTimeToUpdate)
            {
                return;
            }

            comp.UpdateReservationAndWorker();
        }
        public static bool UpdateReservation(this CompConditionalPostDraw comp)
        {
            comp.reservations = comp.parent.Map.reservationManager.ReservationsReadOnly.Where(
                r =>
                r.Target == new LocalTargetInfo(comp.parent) &&
                r.Faction == Faction.OfPlayer
                );

            return(comp.IsReserved);
        }
        public static bool ReservationIsItemCompatible(this CompConditionalPostDraw comp)
        {
            if (!comp.CurCondition.HasWorkCondition || !comp.IsReserved || comp.FirstReservation == null)
            {
                return(false);
            }

            ReservationManager.Reservation resItem = comp.FirstReservation;

            if (comp.CurCondition.ifWork.HasIncludedJob)
            {
                if (!comp.CurCondition.ifWork.includeJob.Contains(resItem.Job.def))
                {
                    return(false);
                }
            }

            if (comp.CurCondition.ifWork.HasExcludedJob)
            {
                if (!comp.CurCondition.ifWork.excludeJob.Contains(resItem.Job.def))
                {
                    return(false);
                }
            }

            if (comp.CurCondition.ifWork.HasIncludedRecipe && resItem.Job.RecipeDef != null)
            {
                if (comp.CurCondition.ifWork.includeRecipe.Contains(resItem.Job.RecipeDef))
                {
                    return(false);
                }
            }

            if (comp.CurCondition.ifWork.HasExcludedRecipe && resItem.Job.RecipeDef != null)
            {
                if (!comp.CurCondition.ifWork.excludeRecipe.Contains(resItem.Job.RecipeDef))
                {
                    return(false);
                }
            }

            return(true);
        }
Esempio n. 5
0
        public static void StartSound(this CompConditionalPostDraw comp)
        {
            if (comp.parent.Negligeable())
            {
                return;
            }

            if (comp.TriggersSoundActivityOnStart && !comp.CurMaterialTracer.Displayed)
            {
                if (comp.CurPostDrawTask.soundMaterialPool.HasStartSound)
                {
                    comp.CurPostDrawTask.soundMaterialPool.soundOnStart.PlayOneShot(new TargetInfo(comp.parent.Position, comp.parent.Map));
                }

                if (comp.CurPostDrawTask.soundMaterialPool.HasSustainSound)
                {
                    comp.CurMaterialTracer.sustainer = comp.CurPostDrawTask.soundMaterialPool.soundSustain.TrySpawnSustainer(new TargetInfo(comp.parent.Position, comp.parent.Map));
                }
            }
        }
Esempio n. 6
0
        public static void StopSound(this CompConditionalPostDraw comp)
        {
            if (comp.parent.Negligeable())
            {
                return;
            }

            if (comp.TriggersSoundActivityOnStop && comp.CurMaterialTracer.Displayed)
            {
                if (comp.CurPostDrawTask.soundMaterialPool.HasStopSound)
                {
                    comp.CurPostDrawTask.soundMaterialPool.soundOnStop.PlayOneShot(new TargetInfo(comp.parent.Position, comp.parent.Map));
                }

                if (comp.CurPostDrawTask.soundMaterialPool.HasSustainSound)
                {
                    if (comp.CurMaterialTracer.sustainer != null)
                    {
                        comp.CurMaterialTracer.sustainer.End();
                        comp.CurMaterialTracer.sustainer = null;
                    }
                }
            }
        }
 public static bool UpdateWorker(this CompConditionalPostDraw comp)
 {
     comp.Worker = comp.IsReserved ? comp.FirstReservation.Claimant : null;
     return(comp.HasWorker);
 }