From 5f66690a220f7e70cd4d26ee0762a10ffafaf691 Mon Sep 17 00:00:00 2001
From: Tim Repke <timmothey@gmx.de>
Date: Mon, 21 Sep 2015 21:37:26 +0200
Subject: [PATCH] answers can now be free text, stranger action done, goat
 fight done

---
 registration-system/view/js/api.js            |   3 +
 .../view/signups/game1/js/environment.js      |   4 +-
 .../view/signups/game1/js/story.js            | 171 +++++++++++++++++-
 .../view/signups/game1/js/svgUtils.js         |  14 ++
 .../view/signups/game1/maps/map_landing.svg   | Bin 6684548 -> 6738310 bytes
 .../view/signups/game1/test.html              |   2 +-
 registration-system/view/signups/game1/ui.css |  18 ++
 7 files changed, 201 insertions(+), 11 deletions(-)

diff --git a/registration-system/view/js/api.js b/registration-system/view/js/api.js
index f10bc58..c4a0e26 100644
--- a/registration-system/view/js/api.js
+++ b/registration-system/view/js/api.js
@@ -100,6 +100,9 @@ function Bachelor() {
             },
             'mehl': function() {
                 return /^(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/.test(value);
+            },
+            'pseudo': function() {
+                return /^[^0-9<>!?.::,#*@^_$\\"'%;()&+]{3,50}$/.test(value);
             }
         };
 
diff --git a/registration-system/view/signups/game1/js/environment.js b/registration-system/view/signups/game1/js/environment.js
index 637007e..0d3309e 100644
--- a/registration-system/view/signups/game1/js/environment.js
+++ b/registration-system/view/signups/game1/js/environment.js
@@ -13,7 +13,9 @@ Environment.progress = {
     fs_filledBoard: false,
 
     // landing map related
-    killedGoat: false,
+    landing_askedNickname: false,
+    landing_killedGoat: false,
+
 
     // -----------------------------
     // INVENTORY
diff --git a/registration-system/view/signups/game1/js/story.js b/registration-system/view/signups/game1/js/story.js
index 1a84041..f8fcaf5 100644
--- a/registration-system/view/signups/game1/js/story.js
+++ b/registration-system/view/signups/game1/js/story.js
@@ -51,7 +51,7 @@ Story.actions = {
                         }
                     }],
                     condition: !state.studityp
-                },{
+                }, {
                     bubble: '#tim_speech',
                     message: state.failed ?
                         'Wie ich sehe, hast du etwas gefunden? Noch Lust auf die Rüstung?' :
@@ -178,9 +178,15 @@ Story.actions = {
             };
 
             // hook listeners for field validations
-            fields.fs_board_name_family.elem.bind('input propertychange', function () {validateFields();});
-            fields.fs_board_name_given.elem.bind('input propertychange', function () {validateFields();});
-            fields.fs_board_email.elem.bind('input propertychange', function () {validateFields();});
+            fields.fs_board_name_family.elem.bind('input propertychange', function () {
+                validateFields();
+            });
+            fields.fs_board_name_given.elem.bind('input propertychange', function () {
+                validateFields();
+            });
+            fields.fs_board_email.elem.bind('input propertychange', function () {
+                validateFields();
+            });
 
             function validateFields() {
                 // test all fields
@@ -219,13 +225,139 @@ Story.actions = {
 
     // =================================================================================================================
     // Actions on the landing map
+    'landing_askingNickname': {
+        possible: function () {
+            return !Environment.progress.landing_askedNickname;
+        },
+        action: function () {
+            Environment.progress.landing_askedNickname = true;
+            Story.dialogueHelper([{
+                bubble: '#stranger_speech',
+                message: 'Hallo Fremder!'
+            }, {
+                bubble: '#stranger_speech',
+                message: 'Bei welch\' Namen willst du gerufen werden?'
+            }, {
+                input: {
+                    message: 'Gib\' hier einen Nicknamen an',
+                    check: function (value) {
+                        return Environment.fapi.data.testValidValue('pseudo', value);
+                    },
+                    action: function (value) {
+                        Environment.fapi.data.setValue('pseudo', value);
+                    }
+                }
+            }, {
+                bubble: '#stranger_speech',
+                message: 'Komischer Name! Nun gut, ich lasse dich wohl weiter ziehen.'
+            }]);
+
+        }
+    },
 
     'landing_goatFight': {
         possible: function () {
-            return true;
+            return !Environment.progress.landing_killedGoat;
         },
         action: function () {
+            var nodes = {
+                blast: Game.char.svg.select('#goat_blast'),
+                goat: Game.char.svg.select('#goat'),
+                milk: Game.char.svg.select('#goat_milk'),
+                meat: Game.char.svg.select('#goat_meat')
+            };
+            Game.actionsBlocked = true;
+            appearanceBlast();
+
+            function startDialogue() {
+                Story.dialogueHelper([{
+                    message: 'Ohje, Ohjé! Eine wilde Ziege!',
+                    action: goatAttacking
+                }, {
+                    message: 'Vielleicht lässt sie sich ja zähmen...',
+                    action: goatAttacking
+                }, {
+                    answer: [{
+                        message: 'Ziege zähmen und melken',
+                        action: function () {
+                            goatShaking(function () {
+                                nodes.milk.style('display', 'block');
+                                goatAttacking();
+                            })
+                        }
+                    }]
+                }, {
+                    message: 'Hm, sie ist immer noch wütend...'
+                }, {
+                    answer: [{
+                        message: 'Ziege streicheln',
+                        action: function () {
+                            goatShaking(function () {
+                                nodes.meat.style('display', 'block');
+                                nodes.goat.style('display', 'none');
+                            })
+                        }
+                    }]
+                }, {
+                    message: 'Huch, jetzt ist sie zu einem Haufen Schinken zerfallen...'
+                }], null, function () {
+                    Environment.progress.landing_killedGoat = true;
+                    Environment.progress.inventory_goatDroppings = true;
+                    setTimeout(function () {
+                        nodes.milk.style('display', 'none');
+                        nodes.meat.style('display', 'none');
+                    }, 2000);
+                });
+            }
+
+            function appearanceBlast() {
+                var cnt = 0;
+                var looper = setInterval(function () {
+                    cnt++;
+                    nodes.blast.style('display', (cnt % 2) ? 'block' : 'none');
+                    if (cnt > 10) {
+                        clearInterval(looper);
+                        nodes.goat.style('display', 'block');
+                        nodes.blast.style('display', 'none');
+
+                        startDialogue();
+                    }
+                }, 60);
+            }
+
+            function goatAttacking() {
+                nodes.goat
+                    .transition().attr('transform', translate(-10, 10))
+                    .transition().attr('transform', translate(10, -10))
+                    .transition().attr('transform', translate(-10, 10))
+                    .transition().attr('transform', translate(10, -10));
+
+                function translate(relx, rely) {
+                    return 'translate(' + relx + ',' + rely + ')';
+                }
+            }
 
+            function goatShaking(callback) {
+                var goatPos = getInfo(Game.char.svg, nodes.goat);
+                nodes.goat
+                    .transition().attr('transform', rotate(15))
+                    .transition().attr('transform', rotate(-15))
+                    .transition().attr('transform', rotate(0))
+                    .call(helper_endAll, callback);
+
+                function rotate(deg) {
+                    return 'rotate(' + deg + ',' + goatPos.xCenter + ',' + goatPos.yCenter + ')';
+                }
+            }
+
+            function helper_endAll(transition, callback) {
+                var n = 0;
+                transition.each(function () {
+                    ++n;
+                }).each('end', function () {
+                    if (!--n && callback) callback.apply(this, arguments);
+                });
+            }
         }
     }
 };
@@ -234,7 +366,7 @@ Story.dialogueHelper = function (dialogue, context, done) {
 
     var speed = {
         talk: UrlComponents.isSet('fastTalk') ? 1 : 45,
-        pause: UrlComponents.isSet('fastTalk') ? 50 : 1000
+        pause: UrlComponents.isSet('fastTalk') ? 50 : 1500
     };
 
     Game.actionsBlocked = true;
@@ -255,14 +387,32 @@ Story.dialogueHelper = function (dialogue, context, done) {
             dialogue_i++;
             if ('condition' in part && !part.condition) {
                 dialogueStepper();
+            } else if (part.input) {
+                manualInput(part.input);
             } else if (part.answer) {
                 answerSelection(part.answer);
             } else {
-                plotMessage(part.bubble, part.message, dialogueStepper);
+                plotMessage(part, dialogueStepper);
             }
         }
     }
 
+    function manualInput(input) {
+        var inputHTML = '<div>' + input.message + '</div>' +
+            '<input type="text" id="gameDialogueInput" />' +
+            '<button id="gameDialogueInputDone" style="width: 80px; border: 1px dotted #4e8260;">Fertig</button>';
+        dialogueBox.html(inputHTML);
+        $('#gameDialogueInputDone').prop('disabled', true).click(function () {
+            input.action($('#gameDialogueInput').val());
+            dialogueStepper();
+        });
+        $('#gameDialogueInput').bind('input propertychange', function () {
+            if (input.check($(this).val())) {
+                $('#gameDialogueInputDone').prop('disabled', false);
+            }
+        });
+    }
+
     function answerSelection(answers) {
         var possibleAnswers = answers.map(function (answer, i) {
             if (!('condition' in answer) || answer.condition)
@@ -285,9 +435,11 @@ Story.dialogueHelper = function (dialogue, context, done) {
         }
     }
 
-    function plotMessage(bubble, message, plotDone) {
+    function plotMessage(part, plotDone) {
+        var bubbleNode = !part.bubble ? null : Game.char.svg.select(part.bubble);
+        var message = part.message;
+
         var i = 0;
-        var bubbleNode = !bubble ? null : Game.char.svg.select(bubble);
         var messageStepper = setInterval(function () {
             i++;
             if (i > message.length) {
@@ -295,6 +447,7 @@ Story.dialogueHelper = function (dialogue, context, done) {
                 if (bubbleNode) bubbleNode.style('display', 'block');
                 setTimeout(function () {
                     if (bubbleNode) bubbleNode.style('display', 'none');
+                    if (part.action) part.action();
                     plotDone();
                 }, speed.pause)
             } else {
diff --git a/registration-system/view/signups/game1/js/svgUtils.js b/registration-system/view/signups/game1/js/svgUtils.js
index b8bcebf..0cbc072 100644
--- a/registration-system/view/signups/game1/js/svgUtils.js
+++ b/registration-system/view/signups/game1/js/svgUtils.js
@@ -1,6 +1,7 @@
 function translate(x, y) {
 	return "translate("+x+", "+y+")";
 }
+
 function showCoords(x, y) {
 	document.getElementById("coords").innerHTML = '('+x+', '+y+')';
 }
@@ -11,6 +12,19 @@ function getTranslation(svg, node) {
 	var matrix = svg.getTransformToElement(node);
 	return [matrix.e, matrix.f];
 }
+function getInfo(svg, node) {
+	var bbox = node[0][0].getBBox();
+	var xy = Vec.add(getTranslation(node[0][0], svg[0][0]), [bbox.x, bbox.y]);
+	return {
+		x: xy[0],
+		y: xy[1],
+		xCenter: xy[0]+(bbox.width/2),
+		yCenter: xy[1]+(bbox.height/2),
+		height: bbox.height,
+		width: bbox.width
+	}
+
+}
 
 function euclidianDistance(a_x, a_y, b_x, b_y){
 	return Math.sqrt((a_x-b_x)*(a_x-b_x) + (a_y-b_y)*(a_y-b_y));
diff --git a/registration-system/view/signups/game1/maps/map_landing.svg b/registration-system/view/signups/game1/maps/map_landing.svg
index db4ae1a6fd048a97f29e8f8cff017fac75dcbd70..d81e9c54971307d3e00406d6db0c6afc346fcfd8 100644
GIT binary patch
delta 18987
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

delta 7949
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
F{{vL@xPt%y

diff --git a/registration-system/view/signups/game1/test.html b/registration-system/view/signups/game1/test.html
index 5b853da..e233a7b 100644
--- a/registration-system/view/signups/game1/test.html
+++ b/registration-system/view/signups/game1/test.html
@@ -64,7 +64,7 @@
     var maps = ['map_landing', 'castle_entrance', 'castle_fs', 'dorf'];
     var game = new Game({
         startMap: maps[UrlComponents.getValueOf('map') || 0],
-        showEventLayers: UrlComponents.isSet('showEventLayers'),
+        showEventLayers: UrlComponents.getValueOf('showEventLayers') === 'true',
         pathFindingGridSize: UrlComponents.isSet('verbosePF') ? 5 : 5,
         verbosePathFinder: UrlComponents.isSet('verbosePF'),
         usePathFinding: true,
diff --git a/registration-system/view/signups/game1/ui.css b/registration-system/view/signups/game1/ui.css
index 0757bf8..f19b376 100644
--- a/registration-system/view/signups/game1/ui.css
+++ b/registration-system/view/signups/game1/ui.css
@@ -64,6 +64,24 @@
 #gameDialogue ul li:hover:before {
     content: '↠';
 }
+#gameDialogue input, #gameDialogue button {
+    border: 1px dotted black;
+    background: transparent;
+    color: white;
+    margin: 5pt 2em 0 0;
+    font-size: 12pt;
+    width: 50%;
+    padding: 0.3em 0.5em;
+}
+#gameDialogue input:hover, #gameDialogue input:focus, #gameDialogue button:hover {
+    background: #474c46;
+}
+#gameDialogue button:active {
+    background: #272c26;
+}
+#gameDialogue button:disabled {
+    color: red;
+}
 
 /*
 #2E2E2E dark
-- 
GitLab