package com.r0r5chach; import java.net.URL; import java.util.ArrayList; import java.util.Arrays; import java.util.ResourceBundle; import com.r0r5chach.r6.R6Attacker; import com.r0r5chach.r6.R6Defender; import com.r0r5chach.r6.R6Player; import com.r0r5chach.valorant.ValorantAgent; import com.r0r5chach.valorant.ValorantPlayer; import javafx.application.Platform; import javafx.collections.FXCollections; import javafx.collections.ObservableList; import javafx.fxml.FXML; import javafx.fxml.Initializable; import javafx.scene.control.Button; import javafx.scene.control.ChoiceBox; import javafx.scene.control.ListView; import javafx.scene.control.TableColumn; import javafx.scene.control.TableView; import javafx.scene.control.TextField; import javafx.scene.control.cell.PropertyValueFactory; import javafx.scene.text.Text; public class MainController implements Initializable { private CompetitorList competitors; private ArrayList competitorIds; @FXML ListView competitorsList; @FXML TextField playerNumber; @FXML TextField playerName; @FXML ChoiceBox playerLevel; @FXML Text favoriteCharacters; @FXML ChoiceBox favoriteAttacker; @FXML ChoiceBox favoriteAgent; @FXML ChoiceBox favoriteDefender; @FXML TextField scores0; @FXML TextField scores1; @FXML TextField scores2; @FXML TextField scores3; @FXML TextField scores4; @FXML TextField scores5; @FXML TextField overallScore; TextField[] scores; @FXML Button updateButton; @FXML TableView competitorTable; @Override public void initialize(URL url, ResourceBundle rb) { Platform.runLater(() -> { this.scores = new TextField[]{scores0, scores1, scores2, scores3, scores4, scores5}; loadCompetitors(); loadTable(); loadEdit(); }); } public void setCompetitors(CompetitorList list) { this.competitors = list; } @FXML private void getCompetitor() { Competitor player = this.competitors.getCompetitors().get(this.competitorIds.indexOf(this.competitorsList.getSelectionModel().getSelectedItem())); loadPlayer(player); } @FXML private void updateCompetitor() { int playerIndex = this.competitorIds.indexOf(this.competitorsList.getSelectionModel().getSelectedItem()); Competitor player = this.competitors.getCompetitors().get(playerIndex); updatePlayer(player); competitorIds.set(playerIndex, player.getPlayerNumber()); loadEdit(); loadPlayer(player); } private void loadCompetitors(){ this.competitorIds = new ArrayList(); for (Competitor player : this.competitors.getCompetitors()) { this.competitorIds.add(player.getPlayerNumber()); } } @FXML private void loadEdit() { competitorsList.setItems(FXCollections.observableList(this.competitorIds)); playerLevel.setItems(FXCollections.observableList(Arrays.asList(Rank.values()))); favoriteAttacker.setItems(FXCollections.observableList(Arrays.asList(R6Attacker.values()))); favoriteDefender.setItems(FXCollections.observableList(Arrays.asList(R6Defender.values()))); favoriteAgent.setItems(FXCollections.observableList(Arrays.asList(ValorantAgent.values()))); } private void loadTable() { TableColumn playerNumCol = new TableColumn("Player Number"); TableColumn playerNameCol = new TableColumn("Player Name"); TableColumn playerLevelCol = new TableColumn("Player Level"); TableColumn scoresCol = new TableColumn("Player Scores"); playerNumCol.setCellValueFactory(new PropertyValueFactory("playerNumber")); playerNameCol.setCellValueFactory(new PropertyValueFactory("playerName")); playerLevelCol.setCellValueFactory(new PropertyValueFactory("playerLevel")); scoresCol.setCellValueFactory(new PropertyValueFactory generateTable() { ArrayList list = new ArrayList<>(); for(Competitor player: this.competitors.getCompetitors()) { if (player instanceof ValorantPlayer) { list.add(new CompetitorRow(player.getPlayerNumber(), player.getPlayerName(), player.getPlayerLevel(), player.getScores(), ((ValorantPlayer) player).getFavoriteAgent())); } else if (player instanceof R6Player) { list.add(new CompetitorRow(player.getPlayerNumber(), player.getPlayerName(), player.getPlayerLevel(), player.getScores(), ((R6Player) player).getFavoriteAttacker(), ((R6Player) player).getFavoriteDefender())); } else { list.add(new CompetitorRow(player.getPlayerNumber(), player.getPlayerName(), player.getPlayerLevel(), player.getScores())); } } return FXCollections.observableArrayList(list); } }