package br.edu.ufcg.ccc.projeto2.warofkingdoms.management;
import android.content.Context;
import android.content.SharedPreferences;
import android.content.SharedPreferences.Editor;
import android.preference.PreferenceManager;
import br.edu.ufcg.ccc.projeto2.warofkingdoms.entities.GameState;
import br.edu.ufcg.ccc.projeto2.warofkingdoms.util.Constants;
public class ProfileManager {
// NR stands for NOT_RECORDED
private final String CLEAN_VICTORY_TRACK = "NR NR NR NR NR NR NR NR NR NR";
public static final String LOST = "L";
public static final String VICTORY = "V";
private static ProfileManager instance;
private ProfileManager() {
}
public synchronized static ProfileManager getInstance() {
if (instance == null) {
instance = new ProfileManager();
}
return instance;
}
public void saveGameStatistics(GameState gameState, Context preferenceContext) {
int numTimesPlayed = getIntSharedPreference(Constants.NUM_TIMES_PLAYED_KEY, preferenceContext);
int numVictories = getIntSharedPreference(Constants.NUM_VICTORIES_KEY, preferenceContext);
if (GameManager.getInstance().currentPlayerWon(gameState.getWinnerList())) {
numVictories++;
saveInt(Constants.NUM_VICTORIES_KEY, numVictories, preferenceContext);
String tenLastGames = addHistoryEntry(true, preferenceContext);
saveString(Constants.TEN_LAST_GAMES, tenLastGames, preferenceContext);
} else {
String tenLastGames = addHistoryEntry(false, preferenceContext);
saveString(Constants.TEN_LAST_GAMES, tenLastGames, preferenceContext);
}
numTimesPlayed++;
saveInt(Constants.NUM_TIMES_PLAYED_KEY, numTimesPlayed, preferenceContext);
}
private String addHistoryEntry(boolean victory, Context preferenceContext) {
String tenLastGames = getStringSharedPreference(Constants.TEN_LAST_GAMES, preferenceContext);
tenLastGames = removeOldestTrack(tenLastGames);
if (victory) {
tenLastGames = VICTORY +" "+ tenLastGames;
} else {
tenLastGames = LOST +" "+ tenLastGames;
}
return tenLastGames;
}
private String removeOldestTrack(String tenLastGames) {
String[] individualGames = tenLastGames.split(" ");
String editedVictoryTrack = "";
for (int i = 0; i < individualGames.length-1; i++) {
editedVictoryTrack += individualGames[i] +" ";
}
return editedVictoryTrack.trim();
}
public String getStringSharedPreference(String key, Context preferenceContext) {
SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(preferenceContext);
return sharedPreferences.getString(key, CLEAN_VICTORY_TRACK);
}
public void saveString(String key, String value, Context preferenceContext){
SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(preferenceContext);
SharedPreferences.Editor editor = sharedPreferences.edit();
editor.putString(key, value);
editor.commit();
}
public void saveInt(String key, int value, Context preferenceContext){
SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(preferenceContext);
SharedPreferences.Editor editor = sharedPreferences.edit();
editor.putInt(key, value);
editor.commit();
}
public int getIntSharedPreference(String key, Context preferenceContext){
SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(preferenceContext);
return sharedPreferences.getInt(key, 0);
}
}