Example #1
0
 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);
        }
    }