public IEnumerator haul_task() { Human human = CreateHuman(); Vector2Int itemSpawnPosition = _spawnPosition + new Vector2Int(-10, 0); Vector2Int targetPosition = _spawnPosition - new Vector2Int(-10, 0); WoodLog item = Factory.Create <WoodLog>("wood log", itemSpawnPosition); Task task = new HaulTask(item, targetPosition, human.MotionComponent, human.InventoryComponent); yield return(AddTaskAndWaitUntilFinished(task, human.CommandProcessor)); //test inventory if (human.InventoryComponent.HasItem(item) == true) { Assert.Fail(); } //test item position if (item.Position != targetPosition) { Assert.Fail(); } human.Die(); item.Destroy(); Assert.Pass(); }
public void RefreshUI() { haulButton.interactable = false; if (!haulable.currentTask) { if (haulable.haulTaskPrefab && HaulTask.TaskAvailable(haulable)) { haulButton.interactable = true; } } }
protected override void PlanJob() { _task = new HaulTask(_item, _destinationPosition, _worker.MotionComponent, _worker.Inventory); _worker.CommandProcessor.AddTask(_task); _task.ResultHandler += OnJobFinish; StockpilePart part = Utils.TileAt(_destinationNode.Position).Contents.StockpilePart; if (part != null) { JobResultHandler += part.HaulJobResultHandler; } }
public override void Execute(ref uint workAmount) { if (!isValid) { foreach (ResourceAndAmount ra in constructionObject.constructionMaterials) { HaulTask haul = new HaulTask("Haul " + ra.resourceId.ToString(), constructionMaterialsBox, ra.resourceId, 10); haul.TaskFailedHandler += OnFailure; taskPrqQueue.Enqueue(haul); } taskPrqQueue.Enqueue(new GoToTask(" ", this.TaskLocation)); taskPrqQueue.Enqueue(new TimedTask(constructionObject.constructionTimeCost, this.TaskLocation, "Build " + constructionObject.buildingName)); isValid = true; } else { base.Execute(ref workAmount); } }