From 5ac1cab9cc3f825b0ecd6e23632dd9ec7f5b3d4e Mon Sep 17 00:00:00 2001 From: rsninja722 Date: Sun, 19 Apr 2020 10:35:15 -0400 Subject: [PATCH 1/2] push --- docs/assets/images/epic.png | Bin 0 -> 78823 bytes docs/assets/images/level_2.png | Bin 9472 -> 0 bytes docs/assets/js/constants.js | 11 +++++---- docs/assets/js/index.js | 6 ++--- docs/assets/js/player/player.js | 31 ++++++++++++++++++++++-- docs/assets/js/transition/transition.js | 2 +- docs/assets/js/world/level.js | 2 +- 7 files changed, 40 insertions(+), 12 deletions(-) create mode 100644 docs/assets/images/epic.png delete mode 100644 docs/assets/images/level_2.png diff --git a/docs/assets/images/epic.png b/docs/assets/images/epic.png new file mode 100644 index 0000000000000000000000000000000000000000..763a329d1227b678e7267ad5228a653b7b90a323 GIT binary patch literal 78823 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 literal 0 HcmV?d00001 diff --git a/docs/assets/images/level_2.png b/docs/assets/images/level_2.png deleted file mode 100644 index b2bd9ef603f44e8c928fa992ee9e47ec18c43391..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9472 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 diff --git a/docs/assets/js/constants.js b/docs/assets/js/constants.js index f2c99ce..9dd1a8a 100644 --- a/docs/assets/js/constants.js +++ b/docs/assets/js/constants.js @@ -50,15 +50,16 @@ var constants = { leg_speed: 0.1, movement_divider: 50, max_movement_speed: 3, - width: 30, - height: 50, + width: 40, + height: 75, select_range: 10, + leg_length: 75, hip: { - offset_x: 15, - offset_y: 25 + offset_x: 20, + offset_y: 35 }, defaultX: 500, - defaultY: -70 + defaultY: -170 } }; \ No newline at end of file diff --git a/docs/assets/js/index.js b/docs/assets/js/index.js index 87a7cfc..2f441f9 100644 --- a/docs/assets/js/index.js +++ b/docs/assets/js/index.js @@ -5,7 +5,7 @@ page_preloader.show(true); images = [ "assets/images/", "level.png", - "level_2.png", + "epic.png", "heartCover.png", "heartBack.png", "blinkOverlay.png", @@ -80,8 +80,8 @@ function draw() { if(!justBlinked) { camera.zoom = 1; + imgIgnoreCutoff(sprites.epic,0,0); drawWorldBlocks(); - imgIgnoreCutoff(sprites.level_2,0,0,0,4,4); player.draw(); } else { @@ -99,7 +99,7 @@ function draw() { break; //building - to be used only in development case globalStates.building: - + imgIgnoreCutoff(sprites.epic,0,0); buildDraw(); break; } diff --git a/docs/assets/js/player/player.js b/docs/assets/js/player/player.js index 2ce5929..47a8ac3 100644 --- a/docs/assets/js/player/player.js +++ b/docs/assets/js/player/player.js @@ -6,8 +6,8 @@ class Player { this.h = constants.player.height; this.hipLeft = { x: this.x + constants.player.hip.offset_x, y: this.y + constants.player.hip.offset_y }; this.hipRight = { x: this.x - constants.player.hip.offset_x, y: this.y + constants.player.hip.offset_y }; - this.leftLeg = new Leg(this.hipLeft.x, this.hipLeft.y, 50, Math.PI*2.5); - this.rightLeg = new Leg(this.hipRight.x, this.hipRight.y, 50, Math.PI*2.5); + this.leftLeg = new Leg(this.hipLeft.x, this.hipLeft.y, constants.player.leg_length, Math.PI*2.5); + this.rightLeg = new Leg(this.hipRight.x, this.hipRight.y, constants.player.leg_length, Math.PI*2.5); this.legSelected = "R"; this.shouldMoveLeg = false; this.collided = false; @@ -75,8 +75,35 @@ Player.prototype.update = function() { } } } + + // god mode + // if(keyDown[k.w]) { + // this.y-=5; + // } + // if(keyDown[k.s]) { + // this.y+=5; + // } + // if(keyDown[k.a]) { + // this.x-=5; + // } + // if(keyDown[k.d]) { + // this.x+=5; + // } centerCameraOn(this.x,this.y); + // camera limits + if(camera.x > 898) { + camera.x = 898; + } + if(camera.x < -98) { + camera.x = -98; + } + if(camera.y < 245) { + camera.y = 245; + } + if(camera.y > 350) { + camera.y = 350; + } } diff --git a/docs/assets/js/transition/transition.js b/docs/assets/js/transition/transition.js index b1d566f..c7e8d75 100644 --- a/docs/assets/js/transition/transition.js +++ b/docs/assets/js/transition/transition.js @@ -24,7 +24,7 @@ function drawLevelTransitionUI() { // draws background sprites drawWorldBlocks(); - imgIgnoreCutoff(sprites.level_2,0,0,0,4,4); + imgIgnoreCutoff(sprites.epic,0,0); player.draw(); // sets alpha to calculated alpha for black diff --git a/docs/assets/js/world/level.js b/docs/assets/js/world/level.js index fe6f783..265b892 100644 --- a/docs/assets/js/world/level.js +++ b/docs/assets/js/world/level.js @@ -12,7 +12,7 @@ class block { } // create blocks -var blockData = [942,-184,94,507,942,191,94,507,372,411,1054,67,-316,369,1214,152,-38,270,86,107,-166,243,125,127,238,320,45,127,273,284,45,127,309,248,45,127,341,215,45,127,377,179,45,127,412,143,45,127,450,107,45,127,603,105,285,196,777,27,285,196,-989,23,175,959,154,-441,2555,51]; +var blockData = [705,-8,491,64,460,27,74,64,425,64,74,64,389,99,74,64,352,135,74,64,321,167,74,64,285,203,74,64,249,239,74,64,-18,299,3314,111,-43,205,59,90,-44,207,80,63,-168,199,128,108,-168,144,158,25,-978,-101,158,984,14,-398,1958,85,928,-192,58,345,664,-101,25,133,867,-102,25,133,765,-97,185,67]; for (let i = 0, l = blockData.length; i < l; i += 4) { collisionRects.push(new block(blockData[i], blockData[i + 1], blockData[i + 2], blockData[i + 3])); } From 5a7d943aa71e9ea1edbce5c94aab5c3df96e62a6 Mon Sep 17 00:00:00 2001 From: rsninja722 Date: Sun, 19 Apr 2020 12:04:57 -0400 Subject: [PATCH 2/2] tutorial --- docs/assets/images/Capture.PNG | Bin 685 -> 0 bytes docs/assets/images/tutArrow.png | Bin 0 -> 191 bytes docs/assets/images/tutKeyC.png | Bin 0 -> 200 bytes docs/assets/images/tutKeyX.png | Bin 0 -> 212 bytes docs/assets/images/tutKeyZ.png | Bin 0 -> 230 bytes docs/assets/images/tutSelect0.png | Bin 0 -> 209 bytes docs/assets/images/tutSelect1.png | Bin 0 -> 192 bytes docs/assets/js/UI/ui.js | 92 ++++++++++--------- docs/assets/js/constants.js | 2 +- docs/assets/js/index.js | 20 ++--- docs/assets/js/player/lifeFunctions.js | 69 ++++++++++----- docs/assets/js/playing/playing.js | 118 +++++++++++++++++++++++++ 12 files changed, 221 insertions(+), 80 deletions(-) delete mode 100644 docs/assets/images/Capture.PNG create mode 100644 docs/assets/images/tutArrow.png create mode 100644 docs/assets/images/tutKeyC.png create mode 100644 docs/assets/images/tutKeyX.png create mode 100644 docs/assets/images/tutKeyZ.png create mode 100644 docs/assets/images/tutSelect0.png create mode 100644 docs/assets/images/tutSelect1.png diff --git a/docs/assets/images/Capture.PNG b/docs/assets/images/Capture.PNG deleted file mode 100644 index 538afbbfbf40b8ec085595a0cf3cdf9d0e49180c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 685 zcmeAS@N?(olHy`uVBq!ia0vp^XMotBgAGV7XVYo{Qk(@Ik;M!Qe1}1p@p%4<6b1&S zcuyC{kcv5P@9gyxNfc>#Xngw9^2Q@c+)~LpI(H6U|7Mb(cEV5N*Wb<}0}HMn*VpFe z^i{RK;9+yW_};&#ihqY#SBHkOlgXd!_sna$qU`tYE^XV$v!yjb!O>uXf`o?vj|vBy z5DPPBQzOekhbHX8PUTm)4@{jQe=e29**eE`PJOJb+)4Zfe9)6zyWzvCn}0s}lybF& z-S~GUr|zd?X_ZPdZflytlQUX>S|8romyprAR{iX=>wlH)PYA`?{;qXzw7OvY zF2VBs(>EGN9$B29x@T|Xk-dkF?EFM8TKCH90jUrp2el=-X#)m>fQFX`F)?rHk< z-B)&B-R;)0_wC=)d+(nqOG@7)5oPesU_wD*d*w~(-#?e{T^;k(+-UcW-8;?R{1va^ zch+9B&TRJlIcxn6Uf}Zf2D;vCRj|R9LysO6tW%bVN=#jPv*vGBPeMj}Yuo4ZtDFtC z94?AZys-$y?m7gUs3H!+Yc_&1}3oUol*%f&yy P^vB@o>gTe~DWM4ffE*Ln diff --git a/docs/assets/images/tutArrow.png b/docs/assets/images/tutArrow.png new file mode 100644 index 0000000000000000000000000000000000000000..e5b425973a287d8516a634e7366ba755bec6e40b GIT binary patch literal 191 zcmeAS@N?(olHy`uVBq!ia0vp^LLkh+1|-AI^@RheHcuDF5DWk0lm$WwOD0+JMDR|U znD~=_(}Rw`1GEF2PkIISgtk+nL{O7WM}^jlt8^&t;ucLK6T1Jx3}4 literal 0 HcmV?d00001 diff --git a/docs/assets/images/tutKeyX.png b/docs/assets/images/tutKeyX.png new file mode 100644 index 0000000000000000000000000000000000000000..235091d2a5e6e12ddb678c57661b84243d1cc023 GIT binary patch literal 212 zcmeAS@N?(olHy`uVBq!ia0vp^LLkh+1|-AI^@Rhe*`6+rAr}70DGd$(17^i^O%zN! zvA25p2_qNJlRRtqa{|J{O`RhnwV7A8HS#pRT)NiL;Q6B601 zo*>oR+k3FF^4pt8gWfk@O?pkP@fjIvcNiu#t`7Hi?~ME<8bg K=d#Wzp$PyIKTQ?@ literal 0 HcmV?d00001 diff --git a/docs/assets/images/tutKeyZ.png b/docs/assets/images/tutKeyZ.png new file mode 100644 index 0000000000000000000000000000000000000000..39a8a88e75465187707704b47691c311fadef909 GIT binary patch literal 230 zcmeAS@N?(olHy`uVBq!ia0vp^LLkh+1|-AI^@RhewVp1HAr}70DGd$(17^i^O%zN! zvA25p2_qNJlRRtqa{|J{O`RhnwV7A8HS#pRJennNMl8m!CDOybdBaW>6BA*bns09+ zD+B~e1UEUJU~4$i+uJJ{wtgO8n9~%;8$1k|ZIVESg0n+h!%l{~3^TepcX2FXc)}XP zHX%h|-xW)XMe?(`Iokv`&g5I}ctomU4PSN~Gv_2G2T9qZ3KPX+r?b<@%&Dp!x=nX{an^LB{Ts5c}h-t literal 0 HcmV?d00001 diff --git a/docs/assets/images/tutSelect0.png b/docs/assets/images/tutSelect0.png new file mode 100644 index 0000000000000000000000000000000000000000..5fc4a7ce4186c034bc795f432c2cbd346862188a GIT binary patch literal 209 zcmeAS@N?(olHy`uVBq!ia0vp^LLkh+1|-AI^@Rhe8J;eVAr}70DF>KSQX>8-d)rrj zY8RYdv_{B)`Ptdaju)p-DPcWxJWZj^QNj5FuR}TO35SxyAEa1{8P6!pV6EV7s$@?Q zHj=(+`r}GNY|9(joNWuMd1qI>l5|;>ov_aNIy)bKO=E}lT^`0}w)i!Q$C-5GC(c#4 z7_48UqjXwus_TZO{4s(4A?K+mNkT^KaGcoB0ml;D($)5kur+sk;x{<-t)z4*} HQ$iB}?|(}# literal 0 HcmV?d00001 diff --git a/docs/assets/images/tutSelect1.png b/docs/assets/images/tutSelect1.png new file mode 100644 index 0000000000000000000000000000000000000000..21cb3a716bbca6cfe24c9cc62c5b16bda3c0baeb GIT binary patch literal 192 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`?Vc`=-nCYtc>-^vbVHu;8MhgX2F({^namh& zrp5RjO=CQv8o_%&G~tCGbacOY`iJSaBb6^wR!tqivgX);OXk;vd$@?2>>q&K*<0A literal 0 HcmV?d00001 diff --git a/docs/assets/js/UI/ui.js b/docs/assets/js/UI/ui.js index 8bb34a7..c727600 100644 --- a/docs/assets/js/UI/ui.js +++ b/docs/assets/js/UI/ui.js @@ -3,16 +3,22 @@ function drawTitleScreenUI() { } +var playingUIOffsets = { + heart: 100, + breath: 100, + blink: 100 +}; + // UI for playing function drawPlayingUI() { // cartesianRect(0,ch/3*2, cw, ch/3, "#333333") //Heart Rate Monitor - heartBeatUI(cw/4*3-8,ch/8*7-8,cw/4,ch/8); + heartBeatUI(cw / 4 * 3 - 8, ch / 8 * 7 - 8 + playingUIOffsets.heart, cw / 4, ch / 8); //Respiration Monitor - respiratoryUI(cw/8*5,ch/8*7-8, cw/16, ch/8); + respiratoryUI(cw / 8 * 5, ch / 8 * 7 - 8 + playingUIOffsets.breath, cw / 16, ch / 8); //Blink eye and overlay blinkUI(); @@ -33,9 +39,9 @@ function drawEndUI() { * */ -function respiratoryUI(x, y, width, height){ - cartesianRect(x,y,width,height, "rgb("+noBreathTimer/180*255+","+0+","+0+")"); - cartesianRect(x,y+(height-breath/constants.lifeFuncs.breath.fullBreath*height), width, breath/constants.lifeFuncs.breath.fullBreath*height, "rgb("+255+","+(255-fullBreathTimer/180*255)+","+(255-fullBreathTimer/180*255)+")"); +function respiratoryUI(x, y, width, height) { + cartesianRect(x, y, width, height, "rgb(" + noBreathTimer / 180 * 255 + "," + 0 + "," + 0 + ")"); + cartesianRect(x, y + (height - breath / constants.lifeFuncs.breath.fullBreath * height), width, breath / constants.lifeFuncs.breath.fullBreath * height, "rgb(" + 255 + "," + (255 - fullBreathTimer / 180 * 255) + "," + (255 - fullBreathTimer / 180 * 255) + ")"); } /*** @@ -46,8 +52,8 @@ function respiratoryUI(x, y, width, height){ //Heart rate monitor history let heartBeatHistory = []; - heartBeatHistory.length = constants.ui.heartRate.history_length; - heartBeatHistory.fill(0); +heartBeatHistory.length = constants.ui.heartRate.history_length; +heartBeatHistory.fill(0); //Shift accumulation let shiftAccum = 0; @@ -56,12 +62,12 @@ let shiftAccum = 0; let beatTimeElapsed = Infinity; // Draw heartbeat UI -function heartBeatUI(x, y, width, height){ +function heartBeatUI(x, y, width, height) { //Shift monitor over once a full scrolling unit is accumulated shiftAccum += constants.ui.heartRate.scroll_speed; - if(shiftAccum>=1){ - shiftAccum%=1; + if (shiftAccum >= 1) { + shiftAccum %= 1; beatTimeElapsed += 0.04; //Remove oldest value @@ -72,70 +78,70 @@ function heartBeatUI(x, y, width, height){ } //If heart is beaten, reset beat timer. - if(heartBeat){ + if (heartBeat) { beatTimeElapsed = 0; heartBeat = false; } //Backdrop var BackdropColor; - if(pressure > 42 && pressure < 60) { + if (pressure > 42 && pressure < 60) { BackdropColor = "#0c2605"; - } else if(pressure > 28 && pressure < 75) { + } else if (pressure > 28 && pressure < 75) { BackdropColor = "#2b2b06"; } else { BackdropColor = "#260505"; } - rect(x+width/2,y+height/2,width,height,BackdropColor); - img(sprites.heartBack,cw-107,ch-46); + rect(x + width / 2, y + height / 2, width, height, BackdropColor); + img(sprites.heartBack, cw - 107, ch - 46 + playingUIOffsets.heart); //Pressure Meter - rect(x+width-8,y+height/2,16,height,"red"); - rect(x+width-8,y+height/2,16,height/2,"yellow"); - rect(x+width-8,y+height/2,16,height/6,"green"); - let pressureHeight = Math.max(Math.min(y+height-(pressure/constants.lifeFuncs.cardio.optimalPressure*height/2),y+height),y); - line(x+width-16, pressureHeight,x+width,pressureHeight, 2,"black") + rect(x + width - 8, y + height / 2, 16, height, "red"); + rect(x + width - 8, y + height / 2, 16, height / 2, "yellow"); + rect(x + width - 8, y + height / 2, 16, height / 6, "green"); + let pressureHeight = Math.max(Math.min(y + height - (pressure / constants.lifeFuncs.cardio.optimalPressure * height / 2), y + height), y); + line(x + width - 16, pressureHeight, x + width, pressureHeight, 2, "black") //Graph for (let index = 0; index < heartBeatHistory.length; index++) { const qrsValueAtPosition = heartBeatHistory[index]; - const qrsValueAtNextPosition = heartBeatHistory[index+1]; - line(x+(index*(width-16)/heartBeatHistory.length), y+(2*height/3)+(qrsValueAtPosition*(width-16)/heartBeatHistory.length), x+((index+1)*(width-16)/heartBeatHistory.length), y+(2*height/3)+(qrsValueAtNextPosition*(width-16)/heartBeatHistory.length),Math.min(3,Math.max(3/beatTimeElapsed,1)), "red"); + const qrsValueAtNextPosition = heartBeatHistory[index + 1]; + line(x + (index * (width - 16) / heartBeatHistory.length), y + (2 * height / 3) + (qrsValueAtPosition * (width - 16) / heartBeatHistory.length), x + ((index + 1) * (width - 16) / heartBeatHistory.length), y + (2 * height / 3) + (qrsValueAtNextPosition * (width - 16) / heartBeatHistory.length), Math.min(3, Math.max(3 / beatTimeElapsed, 1)), "red"); } // cover - img(sprites.heartCover,cw-107,ch-46); + img(sprites.heartCover, cw - 107, ch - 46 + playingUIOffsets.heart); } //Determine next value to be added to the graph -function pushNextBeatValue(){ +function pushNextBeatValue() { let nextBeatValue = 0; //Timespan of one "square" on the EKG const squareSize = constants.ui.heartRate.square_size; //Length of full complex - const complexTime = constants.ui.heartRate.complex_width*squareSize; + const complexTime = constants.ui.heartRate.complex_width * squareSize; //Length of PR segment of complex - const prTime = constants.ui.heartRate.pr_width*squareSize; + const prTime = constants.ui.heartRate.pr_width * squareSize; //Length of QRS component of complex - const qrsTime = constants.ui.heartRate.qrs_width*squareSize; + const qrsTime = constants.ui.heartRate.qrs_width * squareSize; //Length of QT component of complex - const qtTime = constants.ui.heartRate.qt_width*squareSize; + const qtTime = constants.ui.heartRate.qt_width * squareSize; - if(beatTimeElapsed<=complexTime) { + if (beatTimeElapsed <= complexTime) { //PR Segment if (beatTimeElapsed <= prTime) { - nextBeatValue = 0.5*(Math.pow((beatTimeElapsed/squareSize - (prTime/2/squareSize)), 2)) - 2; + nextBeatValue = 0.5 * (Math.pow((beatTimeElapsed / squareSize - (prTime / 2 / squareSize)), 2)) - 2; } else if (beatTimeElapsed > prTime + squareSize && beatTimeElapsed <= prTime + squareSize + (qrsTime / 4)) { //QRS Segment pt. 1 - nextBeatValue = -4 + beatTimeElapsed/squareSize; + nextBeatValue = -4 + beatTimeElapsed / squareSize; } else if (beatTimeElapsed > prTime + squareSize + qrsTime / 4 && beatTimeElapsed <= prTime + squareSize + qrsTime / 2) { //QRS Segment pt. 2 - nextBeatValue = -14 * (beatTimeElapsed/squareSize - 4.5) - 0.5; - } else if (beatTimeElapsed > prTime + squareSize + qrsTime / 2 && beatTimeElapsed <= prTime + squareSize + (3*qrsTime / 4)) { //QRS Segment pt. 3 - nextBeatValue = 7 * (beatTimeElapsed/squareSize - 5) - 6.5; - } else if (beatTimeElapsed > prTime + squareSize + (3*qrsTime / 4) && beatTimeElapsed <= prTime + squareSize + qrsTime) { //QRS Segment pt. 4 - nextBeatValue = 2 * (beatTimeElapsed/squareSize - 6); - } else if (beatTimeElapsed > prTime + squareSize*2 + qrsTime && beatTimeElapsed <= prTime + squareSize*2 + qrsTime + qtTime) { //PT Segment - nextBeatValue = 0.5 * Math.pow((beatTimeElapsed/squareSize - (prTime + squareSize*2 + qrsTime + qtTime/2)/squareSize),2) - 3; + nextBeatValue = -14 * (beatTimeElapsed / squareSize - 4.5) - 0.5; + } else if (beatTimeElapsed > prTime + squareSize + qrsTime / 2 && beatTimeElapsed <= prTime + squareSize + (3 * qrsTime / 4)) { //QRS Segment pt. 3 + nextBeatValue = 7 * (beatTimeElapsed / squareSize - 5) - 6.5; + } else if (beatTimeElapsed > prTime + squareSize + (3 * qrsTime / 4) && beatTimeElapsed <= prTime + squareSize + qrsTime) { //QRS Segment pt. 4 + nextBeatValue = 2 * (beatTimeElapsed / squareSize - 6); + } else if (beatTimeElapsed > prTime + squareSize * 2 + qrsTime && beatTimeElapsed <= prTime + squareSize * 2 + qrsTime + qtTime) { //PT Segment + nextBeatValue = 0.5 * Math.pow((beatTimeElapsed / squareSize - (prTime + squareSize * 2 + qrsTime + qtTime / 2) / squareSize), 2) - 3; } } @@ -145,16 +151,16 @@ function pushNextBeatValue(){ function blinkUI() { // eye - img(sprites.eye,cw-350,ch-40,0,2,2); - var alpha = clamp(eyeDryness / constants.lifeFuncs.blink.dryTime,0,1); + img(sprites.eye, cw - 350, ch - 40 + playingUIOffsets.blink, 0, 2, 2); + var alpha = clamp(eyeDryness / constants.lifeFuncs.blink.dryTime, 0, 1); curCtx.globalAlpha = alpha; - img(sprites.eyeDry,cw-350,ch-40,0,2,2); + img(sprites.eyeDry, cw - 350, ch - 40 + playingUIOffsets.blink, 0, 2, 2); // dry overlay - if(eyeDryness > constants.lifeFuncs.blink.dryTime) { + if (eyeDryness > constants.lifeFuncs.blink.dryTime) { alpha = (eyeDryness - constants.lifeFuncs.blink.dryTime) / 350; curCtx.globalAlpha = alpha; - img(sprites.blinkOverlay,cw/2,ch/2); + img(sprites.blinkOverlay, cw / 2, ch / 2); } curCtx.globalAlpha = 1; diff --git a/docs/assets/js/constants.js b/docs/assets/js/constants.js index 9dd1a8a..b1d2653 100644 --- a/docs/assets/js/constants.js +++ b/docs/assets/js/constants.js @@ -58,7 +58,7 @@ var constants = { offset_x: 20, offset_y: 35 }, - defaultX: 500, + defaultX: 600, defaultY: -170 } diff --git a/docs/assets/js/index.js b/docs/assets/js/index.js index 2f441f9..447a897 100644 --- a/docs/assets/js/index.js +++ b/docs/assets/js/index.js @@ -10,7 +10,13 @@ images = [ "heartBack.png", "blinkOverlay.png", "eye.png", - "eyeDry.png" + "eyeDry.png", + "tutSelect0.png", + "tutSelect1.png", + "tutArrow.png", + "tutKeyZ.png", + "tutKeyX.png", + "tutKeyC.png" ]; audio = [ @@ -77,17 +83,7 @@ function draw() { break; // playing case globalStates.playing: - if(!justBlinked) { - - camera.zoom = 1; - imgIgnoreCutoff(sprites.epic,0,0); - drawWorldBlocks(); - player.draw(); - - } else { - rect(-camera.x - difx + cw/2,-camera.y - dify + ch/2,cw,ch,"black"); - justBlinked = false; - } + drawPlaying(); break; // paused case globalStates.paused: diff --git a/docs/assets/js/player/lifeFunctions.js b/docs/assets/js/player/lifeFunctions.js index bbc1f01..5efa7ac 100644 --- a/docs/assets/js/player/lifeFunctions.js +++ b/docs/assets/js/player/lifeFunctions.js @@ -1,8 +1,8 @@ -let breath = 180; +let breath = 200; let fullBreathTimer = 0; let noBreathTimer = 0; -let pressure = 50; +let pressure = 55; let heartBeat = false; @@ -11,33 +11,54 @@ var breathMode = { exhale: 1 }; -let currentBreathMode = breathMode.exhale; +let currentBreathMode = breathMode.inhale; let eyeDryness = 0; let justBlinked = false; function updateLife() { - - if(keyDown[k.x]) { - if(breath === 0) currentBreathMode = breathMode.inhale; - else if(breath === constants.lifeFuncs.breath.fullBreath) currentBreathMode = breathMode.exhale; + + if (playingUIOffsets.breath === 0) { + if (keyDown[k.x]) { + if (breath === 0) currentBreathMode = breathMode.inhale; + else if (breath === constants.lifeFuncs.breath.fullBreath) currentBreathMode = breathMode.exhale; + if(Date.now() - keyPromptTime > 3000) { + --keyPrompts.breath; + if(keyPrompts.breath > 0) { + keyPromptTime = Date.now(); + } + } + } + + breathe(); } - breathe(); + if (playingUIOffsets.heart === 0) { + if (keyPress[k.c]) { + heartbeat(); + if(Date.now() - keyPromptTime > 1250) { + --keyPrompts.beat; + if(keyPrompts.beat > 0) { + keyPromptTime = Date.now(); + } + } + } - if(keyPress[k.c]) { - heartbeat(); + pressure -= 0.1; + if (pressure <= 0) { + pressure = 0; + } } - pressure-=0.1; - if(pressure<=0){ - pressure = 0; - } + if(playingUIOffsets.blink === 0) { + eyeDryness++; - eyeDryness++; - - if(keyPress[k.z]) { - blink(); + if (keyPress[k.z]) { + blink(); + if(Date.now() - keyPromptTime > 1250) { + --keyPrompts.blink; + } + } } }; @@ -45,10 +66,10 @@ function breathe() { switch (currentBreathMode) { case breathMode.inhale: breath += 1; - if(breath >= constants.lifeFuncs.breath.fullBreath) { + if (breath >= constants.lifeFuncs.breath.fullBreath) { breath = constants.lifeFuncs.breath.fullBreath; fullBreathTimer++; - if(fullBreathTimer >= 600) { + if (fullBreathTimer >= 600) { //cough and lose breath or something } } else { @@ -57,10 +78,10 @@ function breathe() { break; case breathMode.exhale: breath -= 2; - if(breath <= 0) { + if (breath <= 0) { breath = 0; noBreathTimer++; - if(noBreathTimer >= 300) { + if (noBreathTimer >= 300) { //cough and lose breath or something } } else { @@ -71,8 +92,8 @@ function breathe() { }; function heartbeat() { - pressure+=10; - if(pressure>=100){ + pressure += 10; + if (pressure >= 100) { pressure = 100; } heartBeat = true; diff --git a/docs/assets/js/playing/playing.js b/docs/assets/js/playing/playing.js index 006c491..9f9aab7 100644 --- a/docs/assets/js/playing/playing.js +++ b/docs/assets/js/playing/playing.js @@ -1,8 +1,126 @@ +var tutorialStates = { + selectLeg:0, + placeOnGround:1, + goDownStairs:2, + getCereal: 3, + getMail: 4 +}; + +var tutState = tutorialStates.selectLeg; + +// how many times +var keyPrompts = { + beat: 2, + breath: 2, + blink: 1 +}; + +var keyPromptTime; + +var frameCount = 0; + function handlePlaying() { // enter build mode if(keyPress[k.BACKSLASH]) { globalState = globalStates.building; } + switch(tutState) { + case tutorialStates.selectLeg: + if(player.shouldMoveLeg) { + tutState = tutorialStates.placeOnGround; + } + break; + case tutorialStates.placeOnGround: + if(!player.shouldMoveLeg) { + tutState = tutorialStates.goDownStairs; + } + break; + case tutorialStates.goDownStairs: + if(player.y > -55) { + tutState = tutorialStates.getCereal; + keyPromptTime = Date.now(); + } + break; + case tutorialStates.getCereal: + break; + case tutorialStates.getMail: + + break; + } + + // rise heart ui + if(player.y > -55) { + if(playingUIOffsets.heart > 0) { + --playingUIOffsets.heart; + } + } + + // rise breath ui + if(player.y > 135) { + if(playingUIOffsets.breath > 0) { + --playingUIOffsets.breath; + } + } + + // rise blink ui + if(player.x < -290) { + if(playingUIOffsets.blink > 0) { + --playingUIOffsets.blink; + } + } + updateLife(); +} + +function drawPlaying() { + frameCount++; + if(!justBlinked) { + + imgIgnoreCutoff(sprites.epic,0,0); + // drawWorldBlocks(); + player.draw(); + + // beat key + if(keyPrompts.beat > 0 && playingUIOffsets.heart === 0) { + if(Date.now() - keyPromptTime > 1250) { + img(sprites.tutKeyC,player.x + 70, player.y + (~~(frameCount/10)%2) * 2,0,2,2); + } + } + + // breath key + if(keyPrompts.breath > 0 && playingUIOffsets.breath === 0) { + if(Date.now() - keyPromptTime > 3000) { + img(sprites.tutKeyX,player.x + 70, player.y + (~~(frameCount/10)%2) * 2,0,2,2); + } + } + + // blink key + if(keyPrompts.blink > 0 && playingUIOffsets.blink === 0) { + if(Date.now() - keyPromptTime > 4000) { + img(sprites.tutKeyZ,player.x + 70, player.y + (~~(frameCount/10)%2) * 2,0,2,2); + } + } + switch(tutState) { + case tutorialStates.selectLeg: + img(sprites["tutSelect"+~~(frameCount/10)%2],(player.leftLeg.x+player.leftLeg.x2)/2,(player.leftLeg.y+player.leftLeg.y2)/2,0,2,2); + break; + case tutorialStates.placeOnGround: + img(sprites["tutSelect"+~~(frameCount/10)%2],500,-40,2,2); + break; + case tutorialStates.goDownStairs: + img(sprites.tutArrow,360+~~(frameCount/10)%2,-30-~~(frameCount/10)%2,0,2,2); + break; + case tutorialStates.getCereal: + + break; + case tutorialStates.getMail: + + break; + } + } else { + rect(-camera.x - difx + cw/2,-camera.y - dify + ch/2,cw,ch,"black"); + justBlinked = false; + } + } \ No newline at end of file