private static bool Prefix(JobOverview jobOverview, PrinterController ___bookletPrinter)
 {
     if (NetworkManager.IsClient())
     {
         if (jobOverview.job.State == DV.Logic.Job.JobState.Available && !SingletonBehaviour <NetworkJobsManager> .Instance.IsAllowedToTakeJob(jobOverview.job.ID))
         {
             ___bookletPrinter.PlayErrorSound();
             jobOverview.DestroyJobOverview();
             return(false);
         }
     }
     return(true);
 }
Exemplo n.º 2
0
        public void Case1()
        {
            // Arrange
            var instructions =
                "Step C must be finished before step A can begin.;Step C must be finished before step F can begin.;Step A must be finished before step B can begin.;Step A must be finished before step D can begin.;Step B must be finished before step E can begin.;Step D must be finished before step E can begin.;Step F must be finished before step E can begin."
                .Split(';')
                .Select(i => new Instruction(i))
                .ToList();
            var jobOverview = new JobOverview(new InstructionReader(instructions).AllJobs);

            // Act
            jobOverview.Execute(out var sequence);

            // Assert
            Assert.Equal("CABDFE", sequence);
        }
Exemplo n.º 3
0
        static void OnItemGrabbedRight(InventoryItemSpec iis)
        {
            if (iis == null)
            {
                return;
            }
            // mod.Logger.Log(string.Format("Picked up a(n) {0} in the right hand.", iis.itemName));
            JobOverview jo = iis.GetComponent <JobOverview>();

            if (jo != null)
            {
                holdingRight = new JobDispatch(jo.job);
                showing      = false;
            }
            else
            {
                JobBooklet jb = iis.GetComponent <JobBooklet>();
                if (jb != null)
                {
                    holdingRight = new JobDispatch(jb.job);
                    showing      = false;
                }
            }
        }
Exemplo n.º 4
0
        private static bool Prefix(StationController __instance, StationJobGenerationRange ___stationRange, Station ___logicStation, ref bool ___attemptJobOverviewGeneration, ref bool ___playerEnteredJobGenerationZone, ref HashSet <Job> ___processedNewJobs, ref List <JobOverview> ___spawnedJobOverviews, PointOnPlane ___jobBookletSpawnSurface)
        {
            if (NetworkManager.IsClient())
            {
                if (___logicStation == null || !SaveLoadController.carsAndJobsLoadingFinished)
                {
                    return(false);
                }
                if (___stationRange.IsPlayerInRangeForBookletGeneration(___stationRange.PlayerSqrDistanceFromStationOffice) && ___attemptJobOverviewGeneration)
                {
                    for (int i = 0; i < ___logicStation.availableJobs.Count; i++)
                    {
                        Job job = ___logicStation.availableJobs[i];
                        if (!___processedNewJobs.Contains(job))
                        {
                            PointOnPlane pointOnPlane = ___jobBookletSpawnSurface;
                            ValueTuple <Vector3, Quaternion> valueTuple = (pointOnPlane != null) ? pointOnPlane.GetRandomPointWithRotationOnPlane() : new ValueTuple <Vector3, Quaternion>(__instance.transform.position, __instance.transform.rotation);
                            Transform   parent = SingletonBehaviour <WorldMover> .Exists ? SingletonBehaviour <WorldMover> .Instance.originShiftParent : null;
                            JobOverview item   = BookletCreator.CreateJobOverview(job, valueTuple.Item1, valueTuple.Item2, parent);
                            ___spawnedJobOverviews.Add(item);
                            ___processedNewJobs.Add(job);
                        }
                    }
                    ___attemptJobOverviewGeneration = false;
                }


                if (NetworkManager.IsHost() && SingletonBehaviour <NetworkPlayerManager> .Exists && SingletonBehaviour <NetworkPlayerManager> .Instance.IsSynced && SingletonBehaviour <NetworkJobsManager> .Exists)
                {
                    if (SingletonBehaviour <NetworkPlayerManager> .Instance.newPlayerConnecting)
                    {
                        return(false);
                    }

                    float playerSqrDistanceFromStationCenter = ___stationRange.PlayerSqrDistanceFromStationCenter;
                    bool  isHostInGenerationZone             = ___stationRange.IsPlayerInJobGenerationZone(playerSqrDistanceFromStationCenter);
                    if (isHostInGenerationZone && !___playerEnteredJobGenerationZone)
                    {
                        Main.Log("Generating jobs because host is in area");
                        __instance.ProceduralJobsController.TryToGenerateJobs();
                        ___playerEnteredJobGenerationZone = true;
                    }
                    else if (!isHostInGenerationZone && !___playerEnteredJobGenerationZone)
                    {
                        if (SingletonBehaviour <NetworkPlayerManager> .Instance.GetPlayers().Any(p => ___stationRange.IsPlayerInJobGenerationZone((p.transform.position - ___stationRange.stationCenterAnchor.position).sqrMagnitude)))
                        {
                            Main.Log("Generating jobs because a client is in area");
                            __instance.ProceduralJobsController.TryToGenerateJobs();
                            ___playerEnteredJobGenerationZone = true;
                        }
                    }
                    else if (___playerEnteredJobGenerationZone)
                    {
                        if (SingletonBehaviour <NetworkPlayerManager> .Instance.GetPlayers().All(p => !___stationRange.IsPlayerInJobGenerationZone((p.transform.position - ___stationRange.stationCenterAnchor.position).sqrMagnitude)) && !isHostInGenerationZone)
                        {
                            ___playerEnteredJobGenerationZone = false;
                            Main.Log("No one in area reseting generation flag");
                            SingletonBehaviour <NetworkJobsManager> .Instance.ExpireJobsUnTakenInStation(__instance);

                            SingletonBehaviour <NetworkJobsManager> .Instance.SendJobsExpirationInStation(__instance.logicStation.ID);
                        }
                    }
                }
                return(false);
            }
            return(true);
        }