示例#1
0
    // Spawning of rooms.
    public void pickHowToSpawnRoom(RoomSpawnPoint spawnPoint)
    {
        // Selects whether room should be selected from list or be a dead end.

        List <string> doorsRequired = new List <string>();
        List <string> doorsAvoided  = new List <string>();

        string direction = spawnPoint.spawnDirection;


        // Check sensors to see if any doors are needed.
        foreach (RoomSpawnSensor sensor in spawnPoint.GetComponentsInChildren <RoomSpawnSensor>())
        {
            if (sensor.checkRoomWasFound() && sensor.checkMustHave())
            {
                doorsRequired.Add(sensor.getRequiredDoorDir());
            }
            if (sensor.checkRoomWasFound() && sensor.checkMustNot())
            {
                doorsAvoided.Add(sensor.getRequiredDoorDir());
            }
        }

        if (totalRoomsSoFar + openPaths >= maximumRooms)
        {
            spawnDeadEnd(spawnPoint, doorsRequired, doorsAvoided);
        }
        else if (totalRoomsSoFar + openPaths < maximumRooms)
        {
            spawnRoomFromList(spawnPoint, doorsRequired, doorsAvoided);
        }
    }
示例#2
0
    // Manage roomsInScene

    #region
    public void addNewRoomToScene(GameObject g, RoomSpawnPoint spawn)
    {
        // adds Gamoebject to roomsInScene list
        roomsInScene.Add(g);
        totalRoomsSoFar++;
        spawn.setSpawnInactive();
        removeFromSpawnList(spawn.gameObject);
    }
示例#3
0
    public void spawnDeadEnd(RoomSpawnPoint spawnPoint, List <string> requiredDirs, List <string> avoidedDirs)
    {
        if (requiredDirs.Count() != 0)
        {
            GameObject roomToSpawn = findDeadEnd(requiredDirs, avoidedDirs);

            instantiateRoom(roomToSpawn, spawnPoint);
        }
    }
示例#4
0
    // Instantiates room at spawn position, and adds to roomList.
    public void instantiateRoom(GameObject room, RoomSpawnPoint spawn)
    {
        if (room && spawn)
        {
            Vector3 tempTransform = spawn.transform.position;

            // Spawn said room at that pos.
            GameObject newRoom = Instantiate(room, tempTransform, startRot);

            addNewRoomToScene(newRoom.gameObject, spawn);
        }
    }
示例#5
0
    // Spawns in a random room at the given point.
    // Room must be selected from correct list so doors align.
    public void spawnRoomFromList(RoomSpawnPoint spawnPoint, List <string> requiredDirs, List <string> avoidedDirs)
    {
        GameObject roomToSpawn = null;

        List <GameObject> roomsToChooseFrom = populateTempRoomList(requiredDirs, avoidedDirs);

        int index = Random.Range(0, roomsToChooseFrom.Count - 1);

        roomToSpawn = roomsToChooseFrom[index];

        instantiateRoom(roomToSpawn, spawnPoint);
    }
    private GameObject FindCompatibleRoom(RoomSpawnPoint spawnPoint)
    {
        var availableRoomTypes = _roomTypes.Where(spawnPoint.IsRoomCompatible).ToArray();

        return(availableRoomTypes[_random.Next(availableRoomTypes.Length)]);
    }