Exemplo n.º 1
0
 private void button_save_image_Click(object sender, EventArgs e)
 {
     if (RoomMaker.checkValid())
     {
         Bitmap bmp = new Bitmap(panel_canvas.Width, panel_canvas.Height);
         panel_canvas.DrawToBitmap(bmp, new Rectangle(0, 0, panel_canvas.Width, panel_canvas.Height));
         saveFileDialog1.Filter           = "png files (*.png)|*.png|jpeg files (*.jpeg)|*.jpeg";
         saveFileDialog1.FilterIndex      = 2;
         saveFileDialog1.RestoreDirectory = true;
         if (saveFileDialog1.ShowDialog() == DialogResult.OK)
         {
             int idx = saveFileDialog1.FilterIndex;
             if (idx == 1)
             {
                 bmp.Save(saveFileDialog1.FileName, ImageFormat.Png);
             }
             else
             {
                 bmp.Save(saveFileDialog1.FileName, ImageFormat.Jpeg);
             }
         }
     }
     else
     {
         MessageBox.Show("닫힌 공간이 존재합니다.");
     }
 }
Exemplo n.º 2
0
 private void button_editmode_Click(object sender, EventArgs e)
 {
     if (isCreateMenu == 3)
     {
         if (RoomMaker.hasIntersect())
         {
             MessageBox.Show("Intersection이 존재합니다.");
             return;
         }
         button_editmode.BackColor = Color.AliceBlue;
         Cursor.Current            = Cursors.Default;
         selected_room             = null;
         isCreateMenu = 0;
         panel_createroom_menu.Width = 0;
     }
     else
     {
         button_editmode.BackColor = Color.LightGray;
         isCreateMenu                = 3;
         label_status.Text           = "Edit Mode";
         isRect                      = false;
         Cursor.Current              = Cursors.Hand;
         panel_createroom_menu.Width = 0;
     }
 }
Exemplo n.º 3
0
        private void panel_canvas_MouseUp(object sender, MouseEventArgs e)
        {
            if (isRect)
            {
                List <Point> list = new List <Point>();
                list.Add(new Point(rect.X + rect.Width, rect.Y));
                list.Add(new Point(rect.X + rect.Width, rect.Y + rect.Height));
                list.Add(new Point(rect.X, rect.Y + rect.Height));
                list.Add(new Point(rect.X, rect.Y));

                RoomMaker.PushRectangle(list);

                isRect = false;
                rect   = new Rectangle(0, 0, 0, 0);
            }
            isDraw = false;

            if (isCreateMenu == 3 && isMove)
            {
                moveEndPoint = new Point(e.X, e.Y);
                selected_room.MoveRoom(moveStartPoint, moveEndPoint);
                RoomMaker.SnapRectangleRoom(selected_room);
                isMove        = false;
                selected_room = null;
                isMovingDraw  = false;
            }
        }
Exemplo n.º 4
0
 void NoRoomMaker()
 {
     RM = FindObjectOfType <RoomMaker>();
     if (RM == null)
     {
         Debug.LogError("There are no Room Creator in the scene, you should use the Room Editor scene!");
     }
 }
Exemplo n.º 5
0
 private void EditModeRemoveRoomToolStripMenuItem_Click(object sender, EventArgs e)
 {
     if (selected_room != null)
     {
         label_status.Text = "Edit Mode : Delete Mode";
         RoomMaker.deleteRoom(selected_room);
         selected_room = null;
     }
 }
Exemplo n.º 6
0
 // Opens control to make your own room shape.
 private void vormZelfMakenToolStripMenuItem_Click(object sender, EventArgs e)
 {
     roomMaker1          = new RoomMaker(this);
     roomMaker1.Width    = Width;
     roomMaker1.Height   = Height;
     roomMaker1.Location = new Point(0, 22);
     Controls.Add(roomMaker1);
     roomMaker1.Show();
     roomMaker1.BringToFront();
     DesignPanel1.UnsetMightMode();
     nightModeBool = false;
 }
Exemplo n.º 7
0
    public void SetupCorridor(RoomMaker room, IntRange length, IntRange roomWidth, IntRange roomHeight, int columns, int rows, bool firstCorridor)
    {
        //choose rand direction to draw coridor upon
        direction = (Direction)Random.Range(0, 4);

        //get rand length
        corridorLength = length.Random;

        //length max
        int maxLength = length.m_Max - 1;

        switch (direction)
        {
        //below we will look at what direction we want to head then
        //we choose a position on side (north, east ect) of wall that is random to spawn corridor from
        //so if case north choose random spot from top wall to draw from
        //now set our max length so we dont reach edge of board when drawing it

        case Direction.North:
            startXPos = Random.Range(room.xPos, room.xPos + room.roomWidth - 1);
            startYPos = room.yPos + room.roomHeight;
            maxLength = rows - startYPos - roomHeight.m_Min;
            break;

        case Direction.East:
            startXPos = room.xPos + room.roomWidth;
            startYPos = Random.Range(room.yPos, room.yPos + room.roomHeight - 1);
            maxLength = columns - startXPos - roomWidth.m_Min;
            break;

        case Direction.South:
            startXPos = Random.Range(room.xPos, room.xPos + room.roomWidth);
            startYPos = room.yPos;
            maxLength = startYPos - roomHeight.m_Min;
            break;

        case Direction.West:
            startXPos = room.xPos;
            startYPos = Random.Range(room.yPos, room.yPos + room.roomHeight);
            maxLength = startXPos - roomWidth.m_Min;
            break;
        }

        //make sure our length is not over our max possible length
        corridorLength = Mathf.Clamp(corridorLength, 1, maxLength);
    }
Exemplo n.º 8
0
    //check that floortile array is set to true for where we want rooms
    void SetTilesValuesForRooms()
    {
        //for each room
        for (int i = 0; i < rooms.Length; i++)
        {
            RoomMaker currentRoom = rooms[i];
            //go through each tile in room vertically
            for (int y = 0; y < currentRoom.roomHeight; y++)
            {
                int yCoord = currentRoom.yPos + y;

                //go through each tile in room horizontally
                for (int x = 0; x < currentRoom.roomWidth; x++)
                {
                    //set postion to true in floortile array
                    FloorTiles[currentRoom.xPos + x, yCoord] = true;
                    //MazeGrid[currentRoom.xPos + x, yCoord] = new TileVector2(currentRoom.xPos + x, yCoord, true);
                }
            }
        }
    }
Exemplo n.º 9
0
    void CreateRoomsAndCorridors()
    {
        //change our tile array to right size
        FloorTiles = new bool[columns, rows];
        //MazeGrid = new TileVector2[columns, rows];
        //create the rooms array with random size between upper and lower bound
        rooms = new RoomMaker[numRooms.Random];

        //one less corridor than there is rooms
        //as we go room , corridoor, room, (we both start and finish with making a room so we want one less corridoor)
        corridors = new CorridorMaker[rooms.Length - 1];

        //create 1st room corridor
        rooms[0]     = new RoomMaker();
        corridors[0] = new CorridorMaker();

        //setup the first room (no corridors exist yet)
        rooms[0].SetupRoom(roomWidth, roomHeight, columns, rows);

        //make first corridor using room above
        corridors[0].SetupCorridor(rooms[0], corridorLength, roomWidth, roomHeight, columns, rows, true);

        //for each room we gotta make, excluding first (start at in i = 1)
        for (int i = 1; i < rooms.Length; i++)
        {
            //make room
            rooms[i] = new RoomMaker();
            rooms[i].SetupRoom(roomWidth, roomHeight, columns, rows, corridors[i - 1]);

            //make a corridor if we not at end (dont want corridor leading to nothing
            if (i < corridors.Length)
            {
                corridors[i] = new CorridorMaker();
                corridors[i].SetupCorridor(rooms[i], corridorLength, roomWidth, roomHeight, columns, rows, false);
            }
        }
    }
Exemplo n.º 10
0
        // Open shapeselector.
        public void ShapeSelect()
        {
            room = new Room();
            ShapeSelector ss = new ShapeSelector(room);

            ss.ShowDialog();
            if (ss.DialogResult == DialogResult.OK)
            {
                room.productList = new List <Product>();

                DesignPanel1.rDesign = room;
                //mm.Hide();
                if (roomMaker1 != null)
                {
                    roomMaker1.Hide();
                    roomMaker1 = null;
                }
                Controls.Remove(roomMaker1);

                this.Show();
            }
            DesignPanel1.UnsetMightMode();
            nightModeBool = false;
        }
Exemplo n.º 11
0
        private void panel_canvas_MouseDown(object sender, MouseEventArgs e)
        {
            if (selectFurn != 0)
            {
                label_status.Text = "furniture를 선택함";
                Room room = RoomMaker.CheckInnerPoint(new Point(e.X, e.Y));
                if (room != null)
                {
                    f.imgSize.X = e.X; f.imgSize.Y = e.Y;
                    if (RoomMaker.PushFurniture(f) == 1)
                    {
                        selectFurn = 0;
                    }
                }
            }
            if (isDoor)
            {
                RoomMaker.PushDoor(new Point(e.X, e.Y), true);
                isRect            = false;
                isPolygon         = false;
                label_status.Text = "door를 선택함";
            }
            if (isWindow)
            {
                RoomMaker.PushDoor(new Point(e.X, e.Y), false);
                isRect            = false;
                isPolygon         = false;
                label_status.Text = "window를 선택함";
            }

            if (isPolygon)
            {
                label_status.Text = "polygon을 선택함";
                if (!isLine)
                {
                    sp     = e.Location;
                    ep     = e.Location;
                    isLine = true;
                    RoomMaker.PushVertex(ref sp);
                }
                else
                {
                    ep = e.Location;
                    int result = RoomMaker.PushVertex(ref ep);
                    if (result == 1)
                    {
                        isPolygon = false;
                        isLine    = false;
                    }
                    else if (result == -1)
                    {
                        isPolygon = false;
                        isLine    = false;
                    }
                    sp = ep;
                }
            }
            else
            {
                sp = e.Location;
            }

            if (e.Button == MouseButtons.Right)
            {
                contextMenuStrip1.Show(new Point(MousePosition.X, MousePosition.Y));
            }


            isDraw = true;
            if (isCreateMenu == 3)
            {
                if (isMove)
                {
                    moveStartPoint = new Point(e.X, e.Y);
                    isMovingDraw   = true;
                }
                else
                {
                    selected_room = RoomMaker.CheckInnerPoint(new Point(e.X, e.Y));
                    if (selected_room == null)
                    {
                        Debug.WriteLine("Room not selected");
                    }
                    else
                    {
                        label_status.Text = "Edit Mode : Room을 선택함";
                    }
                    contextMenuStrip3.Show(new Point(MousePosition.X, MousePosition.Y));

                    panel_canvas.Refresh();
                }
            }
        }
    // Update is called once per frame
    void Update()
    {
        if (!pause)
        {
            //If counter is less than counterLife, than keep moving forward
            if ((myCounter < counterLife || !clone))
            {
//          Generate a random number from 0.0f to 1.0f;
                float randomNumber = Random.Range(0.0f, 1.0f);
//			If random number is less than 0.25f, then rotate myself 90 degrees on Z axis;
                if (randomNumber < 0.08f && hallLength > minHallLength)
                {
                    transform.eulerAngles += new Vector3(0f, 0f, 90f);
                    hallLength             = 0;
                }
//				... Else if number is 0.25f-0.5f, then rotate myself -90 degrees on Z axis;
                else if (randomNumber < 0.16f && hallLength > minHallLength)
                {
                    transform.eulerAngles += new Vector3(0f, 0f, -90f);
                    hallLength             = 0;
                }
//				... Else if number is 0.99f-1.0f, then instantiate a HallwayMakerPrefab clone at my current position;
                else if (randomNumber >= 1.0f)
                {
                    HallwayMaker myClone = Instantiate(HallwayMakerPrefab, transform.position, transform.rotation);
                    myClone.myManager = myManager;
                    myManager.myHallways.Add(myClone);
                    //The clone will also be rotated and pushed forward
                    float randomNumber2 = Random.Range(0.0f, 100f);
                    if (randomNumber2 < 50f)
                    {
                        myClone.transform.eulerAngles += new Vector3(0f, 0f, 90f);
                    }
                    else
                    {
                        myClone.transform.eulerAngles += new Vector3(0f, 0f, -90f);
                    }
                    myClone.transform.position += myClone.transform.up;
                    myClone.clone = true;
                    hallLength   += 4;
                }
                else if (randomNumber >= 0.95)
                {
                    RoomMaker myCloneRoom = Instantiate(roomMakerPrefab, transform.position, transform.rotation);
                    myCloneRoom.myManager = myManager;
                    myManager.myRooms.Add(myCloneRoom);
                    hallLength += 4;
                    if (!clone)
                    {
                        float randomNumber3 = Random.Range(0f, 1.0f);
                        if (randomNumber3 > 0.5f)
                        {
                            HallwayMaker myClone = Instantiate(HallwayMakerPrefab, transform.position, transform.rotation);
                            myManager.myHallways.Add(myClone);
                            myClone.myManager = myManager;
                            //The clone will also be rotated and pushed forward
                            float randomNumber2 = Random.Range(0.0f, 100f);
                            if (randomNumber2 < 50f)
                            {
                                myClone.transform.eulerAngles += new Vector3(0f, 0f, 90f);
                            }
                            else
                            {
                                myClone.transform.eulerAngles += new Vector3(0f, 0f, -90f);
                            }
                            myClone.transform.position += myClone.transform.up;
                            myClone.clone = true;
                            hallLength   += 4;
                        }
                    }
                }
//			// end elseIf
//			Instantiate a floorPrefab clone at current position;
                Transform Tile = Instantiate(floorPrefab, transform.position, transform.rotation);
                Tile.eulerAngles = new Vector3(0f, 0f, 0f);
                FloorTileSpriter tileSpriter = Tile.GetComponent <FloorTileSpriter>();
                tileSpriter.myManager = myManager;
                myManager.Tiles.Add(Tile);
//			Move 1 unit "upwards" based on this object's local rotation (e.g. with rotation 0,0,0 "upwards" is (0,1,0)... but with rotation 0,0,180 then "upwards" is (0,-1, 0)... )
                transform.position += transform.up;
//			Increment counter;
                myCounter++;
                globalFloorCount++;
                Debug.Log(globalFloorCount.ToString());
                hallLength++;
            }
            else
            {
                myManager.myHallways.Remove(this);
                Destroy(this.gameObject);
            }
            if (globalFloorCount >= 5000f && !clone)
            {
                myManager.myHallways.Remove(this);
                myManager.endgame = 1;
                Destroy(this.gameObject);
            }
        }
    }