Пример #1
0
        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
                     * );*/
                }
            }
        }
Пример #2
0
        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]);
            }
        }