package de.fanta.challenges.utils;
import de.fanta.challenges.Challenges;
import de.fanta.challenges.ServerType;
import de.iani.cubesidestats.api.CubesideStatisticsAPI;
import de.iani.cubesidestats.api.StatisticKey;
import java.util.UUID;
public class Statistics {
private final Challenges plugin;
private final CubesideStatisticsAPI statistics;
private final StatisticKey speedRunsPlayedSolo;
private final StatisticKey speedRunsWonSolo;
private final StatisticKey speedRunsTimeSolo;
private final StatisticKey speedRunsPlayedDuo;
private final StatisticKey speedRunsWonDuo;
private final StatisticKey speedRunsTimeDuo;
private final StatisticKey speedRunsPlayedTeam;
private final StatisticKey speedRunsWonTeam;
private final StatisticKey speedRunsTimeTeam;
public Statistics(Challenges plugin) {
this.plugin = plugin;
statistics = plugin.getCubesideStatistics();
speedRunsPlayedSolo = statistics.getStatisticKey("challenge.speedruns.solo.played");
speedRunsPlayedSolo.setDisplayName("Challenge - SpeedRun's gespielt (Solo)");
speedRunsPlayedSolo.setIsMonthlyStats(true);
speedRunsWonSolo = statistics.getStatisticKey("challenge.speedruns.solo.won");
speedRunsWonSolo.setDisplayName("Challenge - SpeedRun's gewonnen (Solo)");
speedRunsWonSolo.setIsMonthlyStats(true);
speedRunsTimeSolo = statistics.getStatisticKey("challenge.speedruns.solo.time");
speedRunsTimeSolo.setDisplayName("Beste Zeit (Solo)");
speedRunsTimeSolo.setIsMonthlyStats(true);
speedRunsPlayedDuo = statistics.getStatisticKey("challenge.speedruns.duo.played");
speedRunsPlayedDuo.setDisplayName("Challenge - SpeedRun's gespielt (Duo)");
speedRunsPlayedDuo.setIsMonthlyStats(true);
speedRunsWonDuo = statistics.getStatisticKey("challenge.speedruns.duo.won");
speedRunsWonDuo.setDisplayName("Challenge - SpeedRun's gewonnen (Duo)");
speedRunsWonDuo.setIsMonthlyStats(true);
speedRunsTimeDuo = statistics.getStatisticKey("challenge.speedruns.duo.time");
speedRunsTimeDuo.setDisplayName("Beste Zeit (Duo)");
speedRunsTimeDuo.setIsMonthlyStats(true);
speedRunsPlayedTeam = statistics.getStatisticKey("challenge.speedruns.team.played");
speedRunsPlayedTeam.setDisplayName("Challenge - SpeedRun's gespielt (Team)");
speedRunsPlayedTeam.setIsMonthlyStats(true);
speedRunsWonTeam = statistics.getStatisticKey("challenge.speedruns.team.won");
speedRunsWonTeam.setDisplayName("Challenge - SpeedRun's gewonnen (Team)");
speedRunsWonTeam.setIsMonthlyStats(true);
speedRunsTimeTeam = statistics.getStatisticKey("challenge.speedruns.team.time");
speedRunsTimeTeam.setDisplayName("Beste Zeit (Team)");
speedRunsTimeTeam.setIsMonthlyStats(true);
}
public void addSpeedRunWonSolo(UUID uuid, int time) {
statistics.getStatistics(uuid).increaseScore(speedRunsWonSolo, 1);
statistics.getStatistics(uuid).minScore(speedRunsTimeSolo, time);
}
public void addSpeedRunsPlayedSolo(UUID uuid) {
statistics.getStatistics(uuid).increaseScore(speedRunsPlayedSolo, 1);
}
public void addSpeedRunWonDuo(UUID uuid, int time) {
statistics.getStatistics(uuid).increaseScore(speedRunsWonDuo, 1);
statistics.getStatistics(uuid).minScore(speedRunsTimeDuo, time);
}
public void addSpeedRunsPlayedDuo(UUID uuid) {
statistics.getStatistics(uuid).increaseScore(speedRunsPlayedDuo, 1);
}
public void addSpeedRunWonTeam(UUID uuid, int time) {
statistics.getStatistics(uuid).increaseScore(speedRunsWonTeam, 1);
statistics.getStatistics(uuid).minScore(speedRunsTimeTeam, time);
}
public void addSpeedRunsPlayedTeam(UUID uuid) {
statistics.getStatistics(uuid).increaseScore(speedRunsPlayedTeam, 1);
}
public void saveSpeedRun() {
if (plugin.getServerType() != ServerType.CHALLENGE) {
return;
}
for (UUID uuid : plugin.getstatisticPlayers()) {
int playerPlays = plugin.getstatisticPlayers().size();
if (playerPlays == 1) {
addSpeedRunWonSolo(uuid, (int) (plugin.getTimer().getTimeInMs() / 1000) * 1000);
} else if (playerPlays == 2) {
addSpeedRunWonDuo(uuid, (int) (plugin.getTimer().getTimeInMs() / 1000) * 1000);
} else if (playerPlays > 2) {
addSpeedRunWonTeam(uuid, (int) (plugin.getTimer().getTimeInMs() / 1000) * 1000);
}
}
}
public void addSpeedRunPlayed() {
if (plugin.getServerType() != ServerType.CHALLENGE) {
return;
}
for (UUID uuid : plugin.getstatisticPlayers()) {
int playerPlays = plugin.getstatisticPlayers().size();
if (playerPlays == 1) {
addSpeedRunsPlayedSolo(uuid);
} else if (playerPlays == 2) {
addSpeedRunsPlayedDuo(uuid);
} else if (playerPlays > 2) {
addSpeedRunsPlayedTeam(uuid);
}
}
}
}