void DrawRooms() { for (int i = Nodes.Count - 1; i >= 0; --i) { Node node = Nodes[i]; RoomPrefabs room = null; room = roomsManager.Find( rnd, node.doors[0] != Door.STATE.WALL, node.doors[1] != Door.STATE.WALL, node.doors[2] != Door.STATE.WALL, node.doors[3] != Door.STATE.WALL, node.ContainKey, node.indice != Indice.Direction.None, node.Start, node.End, node.IsSecret, node.Difficulty ); if (room != null) { creator.CreateRoom(room, node, new Vector2(node.X * Scale.x, node.Y * Scale.y)); } else { Debug.LogError("Can't find room on index " + i, gameObject); /*room = roomsManager.Find( * rnd, * node.doors[0] != Door.STATE.WALL, * node.doors[1] != Door.STATE.WALL, * node.doors[2] != Door.STATE.WALL, * node.doors[3] != Door.STATE.WALL, * node.ContainKey, * node.indice != Indice.Direction.None, * node.Start, * node.End, * node.IsSecret, * node.Difficulty * );*/ } } }
public void CreateRoom(RoomPrefabs room, Node node, Vector2 position) { GameObject roomGo = Instantiate(room.Prefab, new Vector3(position.x, position.y), Quaternion.identity); Room roomScript = roomGo.GetComponent <Room>(); roomScript.position.x = node.X; roomScript.position.y = node.Y; roomScript.isStartRoom = node.Start; roomGo.GetComponentInChildren <Indice>()?.Setup(node.indice); Door[] doors = roomGo.GetComponentsInChildren <Door>(); foreach (Door door in doors) { door.SetOrientation(); int directionIdx = -1; switch (door.Orientation) { case Utils.ORIENTATION.NORTH: directionIdx = 0; break; case Utils.ORIENTATION.EAST: directionIdx = 1; break; case Utils.ORIENTATION.SOUTH: directionIdx = 2; break; case Utils.ORIENTATION.WEST: directionIdx = 3; break; } door.SetState(node.doors[directionIdx]); } }