Example #1
0
        public void GenerateWorld(int roomsToCreate)
        {
            //throw new Exception("Create new rooms");
            List <int> Postions;
            int        Tempx = RNG.Next(0, SingleTon.GetRooms().GetLength(0));
            int        Tempy = RNG.Next(0, SingleTon.GetRooms().GetLength(1));
            int        tempPicked;
            bool       FoundASpot;

            SingleTon.GetRooms()[Tempx, Tempy] = new Room(Tempx, Tempy, true, RNG.Next(0, 101));
            SingleTon.SetUpCursor(SingleTon.GetRooms()[Tempx, Tempy]);
            for (int i = 1; i < roomsToCreate; i++)
            {
                Postions = new List <int> {
                    0, 1, 2, 3
                };
                FoundASpot = false;
                for (int x = 0; x < 4; x++)
                {
                    tempPicked = RNG.Next(0, Postions.Count);
                    switch (tempPicked)
                    {
                    case 0:
                        if ((Tempx + 1) < (SingleTon.GetRooms().GetLength(0) - 1) && SingleTon.GetRooms()[(Tempx + 1), Tempy] == null)
                        {
                            Tempx++;
                            SingleTon.GetRooms()[Tempx, Tempy] = new Room(Tempx, Tempy, false, RNG.Next(0, 101));
                            FoundASpot = true;
                        }
                        else
                        {
                            Postions.Remove(tempPicked);
                        }
                        break;

                    case 1:
                        if ((Tempx - 1) > -1 && SingleTon.GetRooms()[(Tempx - 1), Tempy] == null)
                        {
                            Tempx--;
                            SingleTon.GetRooms()[Tempx, Tempy] = new Room(Tempx, Tempy, false, RNG.Next(0, 101));
                            FoundASpot = true;
                        }
                        else
                        {
                            Postions.Remove(tempPicked);
                        }
                        break;

                    case 2:
                        if ((Tempy + 1) < (SingleTon.GetRooms().GetLength(1) - 1) && SingleTon.GetRooms()[Tempx, (Tempy + 1)] == null)
                        {
                            Tempy++;
                            SingleTon.GetRooms()[Tempx, Tempy] = new Room(Tempx, Tempy, false, RNG.Next(0, 101));
                            FoundASpot = true;
                        }
                        else
                        {
                            Postions.Remove(tempPicked);
                        }
                        break;

                    case 3:
                        if ((Tempy - 1) > -1 && SingleTon.GetRooms()[Tempx, (Tempy - 1)] == null)
                        {
                            Tempy--;
                            SingleTon.GetRooms()[Tempx, Tempy] = new Room(Tempx, Tempy, false, RNG.Next(0, 101));
                            FoundASpot = true;
                        }
                        else
                        {
                            Postions.Remove(tempPicked);
                        }
                        break;
                    }
                    if (FoundASpot == true)
                    {
                        break;
                    }
                    else if (x == 3)
                    {
                        if (RNG.Next(0, 101) > 25)
                        {
                            int[] tempHolder = GiveRandomRoomConnected();
                            Tempx = tempHolder[0];
                            Tempy = tempHolder[1];
                        }
                        else
                        {
                            int[] tempHolder = GiveRandomRoom();
                            Tempx = tempHolder[0];
                            Tempy = tempHolder[1];
                            SingleTon.GetRooms()[Tempx, Tempy] = new Room(Tempx, Tempy, false, RNG.Next(0, 101));
                            break;
                        }
                    }
                }
            }
        }