public GameObject FindClosestHarvestableOfType(Inventory.ResourceType targetType, Transform target) { if (target == null) { return(null); } GameObject closestHarvestable = null; float closestDistanceSQ = 100000.0f; for (int i = 0; i < _harvestables.Count; ++i) { if (_harvestables[i] == null) { continue; } if (_harvestables[i].GetComponent <Harvestable>().HarvestableType != targetType) { continue; } float distanceSQ = (_harvestables[i].transform.position - target.position).sqrMagnitude; if (distanceSQ < closestDistanceSQ) { closestDistanceSQ = distanceSQ; closestHarvestable = _harvestables[i]; } } return(closestHarvestable); }
private void GetNewQuestTarget() { GameObject newTarget; Inventory.ResourceType targetType = Inventory.ResourceType.Wood; // get target type for quest if (_currentQ) { switch (_currentQ.QuestType) { case Quest.Type.GatherWood: targetType = Inventory.ResourceType.Wood; break; case Quest.Type.GatherStone: targetType = Inventory.ResourceType.Stone; break; case Quest.Type.GatherFood: targetType = Inventory.ResourceType.Food; break; } } newTarget = InteractableManager.Instance.FindClosestHarvestableOfType(targetType, transform); if (newTarget) { Target = newTarget; SetTarget(newTarget.transform); _currQuestActivity = QuestActivity.onMyWay; } else { _currQuestActivity = QuestActivity.cannotDo; } }