internal void SetColour(int playerIndex) { ColouredPart.color = ColourFetcher.GetColour(playerIndex); name = "PADDLE_" + playerIndex; }
/// <summary> /// Sets the values of the burger /// </summary> /// <param name="customer">The complaints</param> /// <param name="tip">How much top was given</param> /// <param name="totalScore">Score achieved for this burger</param> /// <param name="playerIndex">Index of the player who made the burger</param> internal void Initialise(List <BurgerComplaint> complaints, int tip, int totalScore, int playerIndex, string customerName) { Sprite bread = null; _complaints = complaints; // display tip for (int i = 0; i < TipsRenderers.Length; i++) { TipsRenderers[i].gameObject.SetActive((tip) >= ((i + 1) * 10)); } StarImage.sprite = LicenseToGrillController.Instance.StarImages[((totalScore + 19) / 20)]; ColourBar.color = ColourFetcher.GetColour(playerIndex); TxtCustomerName.text = customerName; // display burger var index = 0; var message = ""; foreach (var item in complaints) { // add to the message if (message.Length > 0) { message += ", "; } message += (message.Length > 0) ? item.ErrorMessage().ToLower() : item.ErrorMessage(); if (item.GetSprite() != null) { // if bread, add both parts if (item.ErrorMessage().ToLower().Contains("bread")) { bread = LicenseToGrillController.Instance.BreadTop[item.GetSpriteIndex()]; } // show the image ElementRenderers[index].sprite = item.GetSprite(); ElementRenderers[index].color = item.GetColour(); ElementRenderers[index].gameObject.SetActive(true); index++; } } // update message if flawless if (complaints.Count == 0) { message = MessageFetcher.GetPerfectBurgerMessage(); } // format message TxtDescription.text = TextFormatter.GetBurgerReviewString(message); // show heading based on score TxtTitle.text = GetHeading_(totalScore); // add second part of bread if (bread) { // show the image ElementRenderers[index].sprite = bread; ElementRenderers[index].color = Color.white; ElementRenderers[index].gameObject.SetActive(true); index++; } // hide unused elements for (; index < ElementRenderers.Length; index++) { ElementRenderers[index].gameObject.SetActive(false); } }
// Start is called before the first frame update void Start() { Instance = this; // fade in EndFader.GetComponentInChildren <Image>().sprite = PlayerManagerScript.Instance.GetFaderImage(); EndFader.StartFade(1, 0, FadeInComplete); // load all jokes - must be done in Start, not constructor (as Resources must be loaded after script starts) _jokeManager = new JokeManager(); // create players SpawnPlayers_(); // find components _cards = FindObjectsOfType <CardScript>(); _players = FindObjectsOfType <PunchlineBlingInputHandler>().OrderBy(p => p.GetPlayerIndex()).ToArray(); // set all players as not active for (int i = 0; i < _players.Length; i++) { _players[i].ActivePlayer(false, 0); } // initialise the notepad texts for (var i = 0; i < NoteBookTexts.Length; i++) { NoteBookTexts[i].text = ""; } // hide end UI PnlTotalPoints.SetActive(false); // configure the points display controls for (int i = 0; i < _players.Length; i++) { var images = PlayerDisplays[i].GetComponentsInChildren <Image>(); images[0].color = ColourFetcher.GetColour(i); images[1].sprite = CharacterIcons[_players[i].GetCharacterIndex()]; // set player name on display var txts = PlayerDisplays[i].GetComponentsInChildren <Text>(); txts[0].text = _players[i].GetPlayerName(); } // hide unused controls for (int i = _players.Length; i < PlayerDisplays.Length; i++) { PlayerDisplays[i].gameObject.SetActive(false); } CreateCards_(); // set up the timers _overallLimit = (TimeLimit)gameObject.AddComponent(typeof(TimeLimit)); _playerLimit = (TimeLimit)gameObject.AddComponent(typeof(TimeLimit)); _overallLimit.Initialise(300, OverallTickCallback, OverallTimeoutCallback); _playerLimit.Initialise(20, PlayerTickCallback, PlayerTimeoutCallback); SpinWheel.Initialise(_players.ToList()); List <GenericInputHandler> genericPlayers = _players.ToList <GenericInputHandler>(); PauseGameHandler.Instance.Initialise(genericPlayers, QuitGame_); }
/// <summary> /// Sets the colour of the suit details to match the players colour /// </summary> /// <param name="playerIndex"></param> /// <param name="characterIndex"></param> internal void SetPlayerColour(int playerIndex, int characterIndex) { _playerIndex = playerIndex; _colourDetails.color = ColourFetcher.GetColour(playerIndex); _playerSprite.sprite = IdleImages[characterIndex]; }
/// <summary> /// Show the canvases and scores for each players /// </summary> IEnumerator ShowResults_() { _ended = true; // add bonus points for quickest lap if (_currentBestLapPlayer > -1) { _players[_currentBestLapPlayer].AddPoints(FASTEST_LAP_BONUS); } yield return(new WaitForSeconds(2f)); Leaderboard.SetActive(false); Gallery.SetActive(true); foreach (var player in _players) { // hide all frames at start InitialiseFrames_(); yield return(new WaitForSeconds(1)); TxtGalleryPlayerName.text = player.GetPlayerName(); // get data var laps = player.GetLaps(); var scores = player.GetLapScores(); var times = player.GetLapTimes(); var accuracies = player.GetLapAccuracies(); for (int i = 0; i < laps.Count; i++) { // initialise frames GalleryFrames[i].Rosette.color = ColourFetcher.GetColour(player.GetPlayerIndex()); GalleryFrames[i].gameObject.SetActive(true); // get trail positions for this lap var x = 100 * (i + 1) + 3; var tuples = laps[i].Select(t => t.Item1 + new Vector3(-x, 0, 0)).ToList(); tuples.RemoveAt(0); tuples.RemoveAt(tuples.Count - 1); // set position of trail TrailRenderers[i].transform.localPosition = new Vector3(tuples.Last().x + (100 * (i + 1)), tuples.Last().y, -0.1f); // set colour of trail TrailRenderers[i].startColor = ColourFetcher.GetColour(player.GetPlayerIndex()); TrailRenderers[i].endColor = ColourFetcher.GetColour(player.GetPlayerIndex()); // dsplay trail data TrailRenderers[i].Clear(); TrailRenderers[i].AddPositions(tuples.ToArray()); // create lap time string var lapTimeDisplay = "Not complete"; if (i < times.Count) { var ms = times[i]; // calculate time components int seconds = (int)(ms / 1000f); int milliseconds = (int)((ms - (seconds * 1000f))); lapTimeDisplay = $"{seconds.ToString("00")}.{milliseconds.ToString("000")} seconds"; } // display data on GalleryFrames[i].TxtLapAccuracy.text = i >= accuracies.Count ? "" : Math.Round(accuracies[i] * 100, 1) + "%"; GalleryFrames[i].TxtLapTime.text = lapTimeDisplay; GalleryFrames[i].TxtLapPoints.text = i >= scores.Count ? "" : scores[i].ToString(); yield return(new WaitForSeconds(1)); // show gallery sign GalleryFrames[i].PictureSign.gameObject.SetActive(true); yield return(new WaitForSeconds(1)); // check if there is data for this if (i < scores.Count) { // display points for this lap on a rosette GalleryFrames[i].Rosette.gameObject.SetActive(true); yield return(new WaitForSeconds(1)); // if accuracy bonus was earned, display a second rosette if (accuracies[i] > CarControllerScript.ACCURACY_BONUS_THRESHOLD) { GalleryFrames[i].AccuracyBonusRosette.gameObject.SetActive(true); yield return(new WaitForSeconds(1)); } // if this was the fastest lap of the game, show a rosette for this if (_currentBestLap == times[i] && _currentBestLapPlayer == player.GetPlayerIndex()) { GalleryFrames[i].FastestLapRosette.gameObject.SetActive(true); yield return(new WaitForSeconds(1)); } } } // show total points TxtTotalPoints.text = "Total: " + player.GetPoints() + " points"; yield return(new WaitForSeconds(3)); TxtTotalPoints.text = ""; } // wait before end yield return(new WaitForSeconds(1)); StartCoroutine(Complete_()); }