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