public string GetStatsForPrint() { StringBuilder builder = new StringBuilder(); //General stats builder.Append("=================" + name + "===============\n"); builder.Append("Average Elapsed Time: ").Append(AverageTimeElapsed).Append("\n"); builder.Append(" - For Correct Ones: ").Append(AverageTimeElapsedForCorrectOnes).Append("\n"); builder.Append(" - For Correctly Colored Ones: ").Append(AverageTimeElapsedForCorrectOnesWithCorrectlyColored).Append("\n"); builder.Append(" - For Incorrectly Colored Ones: ").Append(AverageTimeElapsedForCorrectOnesWithIncorrectlyColored).Append("\n"); builder.Append(" - For Incorrect Ones: ").Append(AverageTimeElapsedForIncorrectOnes).Append("\n"); builder.Append(" - For Correctly Colored Ones: ").Append(AverageTimeElapsedForIncorrectOnesWithCorrectlyColored).Append("\n"); builder.Append(" - For Incorrectly Colored Ones: ").Append(AverageTimeElapsedForIncorrectOnesWithIncorrectlyColored).Append("\n"); builder.Append("Total: ").Append(Total).Append("\n"); builder.Append(" - For Correct Ones: ").Append(TotalCorrect).Append("\n"); builder.Append(" - For Correctly Colored Ones: ").Append(TotalCorrectWithCorrectlyColored).Append("\n"); builder.Append(" - For Incorrectly Colored Ones: ").Append(TotalCorrectWithIncorrectlyColored).Append("\n"); builder.Append(" - For Incorrect Ones: ").Append(TotalIncorrect).Append("\n"); builder.Append(" - For Correctly Colored Ones: ").Append(TotalIncorrectWithCorrectlyColored).Append("\n"); builder.Append(" - For Incorrectly Colored Ones: ").Append(TotalIncorrectWithIncorrectlyColored).Append("\n"); builder.Append("Total Missed: ").Append(TotalMissed).Append("\n"); builder.Append(" - For Correctly Colored Ones: ").Append(TotalMissedWithCorrectlyColored).Append("\n"); builder.Append(" - For Incorrectly Colored Ones: ").Append(TotalMissedWithIncorrectlyColored).Append("\n"); builder.Append("=============================================\n"); //stats per guess StatisticsList.ForEach(stat => { builder.Append("=============================================\n"); if (!stat.Missed) { builder.Append("Time Elapsed: ").Append(stat.TimeElapsed).Append("\n"); } else { builder.Append("Missed\n"); } builder.Append("Card ").Append(stat.UseCorrectColor ? "(Correctly colored)" : "(Incorrectly Colored)").Append("\n"); Array.ForEach(stat.Card.cardEntities, cardEntity => { CardUtil.ColorEnum color = stat.EntityToColor[cardEntity.entity]; builder.Append(" - ").Append(color).Append(" ").Append(cardEntity.entity).Append("\n"); }); if (!stat.Missed) { builder.Append("Correct Guess?: ").Append(stat.CorrectEntity == stat.GuessedEntity).Append("\n"); builder.Append(" - Correct Entity: ").Append(stat.CorrectEntity).Append("\n"); builder.Append(" - Guessed Entity: ").Append(stat.GuessedEntity).Append("\n"); } else { builder.Append("Correct Entity: ").Append(stat.CorrectEntity).Append("\n"); } builder.Append("=============================================\n"); }); return(builder.ToString()); }
private void NewRound() { Card card = generateCard(); CardUtil.EntityEnum[] allEntities = new CardUtil.EntityEnum[CardUtil.Entities_2Card.Count]; CardUtil.Entities_2Card.CopyTo(allEntities); CardUtil.EntityEnum[] currentEntities = card.cardEntities.Select(e => e.entity).ToArray(); CardUtil.EntityEnum[] otherEntities = allEntities.Where(e => !currentEntities.Contains(e)).ToArray(); useCorrectColor = false; HashSet <CardUtil.ColorEnum> colorsUsed = new HashSet <CardUtil.ColorEnum>(); Dictionary <CardUtil.EntityEnum, CardUtil.ColorEnum> entityToColor = new Dictionary <CardUtil.EntityEnum, CardUtil.ColorEnum>(); Array.ForEach(card.cardEntities, cardEntity => { int index = useCorrectColor ? UnityEngine.Random.Range(0, otherEntities.Length) : UnityEngine.Random.Range(0, otherEntities.Length + 1); index--; CardUtil.ColorEnum color; do { if (index < otherEntities.Length) { index++; } else { index = 0; } if (index >= otherEntities.Length) { useCorrectColor = true; } color = CardUtil.EntityColorMap[index >= otherEntities.Length ? cardEntity.entity : otherEntities[index]]; } while (colorsUsed.Contains(color)); colorsUsed.Add(color); entityToColor[cardEntity.entity] = color; Debug.Log(cardEntity.entity + ": " + color); cardEntity.image.color = CardUtil.ColorColorMap[color]; }); if (currentEntities.Contains(CardUtil.EntityEnum.Banana) && entityToColor[CardUtil.EntityEnum.Banana] == CardUtil.ColorEnum.Yellow) { GameProgressionUtil.UpdateGameProgression(rep => rep.totalTimesYellowBananaWasSeen++); } correctEntity = null; List <CardUtil.EntityEnum> incorrectEntities = new List <CardUtil.EntityEnum>(); foreach (KeyValuePair <CardUtil.EntityEnum, CardUtil.ColorEnum> entry in entityToColor) { CardUtil.EntityEnum entity = entry.Key; CardUtil.ColorEnum color = entry.Value; CardUtil.EntityEnum otherEntity = CardUtil.ColorEntityMap[color]; if (entity == otherEntity) { correctEntity = entity; break; } incorrectEntities.Add(entity); incorrectEntities.Add(otherEntity); } if (correctEntity == null) { correctEntity = allEntities.Except(incorrectEntities).First(); } cardGameObject = Instantiate(card, cardContainer.transform); //Enable all buttons SetButtonsEnabled(player1Buttons, true); SetButtonsEnabled(player2Buttons, true); //Set up stats float time = Time.time; player1.Stats.AddPickedCard(time, card, entityToColor, useCorrectColor); player1.guessed = false; if (GameSettingsUtil.GetGameType() == GameSettingsUtil.GameTypeEnum.Two) { player2.Stats.AddPickedCard(time, card, entityToColor, useCorrectColor); player2.guessed = false; } GameUtil.cpuList.ForEach(cpu => { cpu.Stats.AddPickedCard(time, card, entityToColor, useCorrectColor); }); GameUtil.cpuList.ForEach(cpu => { cpu.guessed = false; }); //Cpu starts guessing GameUtil.cpuList.ForEach(cpu => { cpuCoroutines.Add(StartCoroutine(CpuGuess(cpu))); }); }
private void ShowStatsContainer(bool show) { statsContainer.SetActive(show); inGameUiContainer.SetActive(false); pauseUiContainer.SetActive(!show); scoreUiContainer.SetActive(!show); cardContainer.SetActive(show); if (card != null) { DestroyImmediate(card.gameObject); card = null; } playerStatsToggleContainer.SetActive(GameSettingsUtil.GetGameType() != GameSettingsUtil.GameTypeEnum.Single); Statistics playerStats = GetPlayerStats(); if (show) { if (statsIndex == 0) { mainStatsContainer.SetActive(true); statsPointContainer.SetActive(false); averageTimeElapsedText.text = playerStats.Total == 0 ? "-" : playerStats.AverageTimeElapsed.ToString("0.00") + " s"; averageTimeElapsedForCorrectOnesText.text = playerStats.TotalCorrect == 0 ? "-" : playerStats.AverageTimeElapsedForCorrectOnes.ToString("0.00") + " s"; averageTimeElapsedForCorrectOnesWithCorrectlyColoredText.text = playerStats.TotalCorrectWithCorrectlyColored == 0 ? "-" : playerStats.AverageTimeElapsedForCorrectOnesWithCorrectlyColored.ToString("0.00") + " s"; averageTimeElapsedForCorrectOnesWithIncorrectlyColoredText.text = playerStats.TotalCorrectWithIncorrectlyColored == 0 ? "-" : playerStats.AverageTimeElapsedForCorrectOnesWithIncorrectlyColored.ToString("0.00") + " s"; averageTimeElapsedForIncorrectOnesText.text = playerStats.TotalIncorrect == 0 ? "-" : playerStats.AverageTimeElapsedForIncorrectOnes.ToString("0.00") + " s"; averageTimeElapsedForIncorrectOnesWithCorrectlyColoredText.text = playerStats.TotalIncorrectWithCorrectlyColored == 0 ? "-" : playerStats.AverageTimeElapsedForIncorrectOnesWithCorrectlyColored.ToString("0.00") + " s"; averageTimeElapsedForIncorrectOnesWithIncorrectlyColoredText.text = playerStats.TotalIncorrectWithIncorrectlyColored == 0 ? "-" : playerStats.AverageTimeElapsedForIncorrectOnesWithIncorrectlyColored.ToString("0.00") + " s"; totalText.text = playerStats.Total.ToString(); totalCorrectText.text = playerStats.TotalCorrect.ToString(); totalCorrectWithCorrectlyColoredText.text = playerStats.TotalCorrectWithCorrectlyColored.ToString(); totalCorrectWithIncorrectlyColoredText.text = playerStats.TotalCorrectWithIncorrectlyColored.ToString(); totalIncorrectText.text = playerStats.TotalIncorrect.ToString(); totalIncorrectWithCorrectlyColoredText.text = playerStats.TotalIncorrectWithCorrectlyColored.ToString(); totalIncorrectWithIncorrectlyColoredText.text = playerStats.TotalIncorrectWithIncorrectlyColored.ToString(); //If just one player, dont display misses bool onePlayer = statsList.Count <= 1; totalMissedText.text = onePlayer ? "-" : playerStats.TotalMissed.ToString(); totalMissedWithCorrectlyColoredText.text = onePlayer ? "-" : playerStats.TotalMissedWithCorrectlyColored.ToString(); totalMissedWithIncorrectlyColoredText.text = onePlayer ? "-" : playerStats.TotalMissedWithIncorrectlyColored.ToString(); } else { mainStatsContainer.SetActive(false); statsPointContainer.SetActive(true); StatisticsPoint statsPoint = playerStats.StatisticsList[statsIndex - 1]; card = Instantiate(statsPoint.Card, cardContainer.transform); card.gameObject.SetActive(true); Array.ForEach(card.cardEntities, cardEntity => { CardUtil.ColorEnum color = statsPoint.EntityToColor[cardEntity.entity]; cardEntity.image.color = CardUtil.ColorColorMap[color]; }); timeElapsedText.text = statsPoint.Missed ? "-" : statsPoint.TimeElapsed.ToString("0.00") + " s"; correctEntityText.text = statsPoint.CorrectEntity.ToString(); guessedEntityText.text = statsPoint.Missed ? "Missed": statsPoint.GuessedEntity.ToString(); messageText.text = "Card " + statsIndex; } } }