public void SetModel(string levelId, LevelRating data) { if (data.total > 0) { averageRatingText.text = ((data.average ?? 0) / 2.0).ToString("0.00"); numRatingsText.text = $"{data.total} " + (data.total > 1 ? "GAME_PREP_RATINGS_UNIT_RATINGS" : "GAME_PREP_RATINGS_UNIT_RATING").Get(); } else { averageRatingText.text = "N/A"; numRatingsText.text = "0 " + "GAME_PREP_RATINGS_UNIT_RATINGS".Get(); } if (Context.OnlinePlayer.IsAuthenticated && Context.LevelManager.LoadedLocalLevels.ContainsKey(levelId)) { messageText.text = data.rating > 0 ? "GAME_PREP_RATINGS_YOU_RATED_X".Get($"{data.rating / 2.0:0.#}") : (data.total > 0 ? "GAME_PREP_RATINGS_YOU_HAVENT_RATED" : "GAME_PREP_RATINGS_BE_THE_FIRST").Get(); rateButton.gameObject.SetActive(true); } else { messageText.text = ""; rateButton.gameObject.SetActive(false); } LayoutFixer.Fix(transform); }
private void OnLevelRatingUpdated(string id, LevelRating data) { if (levelId != id) { return; } if (data.total > 0) { ratingText.text = ((data.average ?? 0) / 2.0).ToString("0.00"); } else { ratingText.text = "N/A"; } rateLevelElement.SetModel(id, data); rateLevelElement.rateButton.onPointerClick.SetListener(_ => { var dialog = RateLevelDialog.Instantiate(id, data.rating ?? -1); dialog.onLevelRated.AddListener(rating => { print("Updated with " + rating.rating); OnLevelRatingUpdated(id, rating); }); dialog.Open(); }); }
public static void SetLevelRating(LevelID level, int rating) { // Search for a rating with the given id int index = Instance.levelRatings.FindIndex(x => x.ID == level); // Check if a rating with the id was found if (index >= 0) { // Get the rating LevelRating levelRating = Instance.levelRatings[index]; // If the current rating is less than the new one, then update the current rating if (levelRating.Rating < rating) { Instance.levelRatings[index] = new LevelRating(level, rating); } } // If no rating exists for the current id then add a new rating else { Instance.levelRatings.Add(new LevelRating(level, rating)); } }