// 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); } }
// Manage roomsInScene #region public void addNewRoomToScene(GameObject g, RoomSpawnPoint spawn) { // adds Gamoebject to roomsInScene list roomsInScene.Add(g); totalRoomsSoFar++; spawn.setSpawnInactive(); removeFromSpawnList(spawn.gameObject); }
public void spawnDeadEnd(RoomSpawnPoint spawnPoint, List <string> requiredDirs, List <string> avoidedDirs) { if (requiredDirs.Count() != 0) { GameObject roomToSpawn = findDeadEnd(requiredDirs, avoidedDirs); instantiateRoom(roomToSpawn, spawnPoint); } }
// 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); } }
// 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)]); }