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