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();
        }
Exemple #2
0
 public void RefreshUI()
 {
     haulButton.interactable = false;
     if (!haulable.currentTask)
     {
         if (haulable.haulTaskPrefab && HaulTask.TaskAvailable(haulable))
         {
             haulButton.interactable = true;
         }
     }
 }
Exemple #3
0
    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);
     }
 }