瀏覽代碼

fixing bug with circleOne restart parameters

lairaalmas 1 年之前
父節點
當前提交
97c4f4c40e
共有 1 個文件被更改,包括 46 次插入16 次删除
  1. 46 16
      src/js/games/circleOne.js

+ 46 - 16
src/js/games/circleOne.js

@@ -76,9 +76,16 @@ const circleOne = {
     const y0 = this.road.y + 20;
     const x0 =
       gameOperation == 'minus'
-        ? this.road.x - roadPointWidth / 2 + 5 * distanceBetweenPoints
+        ? this.road.x + this.road.width - roadPointWidth / 2
         : this.road.x + roadPointWidth / 2; // Initial 'x' coordinate for the kid and the baloon
 
+    console.log(
+      'min: ' +
+        (this.road.x + roadPointWidth / 2) +
+        ' max: ' +
+        (this.road.x + this.road.width - roadPointWidth / 2)
+    );
+
     this.animation = {
       list: {
         left: undefined,
@@ -210,9 +217,10 @@ const circleOne = {
       }
 
       if (lowerCircles) {
-        currentCircle.alpha = 0; // Cicle disappear
+        // Hide current circle
+        currentCircle.alpha = 0;
 
-        // Lowers circles and kid
+        // Lowers kid and other circles
         self.circles.list.forEach((circle) => {
           circle.y += self.circles.diameter;
         });
@@ -421,13 +429,20 @@ const circleOne = {
   utils: {
     renderRoad: function (x0, y0, distanceBetweenPoints) {
       // Road points
+      const operationModifier = gameOperation === 'minus' ? -1 : 1;
       for (let i = 0; i <= 5; i++) {
         game.add
-          .sprite(x0 + i * distanceBetweenPoints, y0, 'map_place', 0, 0.45)
+          .sprite(
+            x0 + i * distanceBetweenPoints * operationModifier,
+            y0,
+            'map_place',
+            0,
+            0.45
+          )
           .anchor(0.5, 0.5);
         game.add.geom
           .circle(
-            x0 + i * distanceBetweenPoints,
+            x0 + i * distanceBetweenPoints * operationModifier,
             y0 + 55,
             50,
             undefined,
@@ -437,7 +452,7 @@ const circleOne = {
           )
           .anchor(0, 0.25);
         game.add.text(
-          x0 + i * distanceBetweenPoints,
+          x0 + i * distanceBetweenPoints * operationModifier,
           y0 + 55,
           i,
           textStyles.h2_
@@ -612,12 +627,22 @@ const circleOne = {
         self.circles.list[0].info.distance * self.circles.list[0].info.direc;
 
       // If top circle position is out of bounds (when on the ground) or game doesnt have base difficulty, restart
-      if (
-        self.control.correctX < self.road.x ||
-        self.control.correctX > self.road.x + 3 * distanceBetweenPoints ||
-        !self.control.hasBaseDifficulty
-      ) {
-        console.log(self.control.correctX);
+      let isBeforeMin, isAfterMax;
+      if (gameOperation === 'minus') {
+        isBeforeMin = self.control.correctX > x0;
+        isAfterMax = self.control.correctX < x0 - 3 * distanceBetweenPoints;
+        console.log(
+          'minMax',
+          isBeforeMin,
+          isAfterMax,
+          self.control.correctX,
+          x0 + self.road.width - 3 * distanceBetweenPoints
+        );
+      } else {
+        isBeforeMin = self.control.correctX < x0;
+        isAfterMax = self.control.correctX > x0 + 3 * distanceBetweenPoints;
+      }
+      if (!self.control.hasBaseDifficulty || isBeforeMin || isAfterMax) {
         restart = true;
       }
 
@@ -636,10 +661,15 @@ const circleOne = {
         }
 
         // If balloon position is out of bounds, restart
-        if (
-          self.balloonX < self.road.x ||
-          self.balloonX > self.road.x + 5 * distanceBetweenPoints
-        ) {
+        if (gameOperation === 'minus') {
+          isBeforeMin = self.balloonX > x0;
+          isAfterMax = self.balloonX < x0 - 3 * distanceBetweenPoints;
+        } else {
+          isBeforeMin = self.balloonX < x0;
+          isAfterMax = self.balloonX > x0 + self.road.width;
+        }
+        if (isBeforeMin || isAfterMax) {
+          console.log('minMax balloon');
           restart = true;
         }
       }