示例#1
0
    public static Room[,] AssignRoomTypes(Room[,] dungeon, DungeonDict roomSet)
    {
        for (int iZ = 0; iZ < dungeon.GetLength(1); iZ++)
        {
            for (int iX = 0; iX < dungeon.GetLength(0); iX++)
            {
                // Check for Neighbors
                if (iZ + 1 < dungeon.GetLength(1))          //Check if space above
                {
                    if (dungeon[iX, iZ + 1].isEnabled)      //Check if has room Above
                    {
                        dungeon[iX, iZ].hasRoomUp = true;
                        print("Room " + iX + "," + iZ + " has a neighbor above");
                    }
                }

                if (iZ - 1 >= 0)                            //Check if space below
                {
                    if (dungeon[iX, iZ - 1].isEnabled)      //Check if has room Below
                    {
                        dungeon[iX, iZ].hasRoomDown = true;
                        print("Room " + iX + "," + iZ + " has a neighbor below");
                    }
                }

                if (iX + 1 < dungeon.GetLength(0))          //Check if space right
                {
                    if (dungeon[iX + 1, iZ].isEnabled)      //Check if has room Right
                    {
                        dungeon[iX, iZ].hasRoomRight = true;
                        print("Room " + iX + "," + iZ + " has a neighbor to the right");
                    }
                }

                if (iX - 1 >= 0)                            //Check if space left
                {
                    if (dungeon[iX - 1, iZ].isEnabled)      //Check if has room Left
                    {
                        dungeon[iX, iZ].hasRoomLeft = true;
                        print("Room " + iX + "," + iZ + " has a neighbor to the left");
                    }
                }

                // Assign matching prefab from set
                dungeon[iX, iZ] = SetAsset(dungeon[iX, iZ], roomSet);
            }
        }
        return(dungeon);
    }
示例#2
0
    public static Room SetAsset(Room room, DungeonDict roomSet)
    {
        switch (room.ID)
        {
        case 0:         // Room is Normal

            // Room has 4 Doors
            if (room.hasRoomUp && room.hasRoomRight && room.hasRoomDown && room.hasRoomLeft)
            {
                room.roomAsset = roomSet.GetCenter();
            }

            // Room has 3 Doors
            else if (room.hasRoomUp && room.hasRoomRight && !room.hasRoomDown && room.hasRoomLeft)      //No door Down
            {
                room.roomAsset = roomSet.GetTUp();
            }
            else if (room.hasRoomUp && room.hasRoomRight && room.hasRoomDown && !room.hasRoomLeft)      //No door Left
            {
                room.roomAsset = roomSet.GetTRight();
            }
            else if (!room.hasRoomUp && room.hasRoomRight && room.hasRoomDown && room.hasRoomLeft)      //No Door Up
            {
                room.roomAsset = roomSet.GetTDown();
            }
            else if (room.hasRoomUp && !room.hasRoomRight && room.hasRoomDown && room.hasRoomLeft)      //No Door Right
            {
                room.roomAsset = roomSet.GetTLeft();
            }

            // Room is Corner
            else if (room.hasRoomUp && room.hasRoomRight && !room.hasRoomDown && !room.hasRoomLeft)       //Up and Right
            {
                room.roomAsset = roomSet.GetCornerUpRight();
            }
            else if (room.hasRoomUp && !room.hasRoomRight && !room.hasRoomDown && room.hasRoomLeft)       //Up and Left
            {
                room.roomAsset = roomSet.GetCornerUpLeft();
            }
            else if (!room.hasRoomUp && room.hasRoomRight && room.hasRoomDown && !room.hasRoomLeft)       //Down and Right
            {
                room.roomAsset = roomSet.GetCornerDownRight();
            }
            else if (!room.hasRoomUp && !room.hasRoomRight && room.hasRoomDown && room.hasRoomLeft)       //Down and Left
            {
                room.roomAsset = roomSet.GetCornerDownLeft();
            }

            // Room is Corrior
            else if (!room.hasRoomUp && room.hasRoomRight && !room.hasRoomDown && room.hasRoomLeft)       //Horizontal
            {
                room.roomAsset = roomSet.GetCorridorHorizontal();
            }
            else if (room.hasRoomUp && !room.hasRoomRight && room.hasRoomDown && !room.hasRoomLeft)       //Vertical
            {
                room.roomAsset = roomSet.GetCorridorVertical();
            }

            // Room is Sackgasse
            else if (room.hasRoomUp && !room.hasRoomRight && !room.hasRoomDown && !room.hasRoomLeft)       //Up
            {
                room.roomAsset = roomSet.GetEndUp();
            }
            else if (!room.hasRoomUp && room.hasRoomRight && !room.hasRoomDown && !room.hasRoomLeft)       //Right
            {
                room.roomAsset = roomSet.GetEndRight();
            }
            else if (!room.hasRoomUp && !room.hasRoomRight && room.hasRoomDown && !room.hasRoomLeft)       //Down
            {
                room.roomAsset = roomSet.GetEndDown();
            }
            else if (!room.hasRoomUp && !room.hasRoomRight && !room.hasRoomDown && room.hasRoomLeft)       //Left
            {
                room.roomAsset = roomSet.GetEndLeft();
            }

            // Fallback
            else
            {
                room.roomAsset = roomSet.ErrorRoom;
            }

            break;

        case 1:         // Room is Entrance
            room.roomAsset = roomSet.GetEntrance();
            break;

        case 2:                 // Room is Boss room
            if (room.hasRoomUp) //Up
            {
                room.roomAsset = roomSet.GetBossUp();
            }
            if (room.hasRoomRight)      //Right
            {
                room.roomAsset = roomSet.GetBossRight();
            }
            if (room.hasRoomDown)       //Down
            {
                room.roomAsset = roomSet.GetBossDown();
            }
            if (room.hasRoomLeft)       //Left
            {
                room.roomAsset = roomSet.GetBossLeft();
            }
            break;

        default:
            Debug.LogWarning("Bruh");
            break;
        }

        return(room);
    }