public void SolveJob(PositionedJob job) { if (Jobs[(int)job.Position.x, (int)job.Position.y, (int)job.Position.z] != null) { Jobs[(int)job.Position.x, (int)job.Position.y, (int)job.Position.z].Remove(job); } }
public void Update(float dTime) { if (Stage == 0) { if (!JobController.Instance.HasJob(Position + Vector3.up, "PlantCrop")) { _currentJob = new PlantCropJob(this); JobController.Instance.AddJob(_currentJob); } } else { TimeToGrow -= dTime; if (TimeToGrow <= 0 && Stage < Type.GrowStages.Count) { Stage += 1; if (Stage == Type.GrowStages.Count) { if (!JobController.Instance.HasJob(Position + Vector3.up, "HarvestCrop")) { _currentJob = new HarvestCropJob(this); JobController.Instance.AddJob(_currentJob); } } } } }
public void AddJob(PositionedJob job) { if (Jobs == null) { if (!Map.Instance.IsDoneGenerating) { return; } Jobs = new List <PositionedJob> [Map.Instance.MapData.Chunks.GetLength(0) * Chunk.ChunkSize, Map.Instance.MapData.Chunks.GetLength(1) * Chunk.ChunkSize, Map.Instance.MapData.Chunks.GetLength(2) * Chunk.ChunkSize]; } if (!OpenJobs.ContainsKey(job.GetJobType())) { OpenJobs.Add(job.GetJobType(), new PriorityQueue <PositionedJob>()); } OpenJobs[job.GetJobType()].Enqueue(job, 1); if (Jobs[(int)job.Position.x, (int)job.Position.y, (int)job.Position.z] == null) { Jobs[(int)job.Position.x, (int)job.Position.y, (int)job.Position.z] = new List <PositionedJob>(); } Jobs[(int)job.Position.x, (int)job.Position.y, (int)job.Position.z].Add(job); }
public void AcceptJob(PositionedJob job) { OpenJobs[job.GetJobType()].Dequeue(job); }