void nextGame()
 {
     keepTimeZero   = false;
     Time.timeScale = 1;
     manager.curMinigame++;
     if (manager.curMinigame == 3)
     {
         manager.playMinigame();
     }
     else
     {
         manager.playMinigame(manager.recipe.ingredients[manager.curMinigame]);
     }
 }
Exemple #2
0
 void playNext()
 {
     manager.recipe.ingredients[manager.curMinigame].GetComponent <SpriteRenderer>().sprite = sprite.sprite;
     timing = false;
     manager.curMinigame++;
     if (manager.curMinigame == 3)
     {
         manager.playMinigame();
     }
     else
     {
         manager.playMinigame(manager.recipe.ingredients[manager.curMinigame]);
     }
 }
 // Update is called once per frame
 void Update()
 {
     if (!OverallManager.paused)
     {
         if (update)
         {
             if (shadowObj != null)
             {
                 shadowObj.transform.position = new Vector3(anvilObj.transform.position.x, -4.5f, .5f);
                 float scaleThing = (Mathf.Abs(6.0f - shadowObj.transform.position.y) / 10f) + .05f;
                 shadowObj.transform.localScale = new Vector3(scaleThing, scaleThing, 1f);
                 if (anvilObj.transform.position.y < -3.5f)
                 {
                     Destroy(shadowObj);
                 }
             }
             if (anvilObj.transform.position.y - anvilCollider.bounds.extents.y > ingredientObj.transform.position.y - ingredientCollider.bounds.extents.y)
             {
                 Vector3 newPosition = anvilObj.transform.position;
                 newPosition.y -= Time.deltaTime / 2;
                 if (Input.GetKey(KeyCode.A))
                 {
                     xAccel -= Time.deltaTime / 4;
                 }
                 if (Input.GetKey(KeyCode.D))
                 {
                     xAccel += Time.deltaTime / 4;
                 }
                 if (Input.GetKey(KeyCode.S))
                 {
                     newPosition.y -= Time.deltaTime * 2;
                 }
                 newPosition.x += xAccel;
                 if (newPosition.x + anvilCollider.bounds.extents.x > 9.0f)
                 {
                     newPosition.x = 9.0f - anvilCollider.bounds.extents.x;
                 }
                 else if (newPosition.x - anvilCollider.bounds.extents.x < -9.0f)
                 {
                     newPosition.x = -9.0f + anvilCollider.bounds.extents.x;
                 }
                 anvilObj.transform.position = newPosition;
                 xAccel *= .995f;
             }
             else
             {
                 anvilObj.transform.position = new Vector3(anvilObj.transform.position.x, ingredientObj.transform.position.y - ingredientCollider.bounds.extents.y + anvilCollider.bounds.extents.y, anvilObj.transform.position.z);
                 float dist = ingredientCollider.bounds.extents.x + anvilCollider.bounds.extents.x;
                 ingredientObj.percentageGrade = Mathf.Abs(anvilObj.transform.position.x + .12f - dist) / dist;
                 if (ingredientObj.percentageGrade > 1f)
                 {
                     if (ingredientObj.percentageGrade >= 2f)
                     {
                         ingredientObj.percentageGrade = 0f;
                     }
                     else
                     {
                         ingredientObj.percentageGrade = 2f - ingredientObj.percentageGrade;
                     }
                 }
                 manager.recipe.ingredients[manager.curMinigame].percentageGrade = ingredientObj.percentageGrade;
                 manager.recipe.ingredients[manager.curMinigame].GetComponent <SpriteRenderer>().sprite = manager.recipe.ingredients[manager.curMinigame].finishedImage;
                 scoreText.enabled = true;
                 scoreText.text    = "Score: " + (int)(ingredientObj.percentageGrade * 100) + "%";
                 ingredientObj.transform.position = Vector3.zero;
                 ingredientObj.GetComponent <SpriteRenderer>().sprite = manager.recipe.ingredients[manager.curMinigame].finishedImage;
                 AudioSource.PlayClipAtPoint(splat, transform.position);
                 manager.curMinigame++;
                 update = false;
                 timing = true;
             }
         }
         if (timing)
         {
             Time.timeScale = 0;
             revealTimer   += Time.unscaledDeltaTime;
             if (revealTimer > 3f)
             {
                 timing         = false;
                 Time.timeScale = 1;
                 if (manager.curMinigame == 3)
                 {
                     manager.playMinigame();
                 }
                 else
                 {
                     manager.playMinigame(manager.recipe.ingredients[manager.curMinigame]);
                 }
             }
         }
     }
 }
Exemple #4
0
 // Update is called once per frame
 void Update()
 {
     if (!OverallManager.paused)
     {
         if (numClicks < 8)
         {
             Vector3[] positions = new Vector3[2];
             if (Input.GetKeyUp(KeyCode.Mouse0))
             {
                 points.Add(Camera.main.ScreenToWorldPoint(Input.mousePosition));
                 if (numClicks % 2 == 0)
                 {
                     lineFollowingMouse = true;
                     lineObjs[numClicks / 2].enabled = true;
                 }
                 else
                 {
                     lineFollowingMouse = false;
                 }
                 numClicks++;
                 if (!manager.lightScenePlayed)
                 {
                     if (numClicks < 8)
                     {
                         arrowObj.transform.position = arrowPositions[numClicks];
                     }
                     else
                     {
                         Destroy(arrowObj);
                         manager.lightScenePlayed = true;
                     }
                 }
                 source.Play();
             }
             if (lineFollowingMouse)
             {
                 positions[0] = points[numClicks - 1];
                 positions[1] = Camera.main.ScreenToWorldPoint(Input.mousePosition);
             }
             else if (numClicks > 0)
             {
                 positions[0] = points[numClicks - 2];
                 positions[1] = points[numClicks - 1];
             }
             lineObjs[(numClicks - 1) / 2].SetPositions(positions);
             if (numClicks == 8)
             {
                 float      score      = 1f;
                 Collider2D collider   = ingredientObj.GetComponent <Collider2D>();
                 float[]    fourPoints = new float[4];
                 fourPoints[3] = collider.bounds.extents.x * .6f;
                 fourPoints[2] = collider.bounds.extents.x * .2f;
                 fourPoints[1] = fourPoints[2] * -1f;
                 fourPoints[0] = fourPoints[3] * -1f;
                 for (int c = 0; c < 4; c++)
                 {
                     fourPoints[c] += ingredientObj.GetComponent <Collider2D>().offset.x;
                 }
                 float  diff    = collider.bounds.extents.x * .4f;
                 bool[] visited = new bool[4];
                 for (int c = 0; c < 4; c++)
                 {
                     visited[c] = false;
                 }
                 for (int c = 0; c < 4; c++)
                 {
                     int  i1        = 2 * c;
                     int  i2        = i1 + 1;
                     bool validLine = false;
                     if ((points[i1].y >= collider.bounds.extents.y && points[i2].y <= -collider.bounds.extents.y) || (points[i1].y <= -collider.bounds.extents.y && points[i2].y >= collider.bounds.extents.y))
                     {
                         validLine = true;
                     }
                     if (validLine)
                     {
                         float avg          = (points[i1].x + points[i2].x) / 2;
                         float minDist      = float.MaxValue;
                         int   minDistIndex = 5;
                         for (int d = 0; d < 4; d++)
                         {
                             float tempDist = Mathf.Abs(fourPoints[d] - avg);
                             if (!visited[d] && tempDist < minDist)
                             {
                                 minDist      = tempDist;
                                 minDistIndex = d;
                             }
                         }
                         visited[minDistIndex] = true;
                         float dist1        = Mathf.Abs(points[i1].x - fourPoints[minDistIndex]);
                         float dist2        = Mathf.Abs(points[i2].x - fourPoints[minDistIndex]);
                         float scoreRemoval = ((dist1 / diff) + (dist2 / diff)) / 24;
                         if (scoreRemoval <= .02f)
                         {
                             scoreRemoval = 0f;
                         }
                         if (scoreRemoval > .25f)
                         {
                             scoreRemoval = .25f;
                         }
                         score -= scoreRemoval;
                     }
                     else
                     {
                         score -= .25f;
                     }
                 }
                 ingredientObj.percentageGrade = score;
                 timing = true;
                 ingredientObj.GetComponent <SpriteRenderer>().sprite = manager.recipe.ingredients[manager.curMinigame].finishedImage;
                 scoreText.enabled = true;
                 scoreText.text    = "Score: " + (int)(ingredientObj.percentageGrade * 100) + "%";
             }
         }
         if (timing)
         {
             Time.timeScale = 0;
             revealTimer   += Time.unscaledDeltaTime;
             if (revealTimer > 3f)
             {
                 timing         = false;
                 Time.timeScale = 1;
                 source.clip    = slice;
                 source.Play();
                 timing = false;
                 manager.recipe.ingredients[manager.curMinigame].percentageGrade = ingredientObj.percentageGrade;
                 manager.recipe.ingredients[manager.curMinigame].GetComponent <SpriteRenderer>().sprite = manager.recipe.ingredients[manager.curMinigame].finishedImage;
                 for (int c = 0; c < 4; c++)
                 {
                     lineObjs[c].enabled = false;
                 }
                 manager.curMinigame++;
                 if (manager.curMinigame == 3)
                 {
                     manager.playMinigame();
                 }
                 else
                 {
                     manager.playMinigame(manager.recipe.ingredients[manager.curMinigame]);
                 }
             }
         }
     }
 }
    // Update is called once per frame
    void Update()
    {
        if (!OverallManager.paused)
        {
            if (keepTimeZero)
            {
                Time.timeScale = 0;
            }
            else
            {
                Time.timeScale = 1;
            }
            if (timer == 0f)
            {
                keepTimeZero = true;
            }
            // after the game starts the first stage will disable and enable certain text boxes and toggle visibilities
            if (timer > 0.0f && timer < stage1Time && !gameCutSpots[0].active)
            {
                Destroy(box);
                keepTimeZero = true;

                timeShown              = stage1Time;   // Time shown text set to stage 1 time
                timeLeft.enabled       = true;         // Enable the time left text
                onBoardingText.enabled = false;        // Disable onboarding text

                ingredient.gameObject.SetActive(true); // Make the ingredient visible
                ToggleVisiblity();                     // Toggles the lines visibility
            }
            if (timer > stage1Time && counter < playerCutSpots.Count && timer < stage1Time + stage2Time)
            {
                keepTimeZero = false;

                // first update only
                if (gameCutSpots[0].active)
                {
                    timeShown = stage2Time;     // New time shown
                    ToggleVisiblity();          // Toggles the lines visibility
                }

                // Sets current player line to visible
                playerCutSpots[counter].SetActive(true);

                // Sets the lines position to the mouses positon
                Vector3 temp = Camera.main.ScreenToWorldPoint(new Vector3(Input.mousePosition.x, 0, -2));
                temp.y = 0;
                temp.z = -1;

                // Keeps the lines inbounds of the sprite
                if (temp.x > xBounds / 2)
                {
                    temp.x = xBounds / 2;
                }
                else if (temp.x < -xBounds / 2)
                {
                    temp.x = -xBounds / 2;
                }

                playerCutSpots[counter].transform.position = temp;

                // If the player clicks it sets the players cut spot to the last known mouse postion
                if (Input.GetMouseButtonDown(0))
                {
                    // Playes audio clip
                    audio.clip = slice;
                    audio.Play();

                    // Next line
                    counter++;
                }
            }

            if (timer > stage1Time + stage2Time && !isCalculated || counter == 4 && !isCalculated)
            {
                int grade = (int)CalculateGrade();

                // Reverts the last line if the player didnt click 4 times
                keepTimeZero = true;

                // Reverts the last line if the player didnt click 4 times
                if (counter < 4)
                {
                    playerCutSpots[counter].transform.position = new Vector3(20, 0, -1);
                    playerCutSpots[counter].SetActive(false);
                }

                isCalculated = true;
                // Calculates the grade
                scoreText.enabled = true;
                scoreText.text    = string.Format("Score: {0}%", grade);

                ToggleVisiblity();          // Toggles the lines visibility

                timeShown = 5;
            }

            if (timer > stage1Time + stage2Time + 1 && isCalculated)
            {
                keepTimeZero   = false;
                Time.timeScale = 1;
                manager.recipe.ingredients[manager.curMinigame].GetComponent <SpriteRenderer>().sprite = manager.recipe.ingredients[manager.curMinigame].finishedImage;
                ingredient.GetComponent <SpriteRenderer>().sprite = manager.recipe.ingredients[manager.curMinigame].finishedImage;

                manager.curMinigame++;

                if (manager.curMinigame == 3)
                {
                    manager.playMinigame();
                }
                else
                {
                    manager.playMinigame(manager.recipe.ingredients[manager.curMinigame]);
                }
            }

            if (!startGame && Input.GetMouseButtonDown(0))
            {
                // Plays audio clip
                audio.clip = tick;
                audio.Play();

                // Starts the game
                startGame = true;
            }
            if (startGame)
            {
                // Updates the time and time shown
                timer    += Time.unscaledDeltaTime;
                timeShown = timeShown - Time.unscaledDeltaTime;

                if (timeShown < 0)
                {
                    timeShown = 0;
                }

                timeLeft.text = string.Format("Time Left: {0:F1}", timeShown);
            }
        }
    }