Ejemplo n.º 1
0
        private void FillPathInBlueprintRoom(Room room, Path path, int axis, int direction)
        {
            Vector2Int    pathDirection  = new Vector2Int((axis ^ 1), axis) * direction;
            BluePrintRoom bRoom          = room as BluePrintRoom;
            Vector2Int    pathStartPoint = pathDirection.x + pathDirection.y < 0 ? path.position : path.position + (path.GetSize() - Vector2Int.one) * new Vector2Int(axis ^ 1, axis);

            bool       setPath = false;
            int        iterator = 1;
            Vector2Int pos = Vector2Int.zero, blueprintIndex;

            do
            {
                setPath = false;
                for (int i = 0; i < pathWidth; i++)
                {
                    pos            = pathStartPoint + pathDirection * iterator + new Vector2Int(axis, axis ^ 1) * i;
                    blueprintIndex = pos - bRoom.position;
                    if (!bRoom.GetBlueprintPixel(blueprintIndex.x, blueprintIndex.y))
                    {
                        setPath = true;
                    }
                }
                iterator++;
            } while (setPath);

            if (pathDirection.x + pathDirection.y < 0)
            {
                path.size += new Vector2Int((axis ^ 1), axis) * (iterator - 1);
                path.SetPosition(path.position + pathDirection * (iterator - 1));
            }
            else
            {
                path.size += (pathDirection * (iterator - 1));
            }
        }
Ejemplo n.º 2
0
        Room GenerateRoom()
        {
            Room newRoom;

            if (useNormalRooms && Random.Range(0, 1f) <= normalRoomProbability)
            {
                int sizeX = Random.Range(roomDimensionX.x, roomDimensionX.y);
                int sizeY = Random.Range(roomDimensionY.x, roomDimensionY.y);
                newRoom = new Room(new Vector2Int(sizeX, sizeY));
            }
            else
            {
                int rng = Random.Range(0, roomLookup.Count);
                newRoom = new BluePrintRoom(Vector2Int.one, roomBlueprints[roomLookup[rng]].roomBluePrint, roomBlueprints[roomLookup[rng]].randomRotaion);
            }
            return(newRoom);
        }