Esempio n. 1
0
    private CORRIDOR_DIRECTION RandomDirectionBasedOnPreviousRoom(CORRIDOR_DIRECTION previousRoomDirection)
    {
        if (previousRoomDirection == CORRIDOR_DIRECTION.NORTH)
        {
            previousRoomDirection = CORRIDOR_DIRECTION.SOUTH;
        }
        else if (previousRoomDirection == CORRIDOR_DIRECTION.EAST)
        {
            previousRoomDirection = CORRIDOR_DIRECTION.WEST;
        }
        else if (previousRoomDirection == CORRIDOR_DIRECTION.SOUTH)
        {
            previousRoomDirection = CORRIDOR_DIRECTION.NORTH;
        }
        else if (previousRoomDirection == CORRIDOR_DIRECTION.WEST)
        {
            previousRoomDirection = CORRIDOR_DIRECTION.EAST;
        }

        CORRIDOR_DIRECTION nextRoomDirection;

        do
        {
            nextRoomDirection = RandomDirection();
        }while(nextRoomDirection == previousRoomDirection);

        return(nextRoomDirection);
    }
Esempio n. 2
0
 void CalculateNextRoomOffsetPosition(CORRIDOR_DIRECTION previousRoomDirection, int roomWidth, int roomHeight)
 {
     if (previousRoomDirection == CORRIDOR_DIRECTION.NORTH)
     {
         nextRoomOffset += new Vector3(0f, roomWidth * 0.64f, 0f);
     }
     else if (previousRoomDirection == CORRIDOR_DIRECTION.EAST)
     {
         nextRoomOffset += new Vector3(roomWidth * 0.64f, 0f, 0f);
     }
     else if (previousRoomDirection == CORRIDOR_DIRECTION.SOUTH)
     {
         nextRoomOffset += new Vector3(0f, -roomHeight * 0.64f, 0f);
     }
     else if (previousRoomDirection == CORRIDOR_DIRECTION.WEST)
     {
         nextRoomOffset += new Vector3(-roomWidth * 0.64f, 0f, 0f);
     }
     Debug.Log("previousRoomDirection : " + previousRoomDirection + " nextRoomOffset : " + nextRoomOffset);
 }
Esempio n. 3
0
    //Instantiates the outer walls and floor
    void BoardSetup()
    {
        boardHolder = new GameObject("Board").transform;

        int tempNumberOfRooms = numOfRooms.Random;
        CORRIDOR_DIRECTION previousRoomDirection = CORRIDOR_DIRECTION.TOTAL;

        do
        {
            int widthOfRoom  = roomWidth.Random;
            int heightOfRoom = roomHeight.Random;
            CORRIDOR_DIRECTION[] corridorDirection = new CORRIDOR_DIRECTION[4];
            int corridorsToSpawn = noOfCorridors.Random;
            Debug.Log(corridorsToSpawn);

            Transform roomHolder = new GameObject("Room " + tempNumberOfRooms).transform;
            roomHolder.transform.SetParent(boardHolder);

            //nextRoomOffset += new Vector3 (-widthOfRoom/2 * 0.64f, -heightOfRoom/2 * 0.64f, 0f);

            for (int i = 0; i < corridorsToSpawn; i++)
            {
                if (previousRoomDirection == CORRIDOR_DIRECTION.TOTAL)
                {
                    corridorDirection [i] = RandomDirection();
                    Debug.Log(corridorDirection [i]);
                }
                else
                {
                    corridorDirection [i] = RandomDirectionBasedOnPreviousRoom(previousRoomDirection);
                    Debug.Log(corridorDirection [i]);
                }
            }

            for (int x = -1; x < widthOfRoom + 1; x++)
            {
                for (int y = -1; y < heightOfRoom + 1; y++)
                {
                    GameObject toInstantiate = floorTiles [Random.Range(0, floorTiles.Length)];

                    //Outer walls
                    if (y == heightOfRoom)
                    {
                        toInstantiate = outerWallTiles [0];
                    }

                    if (y == -1)
                    {
                        toInstantiate = outerWallTiles [1];
                    }

                    if (x == -1)
                    {
                        toInstantiate = outerWallTiles [2];
                    }

                    if (x == widthOfRoom)
                    {
                        toInstantiate = outerWallTiles [3];
                    }

                    if (x == -1 && y == -1)
                    {
                        toInstantiate = outerWallTiles [6];
                    }

                    if (x == widthOfRoom && y == -1)
                    {
                        toInstantiate = outerWallTiles [7];
                    }

                    if (x == -1 && y == heightOfRoom)
                    {
                        toInstantiate = outerWallTiles [4];
                    }

                    if (x == widthOfRoom && y == heightOfRoom)
                    {
                        toInstantiate = outerWallTiles [5];
                    }



                    GameObject instance = Instantiate(toInstantiate, new Vector3(nextRoomOffset.x + x * 0.64f, nextRoomOffset.y + y * 0.64f, 0f), Quaternion.identity) as GameObject;

                    //Setting the hierarchy for neatness
                    instance.transform.SetParent(roomHolder);
                }
            }

            if (previousRoomDirection == CORRIDOR_DIRECTION.TOTAL)
            {
                spawnPoint = new Vector3(widthOfRoom / 2 * 0.64f, heightOfRoom / 2 * 0.64f, 0f);
            }

            //! HAXXXXX
            previousRoomDirection = corridorDirection[0];

            CalculateNextRoomOffsetPosition(previousRoomDirection, roomWidth.Max, roomHeight.Max);

            tempNumberOfRooms--;
        } while(tempNumberOfRooms > 0);
    }