From c18d9221f9c519b08cd21fbdfeace23b387917b9 Mon Sep 17 00:00:00 2001 From: Aaron Fischer Date: Tue, 12 Sep 2017 22:40:34 +0200 Subject: [PATCH] Basic movement finished --- src/assets/images/door_sheet.png | Bin 0 -> 426 bytes src/assets/images/room_bridge.png | Bin 250 -> 311 bytes src/assets/images/room_engine.png | Bin 266 -> 309 bytes src/assets/images/room_hydro.png | Bin 250 -> 557 bytes src/assets/images/room_lift.png | Bin 401 -> 566 bytes src/assets/images/room_stasis.png | Bin 812 -> 526 bytes src/assets/images/room_stasis_dark.png | Bin 183 -> 193 bytes src/assets/images/stasis_doorSheet.png | Bin 293 -> 0 bytes src/assets/images/stasis_lightSwitch.png | Bin 104 -> 130 bytes src/bubble.js | 2 +- src/muri.js | 32 +++++++++++++++++- src/room_bridge.js | 8 +++++ src/room_engine.js | 8 +++++ src/room_hydro.js | 8 +++++ src/room_lift.js | 39 ++++++++++++++++----- src/room_stasis.js | 41 +++++------------------ 16 files changed, 94 insertions(+), 44 deletions(-) create mode 100644 src/assets/images/door_sheet.png delete mode 100644 src/assets/images/stasis_doorSheet.png diff --git a/src/assets/images/door_sheet.png b/src/assets/images/door_sheet.png new file mode 100644 index 0000000000000000000000000000000000000000..c3bb1bd773830ee29cb38fd5e43d5ec84fdd53c7 GIT binary patch literal 426 zcmV;b0agBqP)P#RpR6GEBXrnUE9YJB>4nG@|W{TQ;6Z^wUNY$su(9Q zm9P*Zo=EVHR~BN}?GId&NVcTjh)sk>xtx}F7)icLb&6T)JS&6*1Hhvz=vqVMV*YrY-^M5hw}r3;vG=&MI!20+d_k>EamT(fRhu zZLS6d0hWN|xBu%cwT(ot&plcn-S}BVbKWtX)*V6G9;RImLenQcNur|(85X%EFC6Py&5esKEm^4hcx*%vw26$Q+d judP(QrMqd$rge)6u3e>J-! gR~`HJDtaG-ZAr?P*4b8;KzA^By85}Sb4q9e0DNawr~m)} diff --git a/src/assets/images/room_engine.png b/src/assets/images/room_engine.png index ec8312e55f041fc03241f16cae3f80a8a612b676..1cf0599c8befe428342e61d515acc19298a27b6f 100644 GIT binary patch delta 294 zcmeBT+R8LRqMn19fq}t(+4@2tWf0&K;tHgtW#!a06zpt`N(3G>XSzfQ?jns`DX+#^Nk=DKsnGFqNI8EZF{RffAs z@^v3sWaBr<+nhgj%EJ#)i^P=HUeWWMt$eB=VuR{wgW%WSE-vC}|9Z}JZ+5!H9#0Q} zGpGC1TJNgdiMNgDi)Wnk@Ipb)G@`G%(VE7Pdx_;b$hxvhFF|_d&!dTumO+D#rtRe zF8ld?zZX|@T$4saqfT!mSH-0XB5`_oMU!V2-+5xMVy}4rZ^<|_0000nlQchF<|NsC0|NsC0|NsC0 z|NsBZA+nSJ00EpyL_t(YiS3q)Zi6rkMV&ZXE&u-q&yF2l34b`KRi|k+1rwCsgC79^ z-(c_`An9dx1%X*hHuvCo9le0TP?+=tZH(=*jrbK11}?ztvfR|!og$wPM2sX75oOcg zMREs%Sj4`>a1ctV0f^B-z23knq+=|n0}5f)WulraUVh5Eh-44Jt?-e;#8UVgiYem* zJZl!;8RUX7pnq769brQc0W5>hLz=i$!8|$I8cZjjtkEk->8es3)*|yP>haN+FsGEe zivdK$(FA>Iprwl(#XV)fh-zYO+OkGqS@T{SFcfnaB3fki^@J^JvX-S!ms-Epqna>3 z$Zoo+o6}a7RL)VNnn0G^0KnSGYL-LbA>?)>%z5|FLVs`QwS^}baSPWv5;)7NitM94 zl@Jg~ydCjw6k8C9uHLMU&86OHOVF}Y^@rY`gz!MUx#4yP0?C%}x!XP#iye!- zq0A!4I@A8S$ZSlWR+n202?TV5U;;)Ej2S74B!)~y5`Fyzkf|@o{!P_inP}l_iTnop i?XUU|c`%^f;JO(e4b0000b7 delta 234 zcmZ3>@{4hTL_G^L0|UdaFsA|_B^2Nj;tHgtPEzqq{=~WQcF)KAEK^pyE)cpV|DcEA!n2T7 zPgnVJoL|Twzf_g6v0dzA-m8oICTFXPcYZxPopY!6m38H3cl`DHGbuVKX_3{RgoD9- g-WP4kI~A4KJFJQ?7S3tD1at?3r>mdKI;Vst08u7c7XSbN diff --git a/src/assets/images/room_lift.png b/src/assets/images/room_lift.png index 03288b1f5ad13d48f20c2b13a33caf5755aa1a7d..ec2cbca466e2e66c2ee6645a79ea3f7099f2a4f7 100644 GIT binary patch delta 542 zcmV+(0^$9U1GWT^BYy$?Nkl!AWVzAcB^t zsU_N?rLiHGhK7cg{({#21&OFBh#+XtLAaD7Bnk2d7=bmshsfRO@e01rd-#5aXLvlh z=e~UXzH;yDf(et$ruKI7clVD!9nC%KlDwWoJR*5L(wwi={C^HAp?)RT4|Yh6#=?ns z)7(0W`4;ifFa!=spiP(plYZlkKoNj&#=9=`q`3bsXue zr{_1e!|FKCS-EVA`LH?;b5>9ZRn$gBZJ?}@&U4n{N_wmKx-gG0xtskh31$b8=P#F3 z+st~{KV&{H0Dq!bBzjiEOZ{5^{2I~k^VfO-fOezB zOk-vNz{$~apmS}a5pS%SG5Vr~D84W?Lzx1i+p zalkJljbjg*SQWKl*t3Yn!Xx@Tz|rnbxulYh#3>ph;uH-9;(Qhb!dVmuXHg)WMS*Y@ g1;SYrI2X}b|8lzsgmC6*$bn2EPCR0Uk+2K~!ko?V7O)!Y~v?^9gPuqJoo~AUKKct`3g= zgQDN!$GQ6fPF(~qM6@(DOC9`Cf%#vBp^#Dk~ VnR}--qk#Yb002ovPDHLkV1igKrak}w diff --git a/src/assets/images/room_stasis.png b/src/assets/images/room_stasis.png index ccd27c04721dd6aa7b78726adc68a069ba632b3f..420feb5a80fb2226c180ac95572762dd363bb28f 100644 GIT binary patch delta 512 zcmV+b0{{K2295-f7=H)@0000#rmt}T001yhOjJbx000{u9w#UuK0PvZabEcN^7$r5 z{g)r++jM5x@227|u7Up$87~(iJ18|$Nmg>Z^<|_0000nlQchF<|NsC0|NsC0|NsC0 z|NsBZA+nSJ00DhTL_t(YiS3r#a)clZhC`CoZO8WgAGbm{1%J>2I^MMZ-ee)+BL^M9 zp#2fzlwk~bnG=EdlMfp<`XE;_;qFYFn4Fl$j6Je16DLBiA)`AJ5#f{(5uKTs1A~GA zZJ*x8dv{6(hm%+!aYg%dm&@OY-HBx;^@(Av3`L341)s2>WKu(lvu7Y^-=~1^j*aK46~zku4&hcNQZDXn{2YYk zmB*O%o3230a;3%t*H7F%kQi4#)+Yvxmus{YH$Z%t@p)HQMz(hif;Rf&)fC9~9T40h zK_z7Ag5-^FN<*~3ywm4H(rG5tl7oD=1vbyj_YnxqLg)~(Z5E=PuR*@FHm4dw7a;8& zYCvcXGO9-)^ax}JRFGuf1n+a0b)x>L;#2d9Y_EG010qNS#tmY3ljhU z3ljkVnw%H_000McNliru;Ry>C7Y9g@NdN!<0*FaOK~y-)g@07BirYXCT}e^6Bh8LQ z;NTkX`b;jJ*W!rV1HnP6NJb%TIB=0V;5IV(fJ-{#-bJb-o&O<4NS%+#?9579=T>+Q z{5Nm{pdUfQ!Lsc)8r5agPV9WUJ3I~~U)Ka8qJ=cpbBG#|JYbAG&v0gM153fZ7 z;%uXlQex#YU*>c4p0@lH`q9y7>R?l5OGF_D9x)Z zA!%o$MkQFUl`R5#CT2`gBiVG@w>>x+XJ3KB?yno?8we)QUzns{fnrJwG*(B6p@o*x zi&!^q$VSfo{#M){JF@_1Od%23$#7#x!PPOvW`>|u>H3PK6y^dc5de*KOcct)PL#)+bi(8_UUSkPUQkIDDVn}I+j4fahs(|msJfR2)_$N!-n6f6uTKr;DzkCNQqpH>OPDU}fA&FA7yg<+7g zUaw6U1|q(x>v|rBA<74QiB@44h;*ZW{h4^M{n=$h6nvhZgkgv>=b{h{QRvEsVTe*M fmm0Px1i|VMV*YrY-^M5hw}r3;vG=&MI!20y5Xr#WBRA^X*wf zK?VZ`Cc{3)s;~Mxv|fBM6wu;ia8pX37xLET=Oe9o>ept<1J%!{+R)12@NdD5Q$P-b Mr>mdKI;Vst0NB1s%K!iX delta 167 zcmX@exSer=L_G^L0|UdaFsA|_B^uxp;tHgt)%pg)`r<;{$49@O1Ta JS?83{1OQQ&D?b1L diff --git a/src/assets/images/stasis_doorSheet.png b/src/assets/images/stasis_doorSheet.png deleted file mode 100644 index 2c6a83b7716825f76774900ebbd3ba5754215191..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 293 zcmeAS@N?(olHy`uVBq!ia0vp^2|z5$!VDz6BfnJwDTx4|5LX~AEvFe2GcT}Y%_4QI~#0_lcq{yF#G70BzvR(UU%fBS*|e_}HGK6AdaD%+>OVe5Z2 l?N!D~AH@bw=6PO??2E!|lT9`{6al@#;OXk;vd$@?2>|6=XUG5m diff --git a/src/assets/images/stasis_lightSwitch.png b/src/assets/images/stasis_lightSwitch.png index bf35a73b72f96dc0e9b9c35f77d4964026f5f873..fab4f61db4058f0a16920e63a4ece869b9a6a3f9 100644 GIT binary patch literal 130 zcmeAS@N?(olHy`uVBq!ia0vp^EI`c4!3HFg*81KCQl6eJjv*W~eGe`aZ7|?*y%;XB zB+yqRJ4MW9cM0<}r^bZ#u6g}Wuok)O1jW=Ix8 x=Z~6oKp_!N7sn6|+2jO+goGrK6d=LC%)s2u;2v`Q-v*#OgQu&X%Q~loCIAP)7lr@; diff --git a/src/bubble.js b/src/bubble.js index 6da73d6..22b5f46 100644 --- a/src/bubble.js +++ b/src/bubble.js @@ -40,7 +40,7 @@ } bubble.skip('talk'); var text = texts.shift(); - return show(text, position || [5, 52]) + return show(text, position || [5, 46]) .then(function(what) { if (what === 'talk') { return Promise.resolve(what); diff --git a/src/muri.js b/src/muri.js index 156617d..f1f66da 100644 --- a/src/muri.js +++ b/src/muri.js @@ -64,6 +64,36 @@ var muri = (function() { muri.get = fetchObject('modules'); muri.room = fetchObject('rooms'); + muri.changeRoom = function(room) { + var fromRoom = muri.currentRoom; + muri.currentRoom = room; + if (muri.room(room).onEnter !== undefined) + muri.room(room).onEnter(fromRoom); + }; + + muri.door = function(room, position) { + var doorAnimationSheet = kontra.spriteSheet({ + image: kontra.assets.images.door_sheet, + frameWidth: 13, frameHeight: 22, + animations: { + closed: {frames: 0}, + opened: {frames: 5}, + open: {frames: '0..5', frameRate: 6}, + close: {frames: '5..0', frameRate: 6} + } + }); + var doorSprite = kontra.sprite({ + x: position[0], y: position[1], + animations: doorAnimationSheet.animations + }); + return muri.get('entity') + .create(room+'.door', doorSprite) + .addCallback(function() { + doorSprite.playAnimation('open'); + setTimeout(function() { muri.changeRoom('lift'); }, 1000); + }); + }; + muri.setup = function() { kontra.assets.load( 'room_stasis_dark.png', @@ -71,7 +101,7 @@ var muri = (function() { 'room_engine.png', 'room_bridge.png', 'room_hydro.png', - 'stasis_doorSheet.png', + 'door_sheet.png', 'stasis_lightSwitch.png', 'room_lift.png', 'lift_button.png' diff --git a/src/room_bridge.js b/src/room_bridge.js index 64fc4e6..8c3df2e 100644 --- a/src/room_bridge.js +++ b/src/room_bridge.js @@ -3,16 +3,24 @@ var bridge = {}; + var background, door = null; var roomState = { }; bridge.init = function() { + background = muri.bg('bridge'); + door = muri.door('bridge', [83, 4]); + }; + + bridge.onEnter = function() { + door.sprite.playAnimation('close'); }; bridge.update = function() { }; bridge.render = function() { + background.render(); }; bridge.name = 'bridge'; diff --git a/src/room_engine.js b/src/room_engine.js index c100471..312c2df 100644 --- a/src/room_engine.js +++ b/src/room_engine.js @@ -3,16 +3,24 @@ var engine = {}; + var background, door = null; var roomState = { }; engine.init = function() { + background = muri.bg('engine'); + door = muri.door('engine', [8, 10]); + }; + + engine.onEnter = function() { + door.sprite.playAnimation('close'); }; engine.update = function() { }; engine.render = function() { + background.render(); }; engine.name = 'engine'; diff --git a/src/room_hydro.js b/src/room_hydro.js index a3b3ccd..cb0a43d 100644 --- a/src/room_hydro.js +++ b/src/room_hydro.js @@ -3,16 +3,24 @@ var hydro = {}; + var background, door = null; var roomState = { }; hydro.init = function() { + background = muri.bg('hydro'); + door = muri.door('hydro', [38, 9]); + }; + + hydro.onEnter = function() { + door.sprite.playAnimation('close'); }; hydro.update = function() { }; hydro.render = function() { + background.render(); }; hydro.name = 'hydro'; diff --git a/src/room_lift.js b/src/room_lift.js index e612ee7..e4f3d10 100644 --- a/src/room_lift.js +++ b/src/room_lift.js @@ -9,6 +9,10 @@ position: 1 }; + var r = function(a) { + return a[Math.floor(Math.random()*a.length)]; + }; + var createButtonEntity = function(i, room) { var e = muri.get('entity') .create('lift.button'+i, @@ -17,8 +21,17 @@ .addCallback(function() { buttons.forEach(function(b) { b.sprite.playAnimation('off'); }); muri.get('entity').get('lift.button'+i).sprite.playAnimation('on'); - muri.get('bubble').talk([room], [65, i*4+8]); - setTimeout(function() { muri.currentRoom = room; }, 1000); + var goMessage = r([ + 'Sure, ' + room, + 'Okay, straight to ' + room, + 'Set ' + room + ' for destination', + room + ', okay' + ]); + muri.get('bubble') + .talk([goMessage]) + .then(function() { + muri.changeRoom(room); + }); }); e.sprite.playAnimation('off'); return e; @@ -34,18 +47,26 @@ } }); - background = kontra.sprite({ - x: 0, y: 0, - image: kontra.assets.images.room_lift}); + background = muri.bg('lift'); buttons = [ - createButtonEntity(0, 'engine'), // Engine room - createButtonEntity(1, 'stasis'), // Stasis - createButtonEntity(2, 'hydro'), // Hydro Deck - createButtonEntity(3, 'bridge') // Bridge + createButtonEntity(0, 'bridge'), // Bridge + createButtonEntity(1, 'hydro'), // Hydro Deck + createButtonEntity(2, 'stasis'), // Stasis + createButtonEntity(3, 'engine') // Engine room ]; buttons[1].sprite.playAnimation('on'); }; + lift.onEnter = function(fromRoom) { + var welcomeMessage = r([ + 'Welcome on board, where do you want?', + 'Please specify your destination.', + 'Insert desired deck on console.', + 'What level please?' + ]); + muri.get('bubble').talk([welcomeMessage]); + }; + lift.update = function() {}; lift.render = function() { diff --git a/src/room_stasis.js b/src/room_stasis.js index 981d0be..9b8b9ae 100644 --- a/src/room_stasis.js +++ b/src/room_stasis.js @@ -4,8 +4,7 @@ var stasis = {}; var background, backgroundDark = null; - var doorAnimationSheet = null; - var doorSprite = null; + var door = null; var roomState = { isDoorOpen: false, isLightOn: false, @@ -13,27 +12,12 @@ }; stasis.init = function() { - doorAnimationSheet = kontra.spriteSheet({ - image: kontra.assets.images.stasis_doorSheet, - frameWidth: 24, frameHeight: 21, - animations: { - closed: {frames: 0}, - opened: {frames: 2}, - open: {frames: '0..3', frameRate: 6}, - close: {frames: '3..0', frameRate: 6} - } - }); - doorSprite = kontra.sprite({ - x: 72, y: 8, - animations: doorAnimationSheet.animations - }); - background = muri.bg('stasis'); backgroundDark = muri.bg('stasis_dark'); muri.get('entity') .create('stasis.lightSwitch', - kontra.sprite({x: 15, y: 12, width: 3, height: 2, + kontra.sprite({x: 9, y: 11, width: 3, height: 2, image: kontra.assets.images.stasis_lightSwitch})) .addCallback(function() { if (roomState.isIntroRunning) return; @@ -63,22 +47,13 @@ } }; + stasis.onEnter = function(prevRoom) { + door.sprite.playAnimation('close'); + }; + stasis.update = function() { - if (roomState.isLightOn && - !muri.get('entity').get('stasis.door')) { - muri.get('entity') - .create('stasis.door', doorSprite) - .addCallback(function() { - if (!roomState.isDoorOpen) { - doorSprite.playAnimation('open'); - roomState.isDoorOpen = true; - setTimeout(function() { muri.currentRoom = 'lift'; }, 800); - } else { - doorSprite.playAnimation('close'); - roomState.isDoorOpen = false; - } - }); - } + if (roomState.isLightOn && !door) + door = muri.door('stasis', [76, 11]); }; stasis.render = function() {