bool MatchDoors(GameObject roomPrefab, Node node) { /*if (node.roomType != Node.ROOM_TYPE.START && node.roomType != Node.ROOM_TYPE.END) * { // (patch now)*/ if (node.roomType != roomPrefab.GetComponent <Room>().roomType) // check if room matches node type { return(false); } //} var roomDoors = roomPrefab.GetComponent <Room>().connectedDoors; Utils.ORIENTATION orientation = Utils.ORIENTATION.NONE; for (int i = 0; i < 4; i++) { switch (i) { case 0: orientation = Utils.ORIENTATION.NORTH; break; case 1: orientation = Utils.ORIENTATION.SOUTH; break; case 2: orientation = Utils.ORIENTATION.EAST; break; case 3: orientation = Utils.ORIENTATION.WEST; break; } var edge = node.adjacents.SingleOrDefault(y => y.orientation == Utils.OrientationToDir(orientation)); var door = roomDoors.SingleOrDefault(y => y.Orientation == orientation); bool isDoor = door != null && door.State != Door.STATE.WALL; bool isEdge = edge != null && edge.doorState != Door.STATE.WALL; // a strict room needs all the corresponding doors for the edges if (node.roomType != Node.ROOM_TYPE.DEFAULT) { if (isEdge) { if (!isDoor) { return(false); } } } else if (/*node.roomType == Node.ROOM_TYPE.DEFAULT && */ isDoor != isEdge) { return(false); } } return(true); }
public void Start() { _orientation = Utils.AngleToOrientation(-transform.eulerAngles.z); if (closedGo.gameObject.activeSelf) { SetState(STATE.CLOSED); } else if (openGo.gameObject.activeSelf) { SetState(STATE.OPEN); } else if (wallGo.gameObject.activeSelf) { SetState(STATE.WALL); } else if (secretGo.gameObject.activeSelf) { SetState(STATE.SECRET); } }
public void Awake() { _room = GetComponentInParent <Room>(); _orientation = Utils.AngleToOrientation(-transform.eulerAngles.z); }
public void SetOrientation() { _orientation = Utils.AngleToOrientation(-transform.eulerAngles.z); }