public Vector3 getFaceMotion(BuildCity.Pixel targetPix, GameObject target, BuildCity _city) { Vector3 delta = new Vector3(); Vector3 output = new Vector3(0, 0, 0); var closest = _city.FindClosestStreetPixel(targetPix); delta = closest.DisplayBuilding.transform.position - target.transform.position; var x = delta.x; var z = delta.z; var normalizedX = x / Mathf.Abs(x); var normalizedZ = z / Mathf.Abs(z); if (Mathf.Abs(x) > Mathf.Abs(z)) { var trans = target.transform.localScale.x * normalizedX; output = new Vector3(trans, 0, 0); } else { var trans = target.transform.localScale.z * normalizedZ; output = new Vector3(0, 0, trans); } return(output); }
public List <Pixel> neighborBlocks(BuildCity.Pixel active) { List <Pixel> outputBlocks = new List <Pixel>(); var neighbors = active.getAllNeighbors(mapPixels, mapWidth, mapHeight, active.Position.x, active.Position.z); foreach (var n in neighbors) { if (!n.IsActive) { outputBlocks.Add(n); } } return(outputBlocks); }
//Generates structures to which fleet needs to attend to. //Various instances of this class area consumed in BuildCity. public Job(BuildCity city) { this.city = city; _graph = city.army.graph; indices = new List <Vector3Int>(); initIndicesCount = 0; plot = new BuildCity.Pixel(city); size = new float(); payout = new float(); timeReq = new float(); completed = false; timeUp = false; pursue = false; abort = false; timeExpire = new float(); Init(out streets, out targetBuilding); InstObj(); name = plot.Name + string.Format("{0}", bldgIndex); timeCreate = Time.realtimeSinceStartup; timeExpire = timeCreate + 150.0f; timePassed = timeCreate; }
public GameObject PickBuilding(out BuildCity.Pixel plot, out int index) { Pixel buildingNew = new Pixel(this); GameObject GO = null; index = new int(); bool selected = false; while (selected == false) { int r1 = Random.Range(0, mapHeight); int r2 = Random.Range(0, mapWidth); if (mapPixels[r1, r2].IsActive == false && mapPixels[r1, r2].HasStreet) { if (mapPixels[r1, r2].HQNotNeighbour(mapPixels, mapWidth, mapHeight, r1, r2)) { var proxy = mapPixels[r1, r2].DisplayBuilding; var proxyCount = proxy.transform.childCount; if (proxyCount >= 2) { selected = true; buildingNew = mapPixels[r1, r2]; } } } } plot = buildingNew; var closestStreet = FindClosestStreetPixel(buildingNew); var selectedGo = buildingNew.DisplayBuilding; var goPos = buildingNew.WorldPosition; var childCount = selectedGo.transform.childCount; var tempGO = new List <GOScore>(); //gameobject within pixel if (childCount > 3) { for (int i = 0; i < childCount; i++) { if (i != 0) { var bldg = selectedGo.transform.GetChild(i).gameObject; var _index = bldg.transform.GetSiblingIndex(); var modPos = bldg.transform.localPosition + goPos; var score = Vector3.Distance(modPos, closestStreet.WorldPosition); tempGO.Add(new GOScore(bldg, score, _index)); } } var sortedTemp = tempGO.OrderBy(s => s.score).ToList(); var selTemp = sortedTemp[0].GO; GO = selTemp; index = sortedTemp[0].index; } else if (childCount == 3) { for (int i = 0; i < childCount; i++) { if (i != 0) { var bldg = selectedGo.transform.GetChild(i).gameObject; var _index = bldg.transform.GetSiblingIndex(); var modPos = bldg.transform.localPosition + goPos; var score = Vector3.Distance(modPos, closestStreet.WorldPosition); tempGO.Add(new GOScore(bldg, score, _index)); } } var sortedTemp = tempGO.OrderBy(s => s.score).ToList(); var selTemp = sortedTemp[0].GO; GO = selTemp; index = sortedTemp[0].index; } return(GO); }
public PixelScore(BuildCity.Pixel pixel, float score) { this.pixel = pixel; this.score = score; }