Newer
Older
ChallengeSystem / src / main / java / de / fanta / challenges / utils / Statistics.java
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);
            }
        }
    }
}