From d07c6306164c7bc1555af0eeabf5ca0afbf4b892 Mon Sep 17 00:00:00 2001 From: Manuel Herrmann <it@icetruck.de> Date: Thu, 24 Sep 2015 19:56:11 +0200 Subject: [PATCH] elevator open/close; context for actions --- .../view/signups/game1/js/character.js | 6 ++-- .../view/signups/game1/js/events.js | 12 +++---- .../view/signups/game1/js/story.js | 32 ++++++++++++++++++ .../signups/game1/maps/castle_entrance.svg | Bin 585483 -> 587639 bytes 4 files changed, 41 insertions(+), 9 deletions(-) diff --git a/registration-system/view/signups/game1/js/character.js b/registration-system/view/signups/game1/js/character.js index b2b05d6..3fea714 100644 --- a/registration-system/view/signups/game1/js/character.js +++ b/registration-system/view/signups/game1/js/character.js @@ -118,7 +118,7 @@ Char.prototype.animate = function() { Char.prototype.physics = function() { if (!this.moveTarget || this.moveTarget && this.moveTarget.length == 0) { if (this.onArrivalCallback && typeof this.onArrivalCallback.func === 'function') - this.onArrivalCallback.func(this.onArrivalCallback.param); + this.onArrivalCallback.func.apply(null, this.onArrivalCallback.params); this.onArrivalCallback = null; return; } @@ -163,11 +163,11 @@ Char.prototype.updatePosition = function() { * @param y coord * @param onArrival optional callback function */ -Char.prototype.setMoveTarget = function(x, y, onArrival, onArrivalParam) { +Char.prototype.setMoveTarget = function(x, y, onArrival, onArrivalParams) { this.onArrivalCallback = { func: onArrival, - param: onArrivalParam + params: onArrivalParams }; if (Game.config.usePathFinding) diff --git a/registration-system/view/signups/game1/js/events.js b/registration-system/view/signups/game1/js/events.js index 7f3190a..5f63127 100644 --- a/registration-system/view/signups/game1/js/events.js +++ b/registration-system/view/signups/game1/js/events.js @@ -49,7 +49,7 @@ EventHandler.prototype.getEventOn = function (trigger, x, y, callback) { this.walkOnEvents[node.id] = true; callback(node, true); } else { - callback(node); + callback(node, null); } } else { if (trigger == 'walkon' && this.walkOnEvents[node.id]) { @@ -94,7 +94,7 @@ EventHandler.prototype.handleEvent = function (event, context) { Game.instance.nextMap(event.destination, event.target); break; case 'special': - eventWasActive = EventHandler.handleAction(event); + eventWasActive = EventHandler.handleAction(event, context); break; } @@ -103,7 +103,7 @@ EventHandler.prototype.handleEvent = function (event, context) { } }; -EventHandler.handleAction = function (event) { +EventHandler.handleAction = function (event, context) { var isPossible = Story.actions[event.action].possible(); // check, whether action exists and is allowed at this point if (event.action && event.action in Story.actions && isPossible) { @@ -115,18 +115,18 @@ EventHandler.handleAction = function (event) { var xy = Vec.add(getTranslation(spawn[0][0], Game.char.svg[0][0]), [bbox.x, bbox.y]); // trigger action, then walk to target if (event.directAction && event.directAction === 'true') { - Story.actions[event.action].action(event); + Story.actions[event.action].action(event, context); Game.char.setMoveTarget(xy[0], xy[1]); } // walk to the action point, start action on callback else { - Game.char.setMoveTarget(xy[0], xy[1], Story.actions[event.action].action, event); + Game.char.setMoveTarget(xy[0], xy[1], Story.actions[event.action].action, [event, context]); } } } // otherwise start action directly else { - Story.actions[event.action].action(event); + Story.actions[event.action].action(event, context); } } return isPossible; diff --git a/registration-system/view/signups/game1/js/story.js b/registration-system/view/signups/game1/js/story.js index e5118a6..03b43df 100644 --- a/registration-system/view/signups/game1/js/story.js +++ b/registration-system/view/signups/game1/js/story.js @@ -7,6 +7,38 @@ Story.actions = { // ================================================================================================================= // Actions in the Fachschaft room + 'castlee_door': { + state: { + doorInitialPos: {} + }, + possible: function() { return true; }, + action: function(event, context) { + if (context.bEnter === null) return; + + var state = Story.actions.castlee_door.state; + var doorLeftId = '#' + event.id + '_l'; + var doorLeft = Game.char.svg.select(doorLeftId); + var doorRightId = '#' + event.id + '_r'; + var doorRight = Game.char.svg.select(doorRightId); + + if (state.doorInitialPos[doorLeftId] === void 0) + state.doorInitialPos[doorLeftId] = Number(doorLeft[0][0].getAttribute('x')); + if (state.doorInitialPos[doorRightId] === void 0) + state.doorInitialPos[doorRightId] = Number(doorRight[0][0].getAttribute('x')); + + var l = state.doorInitialPos[doorLeftId]; + var r = state.doorInitialPos[doorRightId]; + + var moveTo = context.bEnter ? 50 : 0; + + doorLeft.transition() + .duration(300) + .attr('x', l - moveTo); + doorRight.transition() + .duration(300) + .attr('x', r + moveTo); + } + }, 'fs_firstApproach': { state: { welcome_message: false, // welcome message spoken diff --git a/registration-system/view/signups/game1/maps/castle_entrance.svg b/registration-system/view/signups/game1/maps/castle_entrance.svg index fe44675e8888892d617c61e91927965fa2164151..d91c3702fea420fad38692b5176d9638dbf1723e 100644 GIT binary patch delta 2457 zcmcIlO=w(I6lPu;=MoDlX`(`dx6_4H-rU^(pVIUPOrf|F?5brLW~Oy)oEb7hV+0w{ zMNw-?>*6l56x>A7-RvZL!Ht5!ph9sG!31&Rri$mjnfGSeOsWM9T=M4LbI;HBedpW{ zemwri-tjMd^tiM{;blgtr0=drH`b$EZ#{~BdhcXm3WvXX<665?Zq-g!-drd+Y6!Pf z^L>Y_3k5@o6P!uzdpD!=Io<o~X0(`_a7_F2Ytb<$*@L%M>Wyl1r3jAc0Y~7LS^x1` zRLD{P+lSH2jqSAv)WuqI(W1}op&UPG@h`d4m8(trK~%J)j&qOYP$nh|H6jEkHI zLnXtU5y_p1i;P>sjW7}?pF&&C;vyy18YVI4L}_7F9L$7qTHvCUgjuOX%!p7-aR1JC z=)@&Si80EA5D?251(zi;(%KM15ltPn5JPZcxmGU3kW46nnIoK9;~<72hJp`VREj9Z z6pICcT_0_s(q+Ync1%LflrSZPz+i73m_dZ#R$J*H0%W4BG9f>$47ZpY!WeZBK)_9^ zg~ml=h~`qpkgTwbir$x7XfE<|J80Vf`8|5xAKr?d=~fpCZ(sliN~2WA5R?cZjl~sA zV@<%549Ny$Li&U<EfOI6Un5%s<Cq4RlT)ape{pmt^FiaHCf$C3#LNO>+3C<lwlxfp zZp8!l+3)lNzco-9#_eXc-h!2=+64TSFsZ8Xt0U*2z^wfJ*Ox)N1NXv=IS%?Alx_U` z-=H(TvW>1~GJUG|`!;&}aQJ<~U*AD9e)H4(q(A#Bn)KUyXfCjE)PKE$8r^<3Vw_OJ zDW!yRD`KS`0TKj%7&Rc?K^7@9u#*6%hQxq^2Y{#6u#+Z_y9qHPyzHlCXfAP|6>y%$ zy`Pgb4S5hH%vlR+$r!;GhKvP9(yGTm{!ff}`U~KEVIx1CfZYSIo8udRK|2#B73kj* zOGD58EBz0vI}qg1uZb>3K^sEc#eKXo0^|V5QS<)*V+B*jj?t|@w})m`2KghYoQa7e ze)E(3)C^1~X^7)o#M}`pU<BD0{F#mXTqg5YSHNt7aSA9)3vDP2!!XD!NLs`WrlAa@ zhQZjfnt|S71}biy!3w6aFjmJ!xJKb#7_tmzI)jG>q^t=9S7t<Db!eTX`jw6-Rh!M_ zfpWaLi(c~gcG0su?Xb>jtF};Rw`!Goc_|ZExzedO8w-U>x!qZ+)e;{*tJPoJMNj*) z8~LNd(n=O4yra~ySTY9LN@^fS5VjMP#T=%;gKFV~N~i;#DtLM<6zkwfN)4r@Hp9Uc zifENPuL-U`I`_o1zjZr$&QI>4C;hEmglDU@cBkGbkEU9>()K^^qQZ1}`D(2Lx0lMR zwdGQ~RbFWXGG<>KS6Wv0eP|>=`SP9USgzvfUBvw6o#;?Epvp&49gHb>j({!BO)P;x z!7Z2n2f6-Y4(f+Kt~|iNWveMXR)D{;L<;dRX_<Y}8mFvLVfoF^fOA0M<ph?+N7qjQ U&!2`{r{=Goo;o$(z7GHX2838^Pyhe` delta 1036 zcmbVK%}Z2K6ld<J@8VYrlR!{jGY~G`yWZ~))3Al@YY{FI37gT$vSA$hpf*t;kxdZQ zg;wPv0yom;1=6N}p%^7Bqm3rvqD_kybtZK}q845_T;4h7_wMif&hPtH_U^~*qDKvm zg{52bXm%c@l6i#I?xYE~{^lGyc!X0aiDZ;#n#0;DOi#^>pDpJ4$FB`$lp~BP%d}sb zLnl%;LHE#bDy=Q`7c1yc>twDlF<BnW09@BHT@B3f?OG$ix%}Pcmnx_w#eDHT>YQDz zAc!<X14JW46GV`#R`B^@|LJ)U_($uw!;dZm9m&IY_!SzFlrSb`#E25g$}naM=sOj~ zf)U}Yfs`}EIwx7g2^Yp{$PlTGj5v&-skLFO4Kc=Y3os&tX4b!0#=Rq45M?cwQOq3C zN*EW$ToWp|gcrCaMo3zNOJbF=wLZd}G?0QeMulOKpuhtFVGLp_BPolhk5=&5sL+IS zAx#v+5K0IEC_|WJR>RL7p^UR_ZW`W}5hY4-S?h8zh*mZN22wer!dPjd1!pGWlyCzB zBpWNZ8~L@-bbIQkU*E$0{`C(K@WESb{g+idRoAm8dGZ0@Xx;uky@lKT`#0%M|MWBN z_Te&W@n@>2%|G76)BZpe9S*YjJf-=(KVC(>r!Ez9(_<G3`7+z_NEluzoGVYl-i;)V z8LjJuT}K$$40TM|dgbb1#!*ECNUi+PZQRpQf)uUSOJEr4pKao<pp+Xg*Y?v^McF-6 zPS&aH+I7EFv@is0Vf^)%!M~X_?=Uej_3c%Z*+b@!E}}lf{&W!r7Al0}|7U}D+4!M_ ipxZAt;YPpk4HuJ*ulQ%`FB`ND^i3RV9_X974A(CQxgNFv -- GitLab