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