void nextGame() { keepTimeZero = false; Time.timeScale = 1; manager.curMinigame++; if (manager.curMinigame == 3) { manager.playMinigame(); } else { manager.playMinigame(manager.recipe.ingredients[manager.curMinigame]); } }
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]); } } } } }
// 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); } } }