From 00c54ac3a40f2f9344d3d0ba6f0cf73708fb5ae8 Mon Sep 17 00:00:00 2001
From: Manuel Herrmann <it@icetruck.de>
Date: Fri, 18 Sep 2015 22:01:01 +0200
Subject: [PATCH] offset fix; scroll fix; display pathfinding result

---
 .../view/signups/game1/index.php              |   4 ++--
 .../view/signups/game1/js/character.js        |  22 ++++++++++++++++--
 .../view/signups/game1/js/events.js           |   3 +++
 .../view/signups/game1/js/game.js             |  13 +++++++----
 .../view/signups/game1/js/svgUtils.js         |  12 +++++-----
 .../signups/game1/maps/castle_entrance.svg    | Bin 585109 -> 586011 bytes
 .../view/signups/game1/maps/map_landing.svg   | Bin 6594284 -> 6594290 bytes
 .../view/signups/game1/test.html              |   1 +
 8 files changed, 40 insertions(+), 15 deletions(-)

diff --git a/registration-system/view/signups/game1/index.php b/registration-system/view/signups/game1/index.php
index e0a2698..c395d26 100644
--- a/registration-system/view/signups/game1/index.php
+++ b/registration-system/view/signups/game1/index.php
@@ -19,7 +19,7 @@ class Game1SignupMethod extends SignupMethod {
     }
 
     public function getJSDependencies() {
-        return ['jslib/d3.min.js', 'jslib/priority-queue.min.js', 'jslib/checkLineIntersection.js',
+        return ['../../js/jquery-1.11.1.min.js', 'jslib/d3.min.js', 'jslib/priority-queue.min.js', 'jslib/checkLineIntersection.js',
             'js/events.js','js/achievements.js', 'js/svgUtils.js', 'js/pathFinder.js', 'js/vector.js', 'js/character.js','js/camera.js',
             'js/game.js'];
     }
@@ -100,4 +100,4 @@ class Game1SignupMethod extends SignupMethod {
             </script>';
     }
 
-}
\ No newline at end of file
+}
diff --git a/registration-system/view/signups/game1/js/character.js b/registration-system/view/signups/game1/js/character.js
index 28fe7dc..dd96507 100644
--- a/registration-system/view/signups/game1/js/character.js
+++ b/registration-system/view/signups/game1/js/character.js
@@ -28,7 +28,7 @@ Char.prototype.findSpawn = function(spawnId) {
 	var spawn = this.svg.select(spawnId ? '#'+spawnId : "#player_spawn");
 	if (!spawn[0][0]) console.error("Could not find spawn: #" + spawnId);
 	var bbox = spawn[0][0].getBBox();
-	return Vec.add(getTranslation(this.svg[0][0], spawn[0][0]), [bbox.x, bbox.y]);
+	return Vec.add(getTranslation(spawn[0][0], this.svg[0][0]), [bbox.x, bbox.y]);
 };
 Char.prototype.initializeAnimations = function() {
 	var self = this;
@@ -129,7 +129,7 @@ Char.prototype.physics = function() {
 	else
 		this.moveTarget.shift();
 
-	Game.eventHandler.triggerEventOn('walkon', nextPosition[0], nextPosition[1]);
+	Game.eventHandler.triggerEventOn('walkon', this.translation[0], this.translation[1]);
 
 	this.updatePosition();
 };
@@ -146,6 +146,24 @@ Char.prototype.setMoveTarget = function(x,y) {
 		this.moveTarget = this.pathFinder.smoothPath(this.pathFinder.findPath(this.translation[0], this.translation[1], x, y));
 	else
 		this.moveTarget = [[x, y]];
+
+	if (Game.config.verbosePathFinder) {
+		var pathfinderlines = this.svg.select('#pathfinderlines');
+		if (pathfinderlines.empty()) pathfinderlines = this.svg.append('g').attr('id', 'pathfinderlines');
+		var path = 'M';
+		for (var i = 0; i < this.moveTarget.length; ++i) {
+			var m = this.moveTarget[i];
+			path += ' '+m[0]+','+m[1];
+		}
+		pathfinderlines.append('path')
+			.style('stroke', '#f0f')
+			.style('stroke-width', 1)
+			.style('fill', 'none')
+			.attr('d', path)
+			.transition()
+			.delay(10000)
+			.remove();
+	}
 };
 
 Char.prototype.stopMovement = function() {
diff --git a/registration-system/view/signups/game1/js/events.js b/registration-system/view/signups/game1/js/events.js
index b314388..ef8d2ec 100644
--- a/registration-system/view/signups/game1/js/events.js
+++ b/registration-system/view/signups/game1/js/events.js
@@ -58,6 +58,9 @@ EventHandler.prototype.triggerEventOn = function (trigger, x, y) {
  * @param event
  */
 EventHandler.prototype.handleEvent = function (event, context) {
+    if (context.trigger == 'walkon')
+        console.log('walkon');
+
     switch (event.type) {
         case 'achievement':
             Game.achievements.triggerAchievement(event.id, context);
diff --git a/registration-system/view/signups/game1/js/game.js b/registration-system/view/signups/game1/js/game.js
index 19aac7a..d57b2d3 100644
--- a/registration-system/view/signups/game1/js/game.js
+++ b/registration-system/view/signups/game1/js/game.js
@@ -59,7 +59,7 @@ Game.prototype.loadMap = function(map, spawn) {
 
 			// -------------------------------------
 			// init event related stuff
-			var displayEvents = Game.config.showEventLayers ? 1 : 0;
+			var displayEvents = Game.config.showEventLayers ? 0.5 : 0;
 			svg.selectAll('g').filter(function() {
 				return (
 					this.getAttribute('inkscape:groupmode') == 'layer'
@@ -137,13 +137,16 @@ Game.prototype.loadMap = function(map, spawn) {
 			// https://github.com/sstephenson/prototype/blob/8d968bf957f0c41e5fcc665860d63a98a3fd26a0/src/prototype/dom/layout.js#L1156
 			var offsetTop = 0, offsetLeft = 0, docBody = document.body;
 			var element = gameCanvas;
-			do {
+			/*do {
 				offsetTop += element.offsetTop  || 0;
 				offsetLeft += element.offsetLeft || 0;
 				// Safari fix
 				if (element.offsetParent == docBody &&
 					element.style.position == 'absolute') break;
-			} while (element = element.offsetParent);
+			} while (element = element.offsetParent);*/
+			var offset = $(element).offset();
+			var offsetTop = offset.top;
+			var offsetLeft = offset.left;
 
 			element = gameCanvas;
 			do {
@@ -158,8 +161,8 @@ Game.prototype.loadMap = function(map, spawn) {
 			// ^--------- from prototypeJS
 
 			var matrix = svg[0][0].getScreenCTM();
-			cleanCoords.x = cleanCoords.x - matrix.e + offsetLeft - window.scrollX;
-			cleanCoords.y = cleanCoords.y - matrix.f + offsetTop  - window.scrollY;
+			cleanCoords.x = cleanCoords.x - matrix.e + offsetLeft;
+			cleanCoords.y = cleanCoords.y - matrix.f + offsetTop;
 
 			return cleanCoords;
 		} catch (e) {
diff --git a/registration-system/view/signups/game1/js/svgUtils.js b/registration-system/view/signups/game1/js/svgUtils.js
index 64b9ecf..b8bcebf 100644
--- a/registration-system/view/signups/game1/js/svgUtils.js
+++ b/registration-system/view/signups/game1/js/svgUtils.js
@@ -38,13 +38,13 @@ function Path(svgPathData, offset) {
 			lastPosition = currentPosition.slice();
 			switch (currentCommand) {
 				case 'm':
-					currentPosition[0] = Number(s[0]) + offset[0];
-					currentPosition[1] = Number(s[1]) + offset[1];
+					currentPosition[0] = Number(s[0]) - offset[0];
+					currentPosition[1] = Number(s[1]) - offset[1];
 					currentCommand = 'l';
 					break;
 				case 'M':
-					currentPosition[0] = Number(s[0]) + offset[0];
-					currentPosition[1] = Number(s[1]) + offset[1];
+					currentPosition[0] = Number(s[0]) - offset[0];
+					currentPosition[1] = Number(s[1]) - offset[1];
 					currentCommand = 'L';
 					break;
 				case 'l':
@@ -53,8 +53,8 @@ function Path(svgPathData, offset) {
 					this.edges.push([lastPosition.slice(), currentPosition.slice()]);
 					break;
 				case 'L':
-					currentPosition[0] = offset[0] + Number(s[0]);
-					currentPosition[1] = offset[1] + Number(s[1]);
+					currentPosition[0] = Number(s[0]) - offset[0];
+					currentPosition[1] = Number(s[1]) - offset[1];
 					this.edges.push([lastPosition.slice(), currentPosition.slice()]);
 					break;
 			}
diff --git a/registration-system/view/signups/game1/maps/castle_entrance.svg b/registration-system/view/signups/game1/maps/castle_entrance.svg
index d467263247b118c3f99790d2afece89fa1a0daf9..743a12298acd28ff16697bc1ce2a8d53f8c621d0 100644
GIT binary patch
delta 1083
zcmZWoO>A355LRBBc$!p^tkflKY4dmyY7Bmx{eSyR+|nX(Kq>-p;7_7FTq|+o+LrxF
z5)eNUhf1iTib|OS<qG0}3cb8r55S!R5g<~5(zJDq$RP*Bp%Sn!riQ{wqurgEZ+2$B
zolC2eAKsY!TsojRQA`Bk#Tn;drgt&#M9#U$8Au|>ao>GR5Y4GD+IYimx~ld0b~$QR
zisi+U$0^l>g_8fzxK#22O}ONWv*hdZ&U-sEicn=(fZ0{h=PoQeR(4p~X=TvLP;y~8
z^JH!$Ac9Ith01#vbzuU(xtbYGa-U>=f94(=8-jz0ypuWb#;!gjjr|bLbzwY3?M^;k
zgpXdl2lc=@?7uVtW69+es15zs^dLUJ3g3<gh8U&;?ivyrDGOW?sa0U`*mXd>vg`m}
zy9oyd%6MoU4kv$HhhKIaKH-MK5G|!p1*NDhmTTpPj1!{;E2vNt8MrkZT?3u<6=7P)
zu;6n_7*hfMbOZL{b8GN$KmPIL(>1u}Ob8+b<pp07p_pN=ZwTkA;9DT2L5M%6$n!Vh
zL@%Ey9JmE5;{lOW2<y!#;VcXbQWI?`!_8ap)R5ItPSZ#4!xwJbp7o2uxgX(C{PH%m
z{%LDc>VW6q?hOEZ{WBOrw*$k&J|jxoL}(t5{R&SfSGsW7!N)r=iu=CE^qg|Oq#@x-
z1U6wwi3vi@@_4ihZZBNE3sX3j()`;7<Z#ah{D6OU?5W$aRjs6_a4VC=uR4&;R!^0@
zW-VH(v`)60(L&wBt?!&Y_;Lq0zBCBCaB3aKKKR}l#J9TuZ?)rAW4=<Hq}%I}-ql~I
zo{Hy+thsnsQLEM~_D2_AIUC3S)}3xt>%}wGxYD|-Z8W2DHC`&RzrVZd+Jw%yEYy+&
zG~fkoo2`t}(lvrSA(`H$NhvOc%Pd`%aK(u<b`UI$%8r&6DUqoMcVFv=O$#kY?YLGs
zSy`;c-o@pSF+BRFZN@fFciwk$dwpg<1~q{(1;0N4d8AvJ{m_i!Icc;)wh0~{+JyV@
z^d{^(-Wy@pZO4sf``M^AU-IJC*-HQ2xK*8<t+Yzsg0(g3o;!WSLT09Cj||UDw_ml}
EU#-zcDgXcg

delta 648
zcmZWnO=uHA6sFUdeWsvbS*$I>b}JD}GTGVrm!u$`1<^~vOC$y@Vlip35fKlH1r@P`
z@<0*sAYSch_0o&r#iRAqVjF*2^pt~muoovPDb|6HH}k#sJ?70fk3Nnqtc<-71cabg
zDb89&a<F%}StfI3(wCG83GN(c)Ub$IF2YRET~pH+XDVkeSC3YjrO@#aWsz3@C9jr3
zZK+T~GoHM@NA9OQMGY6y&P~n}hkl2Y!!Cz(GCA+v@&_c9v6d=QM?z$a9!>n`-jCBe
z>A{5#3?yR98@|4~r$E<r9L=J4D0$X|$7lY{sHD6Mx6?aFbfkwjK0pTj6<GF7Ohu$+
zV5l`h<YG6vme{uni0f;RO+Kx{xBl#<z;Z*C5M1V@WRyuK$;Xmv!(y2el5!XE`#LCm
zx&}U;YQy-S25;K1MD|!3Da&(t>E44YtZl%4eDxVl;FC5SM*0Qb4_WFmh6Q;R(U@7A
zb4F>Q6pn1b$uy%{3E34M>-J6KyIC;kZ$f>0z~sRugaqp?GMa3Cg|`H+wa5^<ZDFL^
zoND|vEC^<&&NVKSLZh9JmSb%xH5kj7a>2Fi75%naSZZ~=O*)HJ6jSZ)r?EB-!%(kQ
o8dgOSKI}ji?{?q-{_MbBeA$7~eL-Qu{h(su{6wZ$n7QJ@F9{mImH+?%

diff --git a/registration-system/view/signups/game1/maps/map_landing.svg b/registration-system/view/signups/game1/maps/map_landing.svg
index 396f3da5aa7e501f9e95309eaf646d19264fc4f7..86107aa353520c3d7c5acf265a6f8b0772815140 100644
GIT binary patch
delta 460
zcmWm9xlY1x0Knl$MZ6Wo`@RLS*3y3|ib_54zBs%Q=uYAjI1t@UOb4C%1P(?fpTvpL
z#L3CT#h=6X0N>a9gY=EtVnxyQDt$N}T@A~c2;G+*36*f83LaFW2DPX|JsQx6CN#r~
z7PP{LHngJyo#;Y0deDnL^kV>n7{V|{Fp4pZV*-=#BY-IcF%20rP%sM>{|5~MI>Imz
z!5roh#R3+wgcwXLV+E^N!#Xw)$0oM0jUDV_5BoU4A&zj21d>Q0jT4;W4ClDOC9aUc
yHL}Q+%1++?ac8VT;l?)aa(?^w(TdxjPu81PH)PF-2sIc|gscipDZM;fQP&@9jr6hr

delta 453
zcmWm9w@w0a0KnnMDfWVbiWL<L?d1OGou^<yrP>7>R=gMR4H!t=P0S5C-Rx*!@=4s7
zO-!5|9QZkW5AgkbJV{?Dl^e>ocj?ozYhhJZ)yJA8p%G26qZut|MH|}DflhRx8$EEK
z7kzNTg?<cR5N-@%7$X?P7{=kj1ST;BFQzerS<Jx)KLQ9M1R3)PLxDg93s}VeN5c|y
zEMo;x#ITArtYZUlY+?)BNFa$6(#Rl-9qeKc`#8WMj&O_|@;JdM&Tx(k6mW?vT;m3}
sxI?j8v+m7b^Wm-NGyk5Al==N)R2-Tj>$;|hpwJarh=^LPyc$tk9lx>jD*ylh

diff --git a/registration-system/view/signups/game1/test.html b/registration-system/view/signups/game1/test.html
index 5b7d7c6..c7b3f17 100644
--- a/registration-system/view/signups/game1/test.html
+++ b/registration-system/view/signups/game1/test.html
@@ -3,6 +3,7 @@
 <head>
     <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
     <link href="ui.css" rel="stylesheet"/>
+    <script src="../../js/jquery-1.11.1.min.js" type="text/javascript"></script>
     <script src="jslib/d3.min.js" type="text/javascript"></script>
     <script src="jslib/priority-queue.min.js" type="text/javascript"></script>
     <script src="jslib/checkLineIntersection.js" type="text/javascript"></script>
-- 
GitLab