You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
75 lines
1.8 KiB
75 lines
1.8 KiB
class Scoreboard {
|
|
|
|
String dataSource;
|
|
Table table;
|
|
boolean autoload = true;
|
|
|
|
Scoreboard() {
|
|
this.dataSource = "scoreboard.csv";
|
|
if (autoload) this.load();
|
|
}
|
|
Scoreboard(String dataSource) {
|
|
this.dataSource = dataSource;
|
|
if (autoload) this.load();
|
|
}
|
|
|
|
// charge ou génère le tableau des scores
|
|
void load() {
|
|
if (fileExists(this.dataSource)) {
|
|
this.table = loadTable("data/"+this.dataSource, "header");
|
|
} else {
|
|
this.table = new Table();
|
|
this.table.addColumn("equipe");
|
|
this.table.addColumn("score");
|
|
for (int i = 0 ; i < nombreEquipes; i++) {
|
|
TableRow scoreEquipe = this.table.addRow();
|
|
|
|
scoreEquipe.setInt("equipe", i+1);
|
|
scoreEquipe.setInt("score", 0);
|
|
}
|
|
}
|
|
}
|
|
|
|
// écrit le tableau des scores dans un .csv
|
|
void save() {
|
|
this.table = new Table();
|
|
|
|
this.table.addColumn("equipe");
|
|
this.table.addColumn("score");
|
|
|
|
for (int i = 0 ; i < equipes.length; i++) {
|
|
Equipe e = equipes[i];
|
|
TableRow scoreEquipe = this.table.addRow();
|
|
|
|
scoreEquipe.setInt("equipe", e.id+1);
|
|
scoreEquipe.setInt("score", e.score);
|
|
}
|
|
|
|
saveTable(this.table, "data/"+this.dataSource, "csv");
|
|
}
|
|
|
|
void reloadFromDisk() {
|
|
//println("reload from disk");
|
|
this.load();
|
|
this.applyScores();
|
|
}
|
|
|
|
int getScore(int i) {
|
|
return this.table.getInt(i, "score");
|
|
}
|
|
|
|
void applyScores() {
|
|
for (TableRow row : this.table.rows()) {
|
|
equipes[row.getInt("equipe")-1].setScore(row.getInt("score"));
|
|
}
|
|
}
|
|
|
|
void applyScore(int equipe, int score) {
|
|
this.table.findRow(str(equipe+1), "equipe").setInt("score", score);
|
|
}
|
|
|
|
Iterable <TableRow> findRows(String value, String name) {
|
|
return this.table.findRows(value, name);
|
|
}
|
|
}
|