public Room OtherSideFrom(Room room)
 {
     if (room.Equals(room1))
         return room2;
     else if (room.Equals(room2))
         return room1;
     else
         return null;
 }
        public DoorNeedingSpell(Room r1, Room r2) : base(r1, r2)
        {

        }
 public override Door MakeDoor(Room r1, Room r2)
 {
     return new DoorNeedingSpell(r1, r2);
     
 }
 public Door Clone(Room r1, Room r2)
 {
     Door door = (Door)this.MemberwiseClone();
     door.Initialize(r1, r2);
     return door;
 }
 internal void Initialize(Room r1, Room r2)
 {
     this.room1 = r1;
     this.room2 = r2;
 }
 public Door(Room room1, Room room2)
 {
     this.room1 = room1;
     this.room2 = room2;
 }