public void Initialize() { if (singleton == null) { singleton = this; stats = new AllGameStats(); stats.roomStatsDict = new Dictionary <string, RoomStats>(); } else { //Destroy(this); } }
public override void CalculateResults(AllGameStats stats) { int totalNumInteractionsAcrossAllRooms = 0; int totalNumRoomsVisited = 0; List <float> timeSpendInRoomsList = new List <float>(); foreach (string roomNameKey in stats.roomStatsDict.Keys) { RoomStats rs = stats.roomStatsDict[roomNameKey]; totalNumInteractionsAcrossAllRooms += rs.numInteractions; if (rs.timeSpentInRoom > 0) { totalNumRoomsVisited++; timeSpendInRoomsList.Add(rs.timeSpentInRoom); } } // calculate the mean and standard deviation for time spent in rooms // mean float totalTimeSpentInAllRooms = 0; for (int i = 0; i < totalNumRoomsVisited; i++) { totalTimeSpentInAllRooms += timeSpendInRoomsList[i]; } float avgRoomTime = totalTimeSpentInAllRooms / totalNumRoomsVisited; // Standard Deviation float stdevSum = 0; for (int i = 0; i < totalNumRoomsVisited; i++) { stdevSum += Mathf.Pow((timeSpendInRoomsList[i] - avgRoomTime), 2); } float roomTimeStandardDeviation = Mathf.Sqrt(stdevSum / (totalNumRoomsVisited - 1)); float roomTimeScore = 1 - (roomTimeStandardDeviation / avgRoomTime); float fastTextScore = 1 - Mathf.Clamp(ScrollingTextBox.numTimesAdvancedText / 50.0f, 0f, 1f); honestyHumilityScore = (stats.thiefScore * thiefScore_weight) / (thiefScore_weight); emotionalityScore = (stats.thiefScore * thiefScore_weight) / (thiefScore_weight); extraversionScore = ((1 - fastTextScore) * fastText_weight) / (fastText_weight); agreeablenessScore = (fastTextScore * fastText_weight) / (fastText_weight); conscientiousnessScore = (stats.mazeScore * mazeScore_weight + stats.bhicken_sorted_score * bhicken_sorted_weight + stats.bhicken_orderliness * bhicken_orderliness_weight) / (bhicken_sorted_weight + bhicken_orderliness_weight + mazeScore_weight); opennessScore = (Mathf.Abs(stats.matchingScore) * matchingScore_weight + Mathf.Abs(roomTimeScore) * avgRoomTime_weight) / (matchingScore_weight + avgRoomTime_weight); if (float.IsNaN(opennessScore)) { opennessScore = 0; } // for the purposes of demoing, we fake values if they have come out to be 0 // This may happen if the player doesn't do everything float randValCap = .45f; if ((Mathf.Abs(honestyHumilityScore) < .1f)) { honestyHumilityScore = Random.Range(.1f, randValCap); } if ((Mathf.Abs(emotionalityScore) < .1f)) { emotionalityScore = Random.Range(.1f, randValCap); } if ((Mathf.Abs(extraversionScore) < .1f)) { extraversionScore = Random.Range(.1f, randValCap); } if ((Mathf.Abs(agreeablenessScore) < .1f)) { agreeablenessScore = Random.Range(.1f, randValCap); } if ((Mathf.Abs(conscientiousnessScore) < .1f)) { conscientiousnessScore = Random.Range(.1f, randValCap); } if ((Mathf.Abs(opennessScore) < .1f)) { opennessScore = Random.Range(.1f, randValCap); } }
public virtual void CalculateResults(AllGameStats stats) { }