From 895f34e6e893d1125e1b0cb97d91568cc536a28f Mon Sep 17 00:00:00 2001
From: Tim Repke <timmothey@gmx.de>
Date: Sat, 19 Sep 2015 01:52:05 +0200
Subject: [PATCH] added onclick walkto

---
 .../view/signups/game1/js/character.js        |  16 ++++++++--
 .../view/signups/game1/js/events.js           |  30 ++++++++++++++++--
 .../view/signups/game1/maps/castle_fs.svg     | Bin 1082512 -> 1082896 bytes
 3 files changed, 42 insertions(+), 4 deletions(-)

diff --git a/registration-system/view/signups/game1/js/character.js b/registration-system/view/signups/game1/js/character.js
index 17ecc8f..73cdb11 100644
--- a/registration-system/view/signups/game1/js/character.js
+++ b/registration-system/view/signups/game1/js/character.js
@@ -116,7 +116,11 @@ Char.prototype.animate = function() {
 	this.frames[currentFrame].style.display = 'block';
 };
 Char.prototype.physics = function() {
-	if (this.moveTarget && this.moveTarget.length == 0) return;
+	if (this.moveTarget && this.moveTarget.length == 0) {
+		if (this.onArrivalCallback && typeof this.onArrivalCallback === 'function') this.onArrivalCallback();
+		this.onArrivalCallback = null;
+		return;
+	}
 
 	if (Vec.equals(this.translation, this.moveTarget[0])) {
 		this.moveTarget.shift();
@@ -152,7 +156,15 @@ Char.prototype.updatePosition = function() {
 		return translate.apply(null, self.translation);
 	});
 };
-Char.prototype.setMoveTarget = function(x,y) {
+/**
+ *
+ * @param x coord
+ * @param y coord
+ * @param onArrival optional callback function
+ */
+Char.prototype.setMoveTarget = function(x, y, onArrival) {
+
+	this.onArrivalCallback = onArrival;
 
 	if (Game.config.usePathFinding)
 		this.moveTarget = this.pathFinder.smoothPath(this.pathFinder.findPath(this.translation[0], this.translation[1], x, y));
diff --git a/registration-system/view/signups/game1/js/events.js b/registration-system/view/signups/game1/js/events.js
index 9560ac3..a63efa5 100644
--- a/registration-system/view/signups/game1/js/events.js
+++ b/registration-system/view/signups/game1/js/events.js
@@ -4,7 +4,7 @@ function EventHandler(svg) {
         click:  [],
         walkon: []
     };
-
+    this.svg = svg;
     var self = this;
     svg.selectAll('g').each(function(d, i) {
         var label = this.getAttribute('inkscape:label');
@@ -22,7 +22,9 @@ function EventHandler(svg) {
                 trigger: trigger,
                 target: this.getAttribute('target'),
                 destination: this.getAttribute('destination'),
-                stopsWalk: this.getAttribute('stopsWalk') === 'true'
+                stopsWalk: this.getAttribute('stopsWalk') === 'true',
+                action: this.getAttribute('action'),
+                walkTo: this.getAttribute('walkTo')
             });
         }
     });
@@ -82,9 +84,33 @@ EventHandler.prototype.handleEvent = function (event, context) {
         case 'mapchange':
             Game.instance.nextMap(event.destination, event.target);
             break;
+        case 'special':
+            EventHandler.handleAction(event);
+            break;
     }
 
     if (event.stopsWalk) {
         Game.char.stopMovement();
     }
+};
+
+EventHandler.handleAction = function(event) {
+    if (event.action && event.action in EventHandler.actions) {
+        if(event.walkTo) {
+            var spawn = Game.char.svg.select('#'+event.walkTo);
+            if (spawn[0][0]) {
+                var bbox = spawn[0][0].getBBox();
+                var xy = Vec.add(getTranslation(spawn[0][0], Game.char.svg[0][0]), [bbox.x, bbox.y]);
+                Game.char.setMoveTarget(xy[0], xy[1], EventHandler.actions[event.action]);
+            }
+        } else {
+            EventHandler.actions[event.action]();
+        }
+    }
+};
+
+EventHandler.actions = {
+    'fs_open_board': function() {
+        console.log('fuck yeah!')
+    }
 };
\ No newline at end of file
diff --git a/registration-system/view/signups/game1/maps/castle_fs.svg b/registration-system/view/signups/game1/maps/castle_fs.svg
index b6be7979fcf17e916b640b6278bb0375274f4597..328d9498a66463adcd7994c2a366108e480ceefe 100644
GIT binary patch
delta 626
zcmbQx=`^9oX~VY$M-xL6BST{|B`yUJ$jr+wPEIUHwMwqARWdg-&@(kRH?hQ!th7}!
zvaryzG&8d>oov?V#%MXYw$XJmbCcBMJB?g2rWnSRXXd5km+JxzZDwt1XKi8xVkRJF
z24WT<W(8t4AZ7<*4j|?PVlE)&24Wr{<^^KD?W|4wuYOGbUMwIpU8h>$4^vv&bo&N@
zxzmr=2y}`=JfNUZQk0pVo?2w9RGyfVou4<o;0UAGbh!ordAM@rI)PrIly3)`uD~dT
z!(=4|{pkzJ1f-^KFy-cBw4N?dBOn2_W2SYAtx~RnnX!?cxrLdfv5t|Ek)DC6rLnn!
zg{7XUiK&@|j)8)Kj){eyk(s55f-aJ1)%3D@0cC!;H<EKQle3j3Z)6jmzLJ+oG!pKb
z%7Ro|rQ(9r<jlkzXbdSRBqo<+=I7Zer4`5L7o_IJC*>y=rNCuDK@yU0t5lGaSeaTB
z58*n2l>j}XS}mY0lwXjToLN$7WuRwbW^M@r)BURjY`BrsPM=UMpf7J`ZlPyrXlh~v
iH$54cER2l|^~{V6&CRFZs|H3>hKhj2_PLD$pP2wpkhtLh

delta 388
zcmbQx<20euX~VY$2TOBH3rkBSE(H+C%*!rLPAo{ZO0KX~vamGOGc+|fGQ^Oqv{f>)
zFx4|MGcz%qY~JX`Xgs;D(UsZE!eFvOllbJjja*DdW*{bG#pDBxvdz*>?b1z*K+FWh
z%s|Wn#H>Kf2E^<@%mKulK+FZi+(66&#JoVvw_Uo4|I&}?ol;Cv(-WEnM5ilUVPxOV
zR4u^FIK8$+KxleHgFxr>1vLV_(>EPt6rCPbD<F?5!82W<PM{UHY-FPVA4hp+N=XLL
z$CCvWgbgk9OwA2Vj4YtuR!{(jg_*H2SQHi(3JSn5Fg7sK11X$tC@Ub%QIwioVrgn=
eHhtqkMlmc7VVORmUZ8opq7;+;cDZJOPfP$YW_H^E

-- 
GitLab