示例#1
0
 public BuildCondidate(Room room, RectInt absoulteRoomRect, RectInt relativeDoorRect, RectInt absoluteDoorRect, Room.BorderDoorsGroup.DoorDirection direction)
 {
     Room             = room;
     AbsoluteRoomRect = absoulteRoomRect;
     RelativeDoorRect = relativeDoorRect;
     AbsoluteDoorRect = absoluteDoorRect;
     Direction        = direction;
 }
示例#2
0
        // TODO : 3개 반환하는게 맞나?
        public (Room selectedRoom, RectInt relativeBorderDoorRect, RectInt absoulteRoomRect) GetRoomWithMatchedDoor(RectInt absoluteDoorRect, Room.BorderDoorsGroup.DoorDirection buildDirection)
        {
            var condidateRooms = rooms.RandomSwap();

            foreach (var condidateRoom in condidateRooms)
            {
                var borderDoors = condidateRoom.BorderDoorGroup.GetBorderDoorsForOppositeDirecton(buildDirection);
                foreach (var relativeDoor in borderDoors)
                {
                    if (relativeDoor.width == absoluteDoorRect.width && relativeDoor.height == absoluteDoorRect.height)
                    {
                        var absoluteRoomRect = condidateRoom.rect;
                        absoluteRoomRect.x = absoluteDoorRect.x - relativeDoor.x;
                        absoluteRoomRect.y = absoluteDoorRect.y + relativeDoor.y;

                        return(condidateRoom, relativeDoor, absoluteRoomRect);
                    }
                }
            }

            return(null, new RectInt(0, 0, 0, 0), new RectInt(0, 0, 0, 0));
        }