public void TaskProgresing(Type_Worker worker) { if (workerTask.Count > 0) { foreach (var item in workerTask) { switch (item.Value.taskType) { case Task.TaskType.resourceGathering: if (item.Key == worker) { ResourceContainer mainResources = item.Value.taskTarget.GetComponent <ResourceContainer>(); if (mainResources != null) { if (mainResources.balance > 0) { item.Value.taskProgress = (100 / mainResources.maxBalance) * (mainResources.maxBalance - mainResources.balance); } else { item.Value.taskProgress = 100; FinishTask(item.Value); } } } break; } } } }
private void SetWorkerTaskInQueue(Type_Worker freeWorker) { if (!isHasFreeTask()) { return; } Task newTask = taskInQueue.Dequeue(); freeWorker.haveTask = true; workerTask.Add(freeWorker, newTask); freeWorker.SetTask(newTask); }
public void RemoveWorker(Type_Worker worker) { workers.Remove(worker); foreach (var item in workerTask) { if (item.Key == worker) { ChangeWorker(worker); return; } } }
private void ChangeWorker(Type_Worker currentWorker) { Task task = null; foreach (var item in workerTask) { if (item.Key == currentWorker) { task = item.Value; } } workerTask.Remove(currentWorker); AddTask(task); }
private void AddTask(Task newTask) { Type_Worker freeWorker = FindFreeWorker(); if (freeWorker != null) { freeWorker.haveTask = true; workerTask.Add(freeWorker, newTask); freeWorker.SetTask(newTask); } else { taskInQueue.Enqueue(newTask); } }
private void FinishTask(Task task) { Type_Worker worker = null; foreach (var item in workerTask) { if (item.Value == task) { item.Value.isCompleted = true; worker = item.Key; outlineListener.RemoveFromOutline(item.Value.taskTarget); item.Key.RemoveTask(); } } if (worker != null) { workerTask.Remove(worker); } else { Debug.LogError("Can't finish task"); } }
public void AddWorker(Type_Worker worker) { workers.Add(worker); }