Example #1
0
    /// <summary>
    /// Used by any character to find a path to a building target
    /// </summary>
    /// <returns>The building.</returns>
    /// <param name="character">Character.</param>
    /// <param name="buildingType">Building type.</param>
    public Building FindBuilding(AI_Character character, Building.Structure buildingType)
    {
        int         num  = -1;
        float       dist = 9999;
        NavMeshPath path = new NavMeshPath();

        for (int i = 0; i < buildingsList.Count; i++)
        {
            if (buildingsList [i].structure != buildingType)
            {
                continue;
            }

            if (!Distance.GetPath(character.transform.position, buildingsList [i].buildingTarget.transform.position, NavMesh.AllAreas, path))
            {
                continue;
            }
            else
            {
                if (Distance.GetPathLength(path) < dist)
                {
                    dist = Distance.GetPathLength(path);
                    num  = i;
                }
            }
        }

        if (num == -1)
        {
            return(null);
        }
        return(buildingsList [num]);
    }
Example #2
0
    /// <summary>
    /// used specifically for dropping off resources at the correcct building
    /// </summary>
    /// <returns>The building resource drop.</returns>
    /// <param name="character">Character requesting path.</param>
    /// <param name="buildingType">Building type.</param>
    /// <param name="resourceType">Resource type.</param>
    public Building FindBuildingResourceDrop(AI_Character character, Building.Structure buildingType, Resource.ResourceType resourceType)
    {
        int         num  = -1;
        float       dist = 9999;
        NavMeshPath path = new NavMeshPath();

        for (int i = 0; i < buildingsList.Count; i++)
        {
            //check for right structure
            if (buildingsList [i].structure != buildingType)
            {
                continue;
            }


            //check for right drop type
            if (buildingsList [i].dropType != Building.ResourceDropType.All && buildingsList [i].dropType.ToString() != resourceType.ToString())
            {
                continue;
            }


            if (!Distance.GetPath(character.transform.position, buildingsList [i].buildingTarget.transform.position, NavMesh.AllAreas, path))
            {
                continue;
            }
            else
            {
                if (Distance.GetPathLength(path) < dist)
                {
                    dist = Distance.GetPathLength(path);
                    num  = i;
                }
            }
        }

        if (num == -1)
        {
            return(null);
        }
        return(buildingsList [num]);
    }
Example #3
0
 public Building FindBuildingResourceDrop(Building.Structure buildingType, Resource.ResourceType resourceType)
 {
     return(GameManager.instance.FindBuildingResourceDrop(this, buildingType, resourceType));
 }
Example #4
0
 public Building FindBuilding(Building.Structure buildingType)
 {
     return(GameManager.instance.FindBuilding(this, buildingType));
 }