From 7e469de9bc435b622eb415bf403727780ff95f4c Mon Sep 17 00:00:00 2001
From: Mark Powers <markppowers0@gmail.com>
Date: Thu, 14 May 2020 22:30:41 -0500
Subject: Add switchable vents

---
 src/paperflight/static/draw.js   |  2 +-
 src/paperflight/static/items.js  |  4 ++--
 src/paperflight/static/levels.js |  6 ++++++
 src/paperflight/static/update.js | 17 +++++++++--------
 4 files changed, 18 insertions(+), 11 deletions(-)

(limited to 'src')

diff --git a/src/paperflight/static/draw.js b/src/paperflight/static/draw.js
index a4d5310..0be9ae9 100644
--- a/src/paperflight/static/draw.js
+++ b/src/paperflight/static/draw.js
@@ -45,7 +45,7 @@ function drawVent() {
     ctx.fillRect(this.x, this.y, this.width, 10)
     // every 1/3 seconds spawn new air vents
     // (since this is purely cosmetic, updates to it are in here)
-    if (t % Math.floor(fps / 3) == 0) {
+    if ((this.state == -1 || this.state == switchState) && t % Math.floor(fps / 3) == 0) {
         for (var j = 0; j <= this.width; j += 20) {
             this.wind.push({
                 x: this.x + j,
diff --git a/src/paperflight/static/items.js b/src/paperflight/static/items.js
index 09c9888..96f4767 100644
--- a/src/paperflight/static/items.js
+++ b/src/paperflight/static/items.js
@@ -3,12 +3,12 @@
  * appear in a level. 
  */
 
-function constructVent(x, y, width, height){
+function constructVent(x, y, width, height, state=-1){
     return {
         draw: drawVent,
         update: updateVent,
         wind: [],
-        x, y, width, height
+        x, y, width, height, state
     }
 }
 function constructCoin(x, y, radius=10){
diff --git a/src/paperflight/static/levels.js b/src/paperflight/static/levels.js
index 70bd326..bf3a301 100644
--- a/src/paperflight/static/levels.js
+++ b/src/paperflight/static/levels.js
@@ -56,4 +56,10 @@ levels[6].items.push(
     constructRect(300, 400, 60, 60, 0),
     constructRect(400, 400, 60, 60, 1),
     constructRect(500, 400, 60, 60, 2),
+)
+
+levels[7] = createLevel("Turn on the vent", 0, 40, 460)
+levels[7].items.push(
+    constructSwitch(120, 400, 30, 60, 2),
+    constructVent(200, 550, 60, 300, 1),
 )
\ No newline at end of file
diff --git a/src/paperflight/static/update.js b/src/paperflight/static/update.js
index 0b44089..642e993 100644
--- a/src/paperflight/static/update.js
+++ b/src/paperflight/static/update.js
@@ -8,7 +8,7 @@ function update() {
         plane.x += plane.vx * plane.dir
         plane.y += plane.vy
     }
-    if (!isPlaneInBox({ x: plane.width, y: plane.height, width: width - (2*plane.width), height: height - (2*plane.height) })) {
+    if (!isPlaneInBox({ x: plane.width, y: plane.height, width: width - (2 * plane.width), height: height - (2 * plane.height) })) {
         gameOver()
     }
     currLevel.items.forEach(item => {
@@ -17,18 +17,19 @@ function update() {
     if (atExit()) {
         setLevel(currLevelIndex + 1)
     }
-    if(gameIsOver){
+    if (gameIsOver) {
         window.clearInterval(gameInterval)
     }
 }
 function updateVent() {
     // Custom box since vent height is upwards
-    if (isPlaneInBox({
-        x: this.x,
-        y: this.y - this.height,
-        width: this.width,
-        height: this.height
-    })) {
+    if ((this.state == -1 || this.state == switchState)
+        && isPlaneInBox({
+            x: this.x,
+            y: this.y - this.height,
+            width: this.width,
+            height: this.height
+        })) {
         plane.y -= 2
     }
 }
-- 
cgit v1.2.3