Android Open Source - X3n0break High Score Manager






From Project

Back to project page X3n0break.

License

The source code is released under:

GNU General Public License

If you think the Android project X3n0break listed in this page is inappropriate, such as containing malicious code/tools or violating the copyright, please email info at java2s dot com, thanks.

Java Source Code

package org.x3n0m0rph59.breakout;
// ww  w.j a va 2s. c o m
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Collections;
import java.util.Comparator;
import java.util.LinkedList;
import java.util.List;

import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.files.FileHandle;
import com.badlogic.gdx.utils.Json;


public final class HighScoreManager {
  private static final HighScoreManager instance = new HighScoreManager();
  
  private List<HighScore> highScores = new LinkedList<HighScore>();
  private HighScore currentHighScore = null;
  
  public static HighScoreManager getInstance() {
    return instance;
  }
  
  private HighScoreManager() {
    loadHighScores();
  }
  
  private void sort() {
    Collections.sort(highScores, new Comparator<HighScore>() {

      @Override
      public int compare(HighScore o1, HighScore o2) {
        return o2.getScore() - o1.getScore();
      } 
    });    
  }
  
  @SuppressWarnings("unchecked")
  private void loadHighScores() {    
    final FileHandle fh = Gdx.files.external("." + Config.APP_NAME + "/highscores.json");        
    final Json json = new Json();
        
    try {
      if (fh.exists()) {
        highScores.clear();
        highScores = (LinkedList<HighScore>) json.fromJson(LinkedList.class, fh);
        
      } else {
        highScores.clear();
      }
    } catch (Exception e) {
//      highScores.clear();
    }
            
    sort();
  }
  
  private void saveHighScores() {
    sort();
    
    final FileHandle fh = Gdx.files.external("." + Config.APP_NAME + "/highscores.json");    
    final Json json = new Json();
    
    json.toJson(highScores, fh);    
    
//    json.setWriter(fh.writer(false));
//    
//    json.writeArrayStart("HighScores");
//    
//    for (final HighScore hs : highScores) {
//      json.writeFields(hs);
//    }
//    
//    json.writeArrayEnd();    
  }

  public boolean isNewHighScore(int score) {    
    if (highScores.isEmpty())
      return true;
    
    int lowestScore = Integer.MAX_VALUE;
    
    for (HighScore hs : highScores) {
      if (hs.getScore() <= lowestScore)
        lowestScore = hs.getScore(); 
    }
    
    if (score >= lowestScore)
      return true;
    else
      return false;
  }
  
  public void addHighScore(String name, int score, int level, int levelSet) {
    final String date = new SimpleDateFormat("dd.MM.yyyy HH:mm").format(Calendar.getInstance().getTime());    
    HighScore hs = new HighScore(name, date, score, level, levelSet);
    
    highScores.add(hs);
    setCurrentHighScore(hs);
    
    sort();
    
    saveHighScores();
  }
  
  public List<HighScore> getTop15Scores() {
    List<HighScore> top15Scores = new LinkedList<HighScore>();
    
    sort();
    
    for (int i = 0; i < 15; i++)
      if (i >= highScores.size())
        break;
      else
        top15Scores.add(highScores.get(i));
    
    return top15Scores;
  }

  public HighScore getCurrentHighScore() {
    return currentHighScore;
  }

  public void setCurrentHighScore(HighScore currentHighScore) {
    this.currentHighScore = currentHighScore;
  }
}




Java Source Code List

org.x3n0m0rph59.breakout.App.java
org.x3n0m0rph59.breakout.BackgroundFactory.java
org.x3n0m0rph59.breakout.Background.java
org.x3n0m0rph59.breakout.Ball.java
org.x3n0m0rph59.breakout.BottomWall.java
org.x3n0m0rph59.breakout.Brick.java
org.x3n0m0rph59.breakout.Config.java
org.x3n0m0rph59.breakout.Destroyable.java
org.x3n0m0rph59.breakout.EffectManager.java
org.x3n0m0rph59.breakout.Effect.java
org.x3n0m0rph59.breakout.FontLoader.java
org.x3n0m0rph59.breakout.FontTuple.java
org.x3n0m0rph59.breakout.ForceFeedback.java
org.x3n0m0rph59.breakout.GameInputProcessor.java
org.x3n0m0rph59.breakout.GameObject.java
org.x3n0m0rph59.breakout.GameScreen.java
org.x3n0m0rph59.breakout.GameState.java
org.x3n0m0rph59.breakout.GrapplingHookSegment.java
org.x3n0m0rph59.breakout.GrapplingHook.java
org.x3n0m0rph59.breakout.HelpInputProcessor.java
org.x3n0m0rph59.breakout.HelpScreen.java
org.x3n0m0rph59.breakout.HighScoreManager.java
org.x3n0m0rph59.breakout.HighScoreScreen.java
org.x3n0m0rph59.breakout.HighScore.java
org.x3n0m0rph59.breakout.HighscoreInputProcessor.java
org.x3n0m0rph59.breakout.IOSLauncher.java
org.x3n0m0rph59.breakout.LevelLoader.java
org.x3n0m0rph59.breakout.LevelSetSelectorInputProcessor.java
org.x3n0m0rph59.breakout.LevelSetSelectorScreen.java
org.x3n0m0rph59.breakout.Logger.java
org.x3n0m0rph59.breakout.MenuInputProcessor.java
org.x3n0m0rph59.breakout.MenuScreen.java
org.x3n0m0rph59.breakout.MusicLoader.java
org.x3n0m0rph59.breakout.MusicStream.java
org.x3n0m0rph59.breakout.ObjectPool.java
org.x3n0m0rph59.breakout.Paddle.java
org.x3n0m0rph59.breakout.ParticleSystem.java
org.x3n0m0rph59.breakout.Particle.java
org.x3n0m0rph59.breakout.Point.java
org.x3n0m0rph59.breakout.Poolable.java
org.x3n0m0rph59.breakout.Powerup.java
org.x3n0m0rph59.breakout.Projectile.java
org.x3n0m0rph59.breakout.Renderable.java
org.x3n0m0rph59.breakout.ResourceMapperDecisionCache.java
org.x3n0m0rph59.breakout.ResourceMapper.java
org.x3n0m0rph59.breakout.ScoreBoard.java
org.x3n0m0rph59.breakout.ScreenManager.java
org.x3n0m0rph59.breakout.ScreenType.java
org.x3n0m0rph59.breakout.SettingsInputProcessor.java
org.x3n0m0rph59.breakout.SettingsScreen.java
org.x3n0m0rph59.breakout.SoundLayer.java
org.x3n0m0rph59.breakout.SoundLoader.java
org.x3n0m0rph59.breakout.SoundSprite.java
org.x3n0m0rph59.breakout.SpaceBomb.java
org.x3n0m0rph59.breakout.SpriteLoader.java
org.x3n0m0rph59.breakout.SpriteObject.java
org.x3n0m0rph59.breakout.SpriteTuple.java
org.x3n0m0rph59.breakout.Star.java
org.x3n0m0rph59.breakout.Stepable.java
org.x3n0m0rph59.breakout.TextAnimationManager.java
org.x3n0m0rph59.breakout.TextAnimation.java
org.x3n0m0rph59.breakout.Util.java
org.x3n0m0rph59.breakout.Vector.java
org.x3n0m0rph59.breakout.android.AndroidLauncher.java
org.x3n0m0rph59.breakout.client.HtmlLauncher.java
org.x3n0m0rph59.breakout.desktop.DesktopLauncher.java