From 59b54d7039629f9725e33d984f82ff8806de07ff Mon Sep 17 00:00:00 2001 From: Tim Repke <timmothey@gmx.de> Date: Sat, 19 Sep 2015 02:25:53 +0200 Subject: [PATCH] conditional events --- .../view/signups/game1/MAP_HOWTO.md | 3 +++ .../view/signups/game1/js/events.js | 25 +++++++++++++++--- .../view/signups/game1/maps/castle_fs.svg | Bin 1082896 -> 1083142 bytes 3 files changed, 25 insertions(+), 3 deletions(-) diff --git a/registration-system/view/signups/game1/MAP_HOWTO.md b/registration-system/view/signups/game1/MAP_HOWTO.md index acc7689..5b065dc 100644 --- a/registration-system/view/signups/game1/MAP_HOWTO.md +++ b/registration-system/view/signups/game1/MAP_HOWTO.md @@ -37,6 +37,9 @@ Folgende Attribute sollten gesetzt werden: - target (optional, für map type für mapchange) - destination (optional, target map für mapchange) - id +- action (action to call as defined in Events.actions) +- walkTo (before calling action, walk to point with this ID) +- condition (comma separated list of conditions to be true as defined in Environment.progress) Am Beispiel eines Achievements, welches beim drüberlaufen gefeuert wird und die Bernd weiterlaufen lässt: diff --git a/registration-system/view/signups/game1/js/events.js b/registration-system/view/signups/game1/js/events.js index a63efa5..c3c6fe5 100644 --- a/registration-system/view/signups/game1/js/events.js +++ b/registration-system/view/signups/game1/js/events.js @@ -24,7 +24,8 @@ function EventHandler(svg) { destination: this.getAttribute('destination'), stopsWalk: this.getAttribute('stopsWalk') === 'true', action: this.getAttribute('action'), - walkTo: this.getAttribute('walkTo') + walkTo: this.getAttribute('walkTo'), + condition: this.getAttribute('condition') }); } }); @@ -61,7 +62,14 @@ EventHandler.prototype.getEventOn = function(trigger, x, y, callback) { EventHandler.prototype.triggerEventOn = function (trigger, x, y) { var self = this; return this.getEventOn(trigger, x, y, function(event, bEnter) { - self.handleEvent(event, {trigger: trigger, x: x, y: y, bEnter: bEnter}); + var isActive = true; + if (event.condition) { + var conditions = event.condition.split(','); + for (var i = 0; i < conditions.length; i++) { + isActive = isActive && Environment.progress[conditions[i]]; + } + } + if (isActive) self.handleEvent(event, {trigger: trigger, x: x, y: y, bEnter: bEnter}); }); }; @@ -111,6 +119,17 @@ EventHandler.handleAction = function(event) { EventHandler.actions = { 'fs_open_board': function() { - console.log('fuck yeah!') + console.log('fuck yeah!'); + // TODO implement board fill + }, + 'fs_screamingGeorge': function() { + // TODO implement dialogue + console.warn('George is screaming'); + Environment.progress.fs_georgeScreamed = true; + }, + 'fs_firstApproach': function() { + // TODO implement dialogue + console.log('some talking going on'); + Environment.progress.fs_firstApproach = true; } }; \ 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 328d9498a66463adcd7994c2a366108e480ceefe..7ef694188d9a16d92fa29d2cecb1364b70b625b3 100644 GIT binary patch delta 561 zcmZ9IOH0E*6os+As?|E+$`=e-DWtJUXPN}8Xg6-$iMT9dGHrux5|R-`TeULiMnrHi zJ8|bm+$i{8{12}D1Ev#v&SJP6F6W%@-dt5LuB&H!fM@t1AL7G&gpcwpALHXZ$0ztC z&-1Al@OCU7a+zuIehi+AZbfNB+cq@|o4TQ*5{4LQhK0+PT7*SaFJsNrkzvDv)J3HS z=EY+N0D-&7w|fK@#a$09fw~vPY&{I4fH+MBE{pqIW>$vSG6d<;*VI*Hm9!)cA!r*i z7o}0UCFK$<eCcAX2WA930aO3dmSQKOr0w~Q4H`rZs*J<*#ViPSNNca6uxOwDsj(?* z=tV4H6IQHis80&Z>5#U-b|2p~VBtqT`u6t{6ME<|p>~sIU-bFYHVK_3@qaaO0^jwR z7x)#W9@pw#t3};vKqB|s%cU{%e3I@sBxWsIqdtp>@B9EUlHf7v(a){LAvy39u2o6A q5)#%-Ch?TZOx)gF=3lqZ!2N*eoP+G#-v$kNs4aOn`ufoW3qzk-jib^4 delta 410 zcmZqcbDGfO)X>7%!qmdt!qURp!q&px!qLLn!qvjv!qdXr!q>vTMc`KT^xX#;d8S*` z3+$TyphiH(w>&eYB*Rw8)I`t7!qnW*T!~8o0y0uF(=$qJl?=^H^~?=Tj4a_Y6}C#2 zmgagO<wkJ9N?Rop<LQR70@55ssmUdlrj|z2?HU9mr*AsQC<?K!p-w<L7;2xT5m>(o zTtD18Lkm5i!6wFV8K8A0hEV6h1wqzX7=u-sOfPH}kb>E2f^Mr>gMc8+Rx?9A6OcFI z#=vbgwFLVg;UA!_h6bi!Um^rSwwglBFhjA`0%GgMY5|$a6WaN<t2GKNVBG$?NkEzf E0DUlP$p8QV -- GitLab