Ejemplo n.º 1
0
    public Room(PositiveVector2 startPoint, PositiveVector2 size, PositiveVector2 minSize, int roomsAsigned)
    {
        //En cada habitación, parto en dos si me deja el minimo de tamaño.
        this.startPoint = startPoint;
        this.roomSize   = size;

        if (!CheckIfMinSize(minSize))
        {
            if (roomsAsigned > 1)
            {
                roomChilds = new List <Room>(BSPDungeon.Instance.MakeRooms(Random.Range(0, 100) < 50, size, roomsAsigned, startPoint));
                //Debug.Log("Room : " + this.ToString() + " childs: " + roomChilds[0].ToString() + "  ::::::   " + roomChilds[1].ToString());
                foreach (Room room in roomChilds)
                {
                    if (room.CheckIfMinSize(minSize))
                    {
                        BSPDungeon.Instance.AddRoom(this);
                        foreach (Room child in roomChilds)
                        {
                            BSPDungeon.Instance.DeleteRoom(child);
                        }
                        break;
                    }
                }
            }
            else
            {
                BSPDungeon.Instance.AddRoom(this);
            }
        }
    }
Ejemplo n.º 2
0
    public void SetDefinitiveSize(float mod, PositiveVector2 minSize)
    {
        PositiveVector2 oldSize = roomSize;

        roomSize = new PositiveVector2((int)(roomSize.X * mod), (int)(roomSize.Y * mod));
        if (CheckIfMinSize(minSize))
        {
            roomSize = oldSize;
        }
    }
Ejemplo n.º 3
0
    private void MakeRoomsCut()
    {
        bool            horizontalCut  = Random.Range(0, 100) < 50;
        int             roomNumber     = Random.Range(minRoomNumber, maxRoomNumber);
        PositiveVector2 positionActual = new PositiveVector2((int)this.transform.position.x, (int)this.transform.position.y);
        float           sizeFirstChunk = Random.Range(0.5f - chaosMod, 0.5f + chaosMod);

        Room[] initialRooms = MakeRooms(horizontalCut, size, roomNumber, positionActual, sizeFirstChunk);

        // Debug.Log("INITIAL ROOM: " + initialRooms[0].ToString());
        //Debug.Log("2 INITIAL ROOM: " + initialRooms[1].ToString());
    }
Ejemplo n.º 4
0
    public Room[] MakeRooms(bool horizontal, PositiveVector2 size, int roomNumber, PositiveVector2 initialPoint, float sizeFirstChunk = 0.5f)
    {
        PositiveVector2 pointToStart = initialPoint;

        Room[]          rooms        = new Room[2];
        int             roomsToApply = (int)(roomNumber * sizeFirstChunk);
        PositiveVector2 sizeToApply  = new PositiveVector2(horizontal ? size.X : (int)(size.X * sizeFirstChunk), horizontal ? (int)(size.Y * sizeFirstChunk) : size.Y);

        rooms[0] = new Room(pointToStart, sizeToApply, minRoomSize, roomsToApply);
        if (horizontal)
        {
            pointToStart.Y += sizeToApply.Y;
        }
        else
        {
            pointToStart.X += sizeToApply.X;
        }
        sizeToApply  = new PositiveVector2(horizontal ? size.X : (int)(size.X * (1 - sizeFirstChunk)), horizontal ? (int)(size.Y * (1 - sizeFirstChunk)): size.Y);
        roomsToApply = roomNumber - roomsToApply;
        rooms[1]     = new Room(pointToStart, sizeToApply, minRoomSize, roomsToApply);

        return(rooms);
    }
Ejemplo n.º 5
0
 public PositiveVector2(PositiveVector2 other)
 {
     this.x = other.x;
     this.y = other.y;
 }
Ejemplo n.º 6
0
 public bool CheckIfMinSize(PositiveVector2 minSize)
 {
     return(this.roomSize.X < minSize.X || this.roomSize.Y < minSize.Y);
 }