private void Awake() { instance = this; }
// Start is called before the first frame update void Start() { Instantiate(layoutRoom, generatorPoint.position, generatorPoint.rotation).GetComponent <SpriteRenderer>().color = startColor; selectedDirection = (Direction)Random.Range(0, 4); MoveGenerationPoint(); for (int i = 0; i < distanceToEnd; i++) { GameObject newRoom = Instantiate(layoutRoom, generatorPoint.position, generatorPoint.rotation); layoutRoomObjects.Add(newRoom); if (i + 1 == distanceToEnd) { newRoom.GetComponent <SpriteRenderer>().color = endColor; layoutRoomObjects.RemoveAt(layoutRoomObjects.Count - 1); endRoom = newRoom; } selectedDirection = (Direction)Random.Range(0, 4); MoveGenerationPoint(); while (Physics2D.OverlapCircle(generatorPoint.position, .2f, whatIsRoom)) { MoveGenerationPoint(); } } //create room outlines CreateRoomOutline(Vector3.zero); foreach (GameObject room in layoutRoomObjects) { CreateRoomOutline(room.transform.position); } CreateRoomOutline(endRoom.transform.position); foreach (GameObject outline in generatedOutlines) { bool generateCentre = true; if (outline.transform.position == Vector3.zero) { Instantiate(centreStart, outline.transform.position, transform.rotation).theRoom = outline.GetComponent <Room>(); allRooms.Add(centreStart); generateCentre = false; } if (outline.transform.position == endRoom.transform.position) { Instantiate(centreEnd, outline.transform.position, transform.rotation).theRoom = outline.GetComponent <Room>(); allRooms.Add(centreEnd); generateCentre = false; } if (generateCentre) { int centreSelect = Random.Range(0, potentialCentres.Length); currentRoom = potentialCentres[centreSelect]; allRooms.Add(currentRoom); Instantiate(currentRoom, outline.transform.position, transform.rotation).theRoom = outline.GetComponent <Room>(); } } //iterate through all rooms in level and sum up number of enemies for (int room = 0; room < allRooms.Count; room++) { numEnemiesInLevel = numEnemiesInLevel + (allRooms[room].GetComponent <RoomCentre>().enemies.Count); } }