RoomIdentity GenerateSingleRoom(bool firstRoom) { //Skeleton structure GameObject room = new GameObject(); room.transform.position = Vector3.forward * -20; room.name = "room"; RoomIdentity roomIdentity = room.AddComponent <RoomIdentity> (); roomIdentity.gmref = room; //Room Dimension Generation int roomWidth = Mathf.CeilToInt(Random.value * (_minMaxRoomTileSize.y - _minMaxRoomTileSize.x)); int roomHeight = Mathf.CeilToInt(Random.value * (_minMaxRoomTileSize.y - _minMaxRoomTileSize.x)); //Floor GameObject floor = Instantiate(_floor, Vector3.zero, Quaternion.identity, room.transform); floor.transform.localPosition = Vector3.zero; RoomGeography floorScript = floor.GetComponent <RoomGeography> (); floorScript.SetSprite(_floorSprite); floorScript.SetSize(new Vector3(roomWidth * _tileSize, roomHeight * _tileSize)); //Walls MakeWall(roomWidth * _tileSize, 0, ((roomHeight * _tileSize) / 2) + _tileSize / 2, 0, room); MakeWall(roomHeight * _tileSize, ((-roomWidth * _tileSize) / 2) - _tileSize / 2, 0, 90, room); MakeWall(roomWidth * _tileSize, 0, ((-roomHeight * _tileSize) / 2) - _tileSize / 2, 180, room); MakeWall(roomHeight * _tileSize, ((roomWidth * _tileSize) / 2) + _tileSize / 2, 0, -90, room); //Corners MakeCorner(((roomWidth * _tileSize) / 2) + _tileSize / 2, ((roomHeight * _tileSize) / 2) + _tileSize / 2, -90, room); MakeCorner(((-roomWidth * _tileSize) / 2) - _tileSize / 2, ((-roomHeight * _tileSize) / 2) - _tileSize / 2, 90, room); MakeCorner(((-roomWidth * _tileSize) / 2) - _tileSize / 2, ((roomHeight * _tileSize) / 2) + _tileSize / 2, 0, room); MakeCorner(((roomWidth * _tileSize) / 2) + _tileSize / 2, ((-roomHeight * _tileSize) / 2) - _tileSize / 2, 180, room); //Let the room generate its content roomIdentity.GenerateContent(); return(roomIdentity); }
void GenerateFirstRoom() { RoomIdentity room = GenerateSingleRoom(true); room.gmref.transform.position = Vector3.zero; }