示例#1
0
    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);
    }
示例#2
0
    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;
        }
    }