From 51186cfb30d3b352f23cd4d62c612a5dc387dd98 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Oliver=20R=C3=BCmpelein?= <oli_r@fg4f.de>
Date: Tue, 23 Sep 2014 17:58:25 +0200
Subject: [PATCH] First tries to function onhitStop()

---
 src/jsds_crafty.js | 37 +++++++++++++++++++++++++------------
 1 file changed, 25 insertions(+), 12 deletions(-)

diff --git a/src/jsds_crafty.js b/src/jsds_crafty.js
index c235ff1..aa6bcca 100644
--- a/src/jsds_crafty.js
+++ b/src/jsds_crafty.js
@@ -52,22 +52,44 @@
     Crafty.c(
 	"Creature", {
 	    init: function() {
-		this.addComponent("Thing,Fourway,Draggable,Collision,WiredHitBox,Mouse,player");
+		this.addComponent("Thing,Fourway,Draggable,Collision,WiredHitBox,Mouse,creature");
 	    },
+/*	    onhitStop: function(comp) {
+		this.stopDrag();
+		var hb;
+		while( (hb=this.hit(comp)) && (this.hit(comp)[0].normal) ) {
+		    this.x += Math.ceil(hb[0].normal.x * -hb[0].overlap);
+		    this.y += Math.ceil(hb[0].normal.y * -hb[0].overlap);
+		}
+	    },*/
+	    
 	    player: function(x,y,w,h,col) {
 		this.h = h || 40;
 		this.w = w || 40;
 		this.thing(x,y,w,h,col)
 		    .collision()
 		    .fourway(4)
-		    .onHit("wall",function() {
+		    .onHit("wall", function() {
 			this.stopDrag();
 			var hb;
-			while( (hb=this.hit('wall')) && (this.hit('wall')[0].normal) ) {
+			while( (hb=this.hit("wall")) && (this.hit("wall")[0].normal) ) {
+			    this.x += Math.ceil(hb[0].normal.x * -hb[0].overlap);
+			    this.y += Math.ceil(hb[0].normal.y * -hb[0].overlap);
+			}
+		    })
+		// this.onhitStop('wall')) // Function (see above) would be nicer, but doesn't work.
+		    .onHit("creature",function() {
+			this.stopDrag();
+			var hb;
+			while( (hb=this.hit("creature")) && (this.hit("creature")[0].normal) ) {
 			    this.x += Math.ceil(hb[0].normal.x * -hb[0].overlap);
 			    this.y += Math.ceil(hb[0].normal.y * -hb[0].overlap);
 			}
 		    });
+		
+		
+		
+		//	this.onhitStop('creature'));
 		this.bind('MouseDown', function(e) {
 		    if(e.mouseButton === Crafty.mouseButtons.LEFT) {
 			this.old_pos["x"]=this.x;
@@ -83,15 +105,6 @@
 	    }
 	}
     );
-    /*    var fig=Crafty.e('Collision, 2D, Canvas, Color,Fourway,Draggable,WiredHitBox,Mouse,player')
-     .attr({x: 20, y: 20, w: 100, h: 100})
-     .color('#F00')
-     .fourway(4)
-     .collision()
-     .onHit("wall",function() {
-     this.stopDrag();
-     
-     });*/
     
     var start_init = function() {
 	Crafty.init(500,250, document.getElementById('game'));