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); }
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); }
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; } } }
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); }