implemented colliderect
Breno G. de Oliveira [Sun, 4 Oct 2009 07:29:21 +0000 (04:29 -0300)]
lib/SDL/Game/Rect.pm

index 7cffffa..a552f75 100644 (file)
@@ -590,7 +590,6 @@ sub contains {
     return $contained;
 }
 
-
 sub collidepoint {
     my ($self, $x, $y) = (@_);
 
@@ -607,6 +606,33 @@ sub collidepoint {
     return $inside;
 }
 
+sub _do_rects_intersect {
+    my ($rect_A, $rect_B) = (@_);
+    
+    return (
+               ($rect_A->x >= $rect_B->x && $rect_A->x < $rect_B->x + $rect_B->w)  
+            || ($rect_B->x >= $rect_A->x && $rect_B->x < $rect_A->x + $rect_A->w)
+           ) 
+           &&
+           (
+               ($rect_A->y >= $rect_B->y && $rect_A->y < $rect_B->y + $rect_B->h)
+            || ($rect_B->y >= $rect_A->y && $rect_B->y < $rect_A->y + $rect_A->h)
+           )
+           ;
+}
+
+
+sub colliderect {
+    my ($self, $rect) = (@_);
+
+    unless ($rect->isa('SDL::Rect')) {
+        croak "must receive an SDL::Rect-based object";
+    }
+    
+    return _do_rects_intersect($self, $rect);
+}
+
+
 42;
 __END__