package me.maker56.survivalgames.statistics;
import java.util.HashMap;
import me.maker56.survivalgames.SurvivalGames;
import me.maker56.survivalgames.commands.messages.MessageHandler;
import me.maker56.survivalgames.user.UserState;
import org.bukkit.Bukkit;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
public class StatisticManager {
// OFFLINE
protected static HashMap<String, StatisticData> stats = new HashMap<>();
private static int refreshTime = 60;
public static void sendStatistics(CommandSender sender, String name) {
if(name.length() < 4 || name.length() > 16 || !name.matches("[a-zA-Z0-9_]*")) {
sender.sendMessage(MessageHandler.getMessage("stats-player-not-found").replace("%0%", name));
return;
}
String realname = name;
name = name.toLowerCase();
Player pl = Bukkit.getPlayer(realname);
// playing players
if(pl != null) {
UserState state = SurvivalGames.userManger.getUser(realname);
if(state == null)
state = SurvivalGames.userManger.getSpectator(realname);
if(state != null) {
if(!state.areStatisticsLoaded()) {
sender.sendMessage(MessageHandler.getMessage("stats-player-not-loaded").replace("%0%", realname));
return;
}
StatisticData sd = state.getStatistics();
sendStatistics(sender, sd);
return;
}
}
if(stats.containsKey(name)) {
StatisticData sd = stats.get(name);
if((System.currentTimeMillis() - sd.creation) / 1000 >= refreshTime) {
StatisticLoader.load(sender, name);
}
sendStatistics(sender, sd);
} else {
StatisticLoader.load(sender, name);
}
}
public static void setStatistics(CommandSender p, StatisticData sd) {
String name = sd.name.toLowerCase();
if(stats.containsKey(name))
stats.remove(name);
stats.put(name, sd);
sendStatistics(p, sd);
}
public static void sendStatistics(CommandSender sender, StatisticData sd) {
sender.sendMessage(MessageHandler.getMessage("stats-header").replace("%0%", sd.name));
sender.sendMessage(MessageHandler.getMessage("stats-kills").replace("%0%", Integer.valueOf(sd.getKills()).toString()));
sender.sendMessage(MessageHandler.getMessage("stats-deaths").replace("%0%", Integer.valueOf(sd.getDeaths()).toString()));
sender.sendMessage(MessageHandler.getMessage("stats-kdr").replace("%0%", Float.valueOf((float) (Math.round( sd.getKDR() * 100. ) / 100.)).toString().replace(".", ",")));
sender.sendMessage(MessageHandler.getMessage("stats-wins").replace("%0%", Integer.valueOf(sd.getWins()).toString()));
sender.sendMessage(MessageHandler.getMessage("stats-played").replace("%0%", Integer.valueOf(sd.getPlayed()).toString()));
sender.sendMessage(MessageHandler.getMessage("stats-points").replace("%0%", Integer.valueOf(sd.getPoints()).toString()));
sender.sendMessage(MessageHandler.getMessage("stats-footer").replace("%0%", sd.name));
}
}