Пример #1
0
  public void update(GameInfo gameInfo) {
    int races = gameInfo.getLocalPlayerRaces();
    CampaignLevel campaignLevel = gameInfo.getCampaignLevel();
    if (campaignLevel != null && gameInfo.won()) {
      int stars = gameInfo.getStarCount();
      campaignLevel.update(stars, gameInfo.getComputerLevel());
    }

    long xp = increaseXP(gameInfo);
    for (int race : Races.asArray(races)) {
      processRace(gameInfo, race, xp);
    }
    if (gameInfo.won()) wins++;
    else losses++;

    if (longestGame < gameInfo.getLength()) longestGame = gameInfo.getLength();
    if (shortestGame > gameInfo.getLength()) shortestGame = gameInfo.getLength();
    if (highestLevelBeaten < gameInfo.getComputerLevel())
      highestLevelBeaten = gameInfo.getComputerLevel();
    if (highestScore < xp) highestScore = xp;

    for (Achievement achievement : achievements) {
      if (achievement.executeIfNotCompleted(this)) {
        // add achievement to list if it was executed for the first time
        gameInfo.addAchievement(achievement);
      }
    }
  }