package in.twizmwaz.cardinal.module.modules.score;
import in.twizmwaz.cardinal.match.Match;
import in.twizmwaz.cardinal.module.BuilderData;
import in.twizmwaz.cardinal.module.ModuleBuilder;
import in.twizmwaz.cardinal.module.ModuleCollection;
import in.twizmwaz.cardinal.module.ModuleLoadTime;
import in.twizmwaz.cardinal.module.modules.team.TeamModule;
import in.twizmwaz.cardinal.util.NumUtils;
import in.twizmwaz.cardinal.util.StringUtils;
import in.twizmwaz.cardinal.util.TeamUtils;
import org.jdom2.Element;
@BuilderData(load = ModuleLoadTime.LATE)
public class ScoreModuleBuilder implements ModuleBuilder {
@SuppressWarnings("unchecked")
@Override
public ModuleCollection load(Match match) {
ModuleCollection results = new ModuleCollection();
int pointsPerKill = 0;
int pointsPerDeath = 0;
int max = 0;
int time = 0;
for (Element score : match.getDocument().getRootElement().getChildren("score")) {
if (score.getChild("limit") != null) {
max = NumUtils.parseInt(score.getChild("limit").getText());
if (max < 0) max = 0;
if (max != 0) {
pointsPerKill = 1;
pointsPerDeath = 1;
}
}
if (score.getChild("time") != null) {
time = StringUtils.timeStringToSeconds(score.getChild("time").getText());
if (time > 0) {
pointsPerKill = 1;
pointsPerDeath = 1;
}
}
if (score.getChild("king") != null) {
pointsPerKill = 0;
pointsPerDeath = 0;
}
if (score.getChild("kills") != null) {
pointsPerKill = NumUtils.parseInt(score.getChild("kills").getText());
}
if (score.getChild("deaths") != null) {
pointsPerDeath = NumUtils.parseInt(score.getChild("deaths").getText());
}
}
for (TeamModule team : TeamUtils.getTeams()) {
if (!team.isObserver()) {
results.add(new ScoreModule(team, pointsPerKill, pointsPerDeath, max));
}
}
return results;
}
}