private void DetermineBestStartEndPoints() { Room BestStartRoom = null; Room BestEndRoom = null; float LongestDistance = 0; for (int i = 0; i < RoomGroup.transform.childCount; i++) { Room r = RoomGroup.transform.GetChild(i).GetComponent <Room>(); for (int j = i + 1; j < RoomGroup.transform.childCount; j++) { Room r2 = RoomGroup.transform.GetChild(j).GetComponent <Room>(); float dist = Vector2.Distance(new Vector2(r.Xcenter, r.Ycenter), new Vector2(r2.Xcenter, r2.Ycenter)); if (dist > LongestDistance) { BestStartRoom = r; BestEndRoom = r2; LongestDistance = dist; } } } if (RoomGroup.transform.childCount == 1) { BestStartRoom = RoomGroup.transform.GetChild(0).GetComponent <Room>(); BestEndRoom = RoomGroup.transform.GetChild(0).GetComponent <Room>(); } GameObject BestStart = null; GameObject BestEnd = null; List <GameObject> R1Tiles = BestStartRoom.GetFloors(); List <GameObject> R2Tiles = BestEndRoom.GetFloors(); LongestDistance = 0; for (int i = 0; i < R1Tiles.Count; i++) { GameObject o = R1Tiles[i]; for (int j = 0; j < R2Tiles.Count; j++) { GameObject o2 = R2Tiles[j]; float dist = Vector2.Distance(o.transform.position, o2.transform.position); if (dist > LongestDistance) { BestStart = o; BestEnd = o2; LongestDistance = dist; } } } //TODO: add start/end behavior scripts to the selected tiles Player.transform.position = (Vector2)BestStart.transform.position; end = BestEnd.AddComponent <EndTile>(); end.SetPlayer(Player); /*sr = gameObject.AddComponent<SpriteRenderer>(); * sprite = Resources.Load<Sprite>("Enemy"); * sr.sprite = sprite;*/ SpriteRenderer StartSprite = BestStart.GetComponent <SpriteRenderer>(); SpriteRenderer EndSprite = BestEnd.GetComponent <SpriteRenderer>(); Sprite startSprite = Resources.Load <Sprite>("Start"); StartSprite.sprite = startSprite; Sprite endSprite = Resources.Load <Sprite>("Start"); EndSprite.sprite = endSprite; StartSprite.color = new Color(0.75f, 1.0f, 0.75f); EndSprite.color = new Color(1.0f, 0.75f, 0.75f); }