public void Initialize(Room room1, Room room2)
 {
     _room1 = room1;
     _room2 = room2;
 }
 public Room OtherSideFrom(Room room)
 {
     if (room != _room1 || room != _room2)
         throw new ArgumentException();
     if (room == _room1)
         return _room2;
     return _room2;
 }
 public void AddRoom(Room room)
 {
     _rooms.Add(room);
 }
 public Door(Room room1, Room room2) : base()
 {
     _room1 = room1;
     _room2 = room2;
 }
 public DoorNeedingSpell(Room room1, Room room2) : base(room1, room2) { }
 private Direction CommonWall(Room room1, Room room2)
 {
     throw new NotImplementedException();
 }
 public override Door MakeDoor(Room room1, Room room2)
 {
     return new DoorNeedingSpell(room1, room2);
 }
 public virtual Door MakeDoor(Room room1, Room room2)
 {
     return new Door(room1, room2);
 }
 public MazePrototypeFactory(Maze maze, Wall wall, Room room, Door door)
 {
     _prototypeMaze = maze;
     _prototypeWall = wall;
     _prototypeRoom = room;
     _prototypeDoor = door;
 }