|  | @@ -39,9 +39,6 @@
 | 
	
		
			
				|  |  |   * @namespace
 | 
	
		
			
				|  |  |   */
 | 
	
		
			
				|  |  |  const circleOne = {
 | 
	
		
			
				|  |  | -  /**
 | 
	
		
			
				|  |  | -   * Main code
 | 
	
		
			
				|  |  | -   */
 | 
	
		
			
				|  |  |    control: undefined,
 | 
	
		
			
				|  |  |    animation: undefined,
 | 
	
		
			
				|  |  |    road: undefined,
 | 
	
	
		
			
				|  | @@ -56,6 +53,9 @@ const circleOne = {
 | 
	
		
			
				|  |  |    message: undefined,
 | 
	
		
			
				|  |  |    continue: undefined,
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +  /**
 | 
	
		
			
				|  |  | +   * Main code
 | 
	
		
			
				|  |  | +   */
 | 
	
		
			
				|  |  |    create: function () {
 | 
	
		
			
				|  |  |      this.road = {
 | 
	
		
			
				|  |  |        x: 150,
 | 
	
	
		
			
				|  | @@ -73,7 +73,7 @@ const circleOne = {
 | 
	
		
			
				|  |  |        (context.canvas.width - this.road.x * 2 - pointWidth) / 5; // Distance between road points
 | 
	
		
			
				|  |  |      const y0 = this.road.y + 20;
 | 
	
		
			
				|  |  |      const x0 =
 | 
	
		
			
				|  |  | -      gameOperation == 'minus'
 | 
	
		
			
				|  |  | +      gameOperation === 'minus'
 | 
	
		
			
				|  |  |          ? this.road.x + 5 * distanceBetweenPoints - pointWidth / 2
 | 
	
		
			
				|  |  |          : this.road.x + pointWidth / 2; // Initial 'x' coordinate for the kid and the baloon
 | 
	
		
			
				|  |  |  
 | 
	
	
		
			
				|  | @@ -89,8 +89,8 @@ const circleOne = {
 | 
	
		
			
				|  |  |      this.control = {
 | 
	
		
			
				|  |  |        correctX: x0, // Correct position (accumulative)
 | 
	
		
			
				|  |  |        nextX: undefined, // Next point position
 | 
	
		
			
				|  |  | -      hasBaseDifficulty: false, // Informs if level is too easy (has at least one '1/difficulty' fraction)
 | 
	
		
			
				|  |  |        divisorsList: '', // used in postScore (Accumulative)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |        hasClicked: false, // Checks if user has clicked
 | 
	
		
			
				|  |  |        checkAnswer: false, // Check kid inside ballon's basket
 | 
	
		
			
				|  |  |        isCorrect: false, // Informs answer is correct
 | 
	
	
		
			
				|  | @@ -128,7 +128,9 @@ const circleOne = {
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      const validPath = { x0, y0, distanceBetweenPoints };
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |      this.utils.renderRoad(validPath);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |      const [restart, balloonX] = this.utils.renderCircles(validPath);
 | 
	
		
			
				|  |  |      this.restart = restart;
 | 
	
		
			
				|  |  |  
 | 
	
	
		
			
				|  | @@ -146,7 +148,7 @@ const circleOne = {
 | 
	
		
			
				|  |  |     * Game loop
 | 
	
		
			
				|  |  |     */
 | 
	
		
			
				|  |  |    update: function () {
 | 
	
		
			
				|  |  | -    // Start kid animation
 | 
	
		
			
				|  |  | +    // Starts kid animation
 | 
	
		
			
				|  |  |      if (self.animation.animateKid) {
 | 
	
		
			
				|  |  |        self.utils.animateKid();
 | 
	
		
			
				|  |  |      }
 | 
	
	
		
			
				|  | @@ -156,7 +158,7 @@ const circleOne = {
 | 
	
		
			
				|  |  |        self.utils.checkAnswer();
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -    // Balloon flying animation
 | 
	
		
			
				|  |  | +    // Starts balloon flying animation
 | 
	
		
			
				|  |  |      if (self.animation.animateBalloon) {
 | 
	
		
			
				|  |  |        self.utils.animateBalloon();
 | 
	
		
			
				|  |  |      }
 | 
	
	
		
			
				|  | @@ -200,7 +202,7 @@ const circleOne = {
 | 
	
		
			
				|  |  |            {
 | 
	
		
			
				|  |  |              ...textStyles.h2_,
 | 
	
		
			
				|  |  |              font: 'bold ' + textStyles.h2_.font,
 | 
	
		
			
				|  |  | -            fill: directionModifier == 1 ? colors.green : colors.red,
 | 
	
		
			
				|  |  | +            fill: directionModifier === 1 ? colors.green : colors.red,
 | 
	
		
			
				|  |  |            }
 | 
	
		
			
				|  |  |          );
 | 
	
		
			
				|  |  |        }
 | 
	
	
		
			
				|  | @@ -217,21 +219,22 @@ const circleOne = {
 | 
	
		
			
				|  |  |      },
 | 
	
		
			
				|  |  |      renderCircles: function (validPath) {
 | 
	
		
			
				|  |  |        let restart = false;
 | 
	
		
			
				|  |  | +      let hasBaseDifficulty = false;
 | 
	
		
			
				|  |  |        let balloonX = context.canvas.width / 2;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -      const directionModifier = gameOperation == 'minus' ? -1 : 1;
 | 
	
		
			
				|  |  | +      const directionModifier = gameOperation === 'minus' ? -1 : 1;
 | 
	
		
			
				|  |  |        const fractionX =
 | 
	
		
			
				|  |  |          validPath.x0 + self.circles.diameter * directionModifier;
 | 
	
		
			
				|  |  |        const font = {
 | 
	
		
			
				|  |  | -        ...textStyles.h3_,
 | 
	
		
			
				|  |  | +        ...textStyles.h2_,
 | 
	
		
			
				|  |  |          font: 'bold ' + textStyles.h2_.font,
 | 
	
		
			
				|  |  |        };
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |        // Number of circles
 | 
	
		
			
				|  |  |        const max =
 | 
	
		
			
				|  |  | -        gameOperation == 'mixed' || gameMode == 'b' ? 6 : curMapPosition + 1;
 | 
	
		
			
				|  |  | +        gameOperation === 'mixed' || gameMode === 'b' ? 6 : curMapPosition + 1;
 | 
	
		
			
				|  |  |        const min =
 | 
	
		
			
				|  |  | -        gameOperation == 'mixed' && curMapPosition < 2 ? 2 : curMapPosition; // Mixed level has at least 2 fractions
 | 
	
		
			
				|  |  | +        gameOperation === 'mixed' && curMapPosition < 2 ? 2 : curMapPosition; // Mixed level has at least 2 fractions
 | 
	
		
			
				|  |  |        const total = game.math.randomInRange(min, max); // Total number of circles
 | 
	
		
			
				|  |  |        // for mode 'b'
 | 
	
		
			
				|  |  |        self.control.numberOfPlusFractions = game.math.randomInRange(
 | 
	
	
		
			
				|  | @@ -256,8 +259,7 @@ const circleOne = {
 | 
	
		
			
				|  |  |          };
 | 
	
		
			
				|  |  |          const curDivisor = game.math.randomInRange(1, gameDifficulty); // Set fraction 'divisor' (depends on difficulty)
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -        if (curDivisor === gameDifficulty)
 | 
	
		
			
				|  |  | -          self.control.hasBaseDifficulty = true; // True if after for ends has at least 1 '1/difficulty' fraction
 | 
	
		
			
				|  |  | +        if (curDivisor === gameDifficulty) hasBaseDifficulty = true; // True if after for ends has at least 1 '1/difficulty' fraction
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |          self.control.divisorsList += curDivisor + ','; // Add this divisor to the list of divisors (for postScore())
 | 
	
		
			
				|  |  |  
 | 
	
	
		
			
				|  | @@ -373,7 +375,7 @@ const circleOne = {
 | 
	
		
			
				|  |  |          curCircle.rotate = 90;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |          // If game is type (b) (select fractions)
 | 
	
		
			
				|  |  | -        if (gameMode == 'b') {
 | 
	
		
			
				|  |  | +        if (gameMode === 'b') {
 | 
	
		
			
				|  |  |            curCircle.alpha = 0.5;
 | 
	
		
			
				|  |  |            curCircle.index = i;
 | 
	
		
			
				|  |  |          }
 | 
	
	
		
			
				|  | @@ -393,7 +395,7 @@ const circleOne = {
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |        // Restart if
 | 
	
		
			
				|  |  |        // Does not have base difficulty
 | 
	
		
			
				|  |  | -      if (!self.control.hasBaseDifficulty) {
 | 
	
		
			
				|  |  | +      if (!hasBaseDifficulty) {
 | 
	
		
			
				|  |  |          restart = true;
 | 
	
		
			
				|  |  |        }
 | 
	
		
			
				|  |  |  
 | 
	
	
		
			
				|  | @@ -421,7 +423,7 @@ const circleOne = {
 | 
	
		
			
				|  |  |        }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |        // If game is type (b), selectiong a random balloon place
 | 
	
		
			
				|  |  | -      if (gameMode == 'b') {
 | 
	
		
			
				|  |  | +      if (gameMode === 'b') {
 | 
	
		
			
				|  |  |          balloonX = validPath.x0;
 | 
	
		
			
				|  |  |          self.control.endIndex = game.math.randomInRange(
 | 
	
		
			
				|  |  |            self.control.numberOfPlusFractions,
 | 
	
	
		
			
				|  | @@ -473,7 +475,7 @@ const circleOne = {
 | 
	
		
			
				|  |  |          4,
 | 
	
		
			
				|  |  |        ];
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -      if (gameOperation == 'minus') {
 | 
	
		
			
				|  |  | +      if (gameOperation === 'minus') {
 | 
	
		
			
				|  |  |          self.kid.animation = self.animation.list.left;
 | 
	
		
			
				|  |  |          self.kid.curFrame = 23;
 | 
	
		
			
				|  |  |        } else {
 | 
	
	
		
			
				|  | @@ -618,7 +620,7 @@ const circleOne = {
 | 
	
		
			
				|  |  |        // When finish all circles (final position)
 | 
	
		
			
				|  |  |        if (
 | 
	
		
			
				|  |  |          self.circles.cur === self.circles.list.length ||
 | 
	
		
			
				|  |  | -        curCircle.alpha == 0
 | 
	
		
			
				|  |  | +        curCircle.alpha === 0
 | 
	
		
			
				|  |  |        ) {
 | 
	
		
			
				|  |  |          self.animation.animateKid = false;
 | 
	
		
			
				|  |  |          self.control.checkAnswer = true;
 | 
	
	
		
			
				|  | @@ -686,7 +688,7 @@ const circleOne = {
 | 
	
		
			
				|  |  |      showAnswer: function () {
 | 
	
		
			
				|  |  |        if (!self.control.hasClicked) {
 | 
	
		
			
				|  |  |          // On gameMode (a)
 | 
	
		
			
				|  |  | -        if (gameMode == 'a') {
 | 
	
		
			
				|  |  | +        if (gameMode === 'a') {
 | 
	
		
			
				|  |  |            self.help.x = self.control.correctX - 20;
 | 
	
		
			
				|  |  |            self.help.y = self.road.y;
 | 
	
		
			
				|  |  |            // On gameMode (b)
 | 
	
	
		
			
				|  | @@ -720,16 +722,16 @@ const circleOne = {
 | 
	
		
			
				|  |  |       *
 | 
	
		
			
				|  |  |       * @param {number|object} cur clicked circle
 | 
	
		
			
				|  |  |       */
 | 
	
		
			
				|  |  | -    clickHandler: function (cur) {
 | 
	
		
			
				|  |  | +    clickCircleHandler: function (cur) {
 | 
	
		
			
				|  |  |        if (!self.control.hasClicked) {
 | 
	
		
			
				|  |  |          // On gameMode (a)
 | 
	
		
			
				|  |  | -        if (gameMode == 'a') {
 | 
	
		
			
				|  |  | +        if (gameMode === 'a') {
 | 
	
		
			
				|  |  |            self.balloon.x = cur;
 | 
	
		
			
				|  |  |            self.basket.x = cur;
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |          // On gameMode (b)
 | 
	
		
			
				|  |  | -        if (gameMode == 'b') {
 | 
	
		
			
				|  |  | +        if (gameMode === 'b') {
 | 
	
		
			
				|  |  |            document.body.style.cursor = 'auto';
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |            for (let i in self.circles.list) {
 | 
	
	
		
			
				|  | @@ -806,14 +808,14 @@ const circleOne = {
 | 
	
		
			
				|  |  |        const y = game.math.getMouse(mouseEvent).y;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |        // GAME MODE A : click road
 | 
	
		
			
				|  |  | -      if (gameMode == 'a') {
 | 
	
		
			
				|  |  | +      if (gameMode === 'a') {
 | 
	
		
			
				|  |  |          const isValid =
 | 
	
		
			
				|  |  |            y > 150 && x >= self.road.x && x <= self.road.x + self.road.width;
 | 
	
		
			
				|  |  | -        if (isValid) self.utils.clickHandler(x);
 | 
	
		
			
				|  |  | +        if (isValid) self.utils.clickCircleHandler(x);
 | 
	
		
			
				|  |  |        }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |        // GAME MODE B : click circle
 | 
	
		
			
				|  |  | -      if (gameMode == 'b') {
 | 
	
		
			
				|  |  | +      if (gameMode === 'b') {
 | 
	
		
			
				|  |  |          self.circles.list.forEach((circle) => {
 | 
	
		
			
				|  |  |            const isValid =
 | 
	
		
			
				|  |  |              game.math.distanceToPointer(
 | 
	
	
		
			
				|  | @@ -823,7 +825,7 @@ const circleOne = {
 | 
	
		
			
				|  |  |                circle.yWithAnchor
 | 
	
		
			
				|  |  |              ) <=
 | 
	
		
			
				|  |  |              (circle.diameter / 2) * circle.scale;
 | 
	
		
			
				|  |  | -          if (isValid) self.utils.clickHandler(circle);
 | 
	
		
			
				|  |  | +          if (isValid) self.utils.clickCircleHandler(circle);
 | 
	
		
			
				|  |  |          });
 | 
	
		
			
				|  |  |        }
 | 
	
		
			
				|  |  |  
 | 
	
	
		
			
				|  | @@ -850,7 +852,7 @@ const circleOne = {
 | 
	
		
			
				|  |  |        let isOverCircle = false;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |        // GAME MODE A : balloon follow mouse
 | 
	
		
			
				|  |  | -      if (gameMode == 'a' && !self.control.hasClicked) {
 | 
	
		
			
				|  |  | +      if (gameMode === 'a' && !self.control.hasClicked) {
 | 
	
		
			
				|  |  |          if (
 | 
	
		
			
				|  |  |            game.math.distanceToPointer(x, self.balloon.x, y, self.balloon.y) > 8
 | 
	
		
			
				|  |  |          ) {
 | 
	
	
		
			
				|  | @@ -861,7 +863,7 @@ const circleOne = {
 | 
	
		
			
				|  |  |        }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |        // GAME MODE B : hover circle
 | 
	
		
			
				|  |  | -      if (gameMode == 'b' && !self.control.hasClicked) {
 | 
	
		
			
				|  |  | +      if (gameMode === 'b' && !self.control.hasClicked) {
 | 
	
		
			
				|  |  |          self.circles.list.forEach((circle) => {
 | 
	
		
			
				|  |  |            const isValid =
 | 
	
		
			
				|  |  |              game.math.distanceToPointer(
 |