/// <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]); }
/// <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]); }
public Building FindBuildingResourceDrop(Building.Structure buildingType, Resource.ResourceType resourceType) { return(GameManager.instance.FindBuildingResourceDrop(this, buildingType, resourceType)); }
public Building FindBuilding(Building.Structure buildingType) { return(GameManager.instance.FindBuilding(this, buildingType)); }