History Scoreboard Details - UQdeco2800/2021-ext-studio-2 GitHub Wiki

Description

On clicking a gold, silver or bronze trophy (whichever is applicable) for an associate score item in the history scoreboard screen, a dialog opens which shows the details of that particular game. This includes :-

  • The game number
  • Date of play
  • Time of play
  • Final score
  • Achievements unlocked
  • Distance travelled

All the data is fetched from GameRecords.

Files of note

  • ScoreDetailsDialog.java: Contains code which fetches data from GameRecords and ServiceLocator and displays the associated score. The dialog opens when the event ScoreDetailsDialog.OPEN_SCORE_DETAILS_DIALOG is triggered. The LibGDX Dialog class was used to bootstrap a dialog. This file can be found here.
        // Event when a score row is clicked
        // The Score object contains the score, game number, distance travelled, time of death etc. 
        entity.getEvents().addListener(OPEN_SCORE_DETAILS_DIALOG, (Score score) -> {
            // Get the list of the best achievements for that particular game
            List<BaseAchievementConfig> bestAchievements = GameRecords.getBestAchievementsByGame(score.game);
            // Open the dialog
            openDialog(score, bestAchievements);
        });
  • HistoryScoreBoardDisplay.java: Displays gold, silver or bronze trophies beside the score and date of play. The metadata of each game is fetched from GameRecords. On clicking a particular trophy, the event ScoreDetailsDialog.OPEN_SCORE_DETAILS_DIALOG is triggered which displays a ScoreDetailsDialog.This file can be found here.
 private ImageButton getStatusButton(Score score) {
        List<BaseAchievementConfig> bestAchievementsByGame = GameRecords.getBestAchievementsByGame(score.game);
        Set<String> unlockedAchievementTiers = bestAchievementsByGame.stream()
                .map(achievement -> achievement.type)
                .collect(Collectors.toSet());
        // Fetch the highest tier trophy that the user unlocked. 
        if (unlockedAchievementTiers.contains("GOLD")) {
            trophyStatus = getImageButton("images/achievements/achievementStatusGold.png");
        } else if (unlockedAchievementTiers.contains("SILVER")) {
            trophyStatus = getImageButton("images/achievements/achievementStatusSilver.png");
        } else if (unlockedAchievementTiers.contains("BRONZE")) {
            trophyStatus = getImageButton("images/achievements/achievementStatusBronze.png");
        } else {
            trophyStatus = getImageButton("images/achievements/achievementStatusNone.png");
            trophyStatus.setColor(255f, 255f, 255f, 0.55f);
        }
        trophyStatus.addListener(new ChangeListener() {
            @Override
            public void changed(ChangeEvent event, Actor actor) {
                // Open score details dialog
                entity.getEvents().trigger(ScoreDetailsDialog.OPEN_SCORE_DETAILS_DIALOG, score);
            }
        });
        return trophyStatus;
    }
⚠️ **GitHub.com Fallback** ⚠️