added ability to parse different competitor types

This commit is contained in:
Joshua Perry 2023-01-31 15:52:29 +00:00
parent fd11f5f5fd
commit a4c55c7cf1
1 changed files with 39 additions and 10 deletions

View File

@ -9,18 +9,20 @@ import java.nio.file.Path;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Scanner; import java.util.Scanner;
import org.r0r5chach.r6.R6Attacker;
import org.r0r5chach.r6.R6Defender;
import org.r0r5chach.r6.R6Player;
import org.r0r5chach.valorant.ValorantAgent;
import org.r0r5chach.valorant.ValorantPlayer;
public class CompetitorList { public class CompetitorList {
private final ArrayList<Competitor> competitors; private final ArrayList<Competitor> competitors;
private String reportContents; private String reportContents;
public CompetitorList(File list) throws IOException { public CompetitorList() throws IOException {
competitors = new ArrayList<>(); competitors = new ArrayList<>();
readCompetitors(list);
reportContents = reportTemplate(); reportContents = reportTemplate();
} }
@ -32,23 +34,47 @@ public class CompetitorList {
return competitors; return competitors;
} }
private void readCompetitors(File list) throws FileNotFoundException { public void readCompetitors(File list) throws FileNotFoundException {
Scanner reader = new Scanner(list); Scanner reader = new Scanner(list);
while (reader.hasNextLine()) { while (reader.hasNextLine()) {
String[] row = reader.nextLine().split("%"); String[] row = reader.nextLine().split("%");
competitors.add(parseRow(row)); switch (list.getName()) {
case "valorantPlayers.txt" -> competitors.add(parseValorantPlayer(row));
case "r6Players.txt" -> competitors.add(parseR6Player(row));
default -> competitors.add(parseRow(row));
}
} }
reader.close(); reader.close();
} }
private Competitor parseRow(String[] row) { //FIXME: parse row for different amount of stuffs private Competitor parseRow(String[] row) {
int playerNumber = Integer.parseInt(row[0]); int playerNumber = Integer.parseInt(row[0]);
Name playerName = new Name(row[1]); Name playerName = new Name(row[1]);
Rank playerLevel = Rank.valueOf(row[2]); Rank playerLevel = Rank.valueOf(row[2]);
int[] scores = parseScores(row[4]); int[] scores = parseScores(row[3]);
return new Competitor(playerNumber, playerName, playerLevel, scores); return new Competitor(playerNumber, playerName, playerLevel, scores);
} }
private ValorantPlayer parseValorantPlayer(String[] row) {
int playerNumber = Integer.parseInt(row[0]);
Name playerName = new Name(row[1]);
Rank playerLevel = Rank.valueOf(row[2]);
ValorantAgent favoriteAgent = ValorantAgent.valueOf(row[3]);
int[] scores = parseScores(row[4]);
return new ValorantPlayer(playerNumber, playerName, playerLevel, favoriteAgent, scores);
}
private R6Player parseR6Player(String[] row) {
int playerNumber = Integer.parseInt(row[0]);
Name playerName = new Name(row[1]);
Rank playerLevel = Rank.valueOf(row[2]);
R6Attacker favoriteAttacker = R6Attacker.valueOf(row[3]);
R6Defender favoriteDefender = R6Defender.valueOf(row[4]);
int[] scores = parseScores(row[5]);
return new R6Player(playerNumber, playerName, playerLevel, favoriteAttacker, favoriteDefender, scores);
}
private int[] parseScores(String row) { private int[] parseScores(String row) {
String[] scores = row.split(","); String[] scores = row.split(",");
int[] parsedScores = new int[scores.length]; int[] parsedScores = new int[scores.length];
@ -59,7 +85,7 @@ public class CompetitorList {
} }
private String generateTable() { private String generateTable() {
StringBuilder table = new StringBuilder("Competitor Level Agent Scores Overall"); StringBuilder table = new StringBuilder("Competitor Level Scores Overall Favorite Character(s)");
for (Competitor player: getCompetitors()) { for (Competitor player: getCompetitors()) {
table.append("\n"); table.append("\n");
for (String detail: player.getFullDetails().split("\n")) { for (String detail: player.getFullDetails().split("\n")) {
@ -67,6 +93,9 @@ public class CompetitorList {
if (detailParts[0].equals("Player Number")) { if (detailParts[0].equals("Player Number")) {
table.append(detailParts[1]).append(" "); table.append(detailParts[1]).append(" ");
} }
else if (detailParts[0].equals("Favorite Agent") || detailParts[0].equals("Favorite Attacker") || detailParts[0].equals("Favorite Defender")) {
table.append(detailParts[0] + ": " + detailParts[1]).append(" ");
}
else { else {
table.append(detailParts[1]).append(" "); table.append(detailParts[1]).append(" ");
} }