((moving-rectangle player)
(standing-rectangle door)
(collision collision))
-
- (cond ((find (dungeon standing-rectangle) (keys moving-rectangle))
+ (cond ((find-if #'(lambda (x) (string= x (dungeon standing-rectangle))) (keys moving-rectangle))
(setf (keys moving-rectangle) (delete (dungeon standing-rectangle) (keys moving-rectangle) :count 1))
(setf (visible standing-rectangle) nil)
(setf (active standing-rectangle) nil)
(setf (maycontjump moving-rectangle) nil)))
(collide-blocks moving-rectangle standing-rectangle collision))
+(defmethod on-collision
+ ((moving-rectangle player)
+ (standing-rectangle teleporter)
+ (collision collision))
+ ;; make rectangle active to check for overlapping
+ (setf (active standing-rectangle) T)
+ ;; walk through
+ (setf (colliding standing-rectangle) nil)
+ (move-about moving-rectangle (desired-movement collision))
+ (setf (colliding standing-rectangle) t))
(defmethod on-collision
((moving-rectangle player)
(setf (autojump moving-rectangle) 5)
(player-hits-enemy moving-rectangle
standing-rectangle
- collision))
+ collision)
+ (setf (colliding standing-rectangle) nil)
+ (move-about moving-rectangle (desired-movement collision))
+ (setf (colliding standing-rectangle) t)
+)
(defmethod on-collision
((moving-rectangle player)
collision)
(enemy-hits-player moving-rectangle
standing-rectangle
- collision))
+ collision)
+ (setf (colliding standing-rectangle) nil)
+ (move-about moving-rectangle (desired-movement collision))
+ (setf (colliding standing-rectangle) t)
+)