From 0b5131b891b4c2e0d7f0bba4cfdab7c9abde7da9 Mon Sep 17 00:00:00 2001 From: Joshua Perry <45966243+jpez-development@users.noreply.github.com> Date: Wed, 1 Feb 2023 19:26:01 +0000 Subject: [PATCH] basic table added --- .../java/com/r0r5chach/CompetitorRow.java | 95 +++++++++++++++++++ .../java/com/r0r5chach/MainController.java | 37 +++++++- src/main/java/module-info.java | 2 + src/main/resources/com/r0r5chach/main.fxml | 6 +- 4 files changed, 138 insertions(+), 2 deletions(-) create mode 100644 src/main/java/com/r0r5chach/CompetitorRow.java diff --git a/src/main/java/com/r0r5chach/CompetitorRow.java b/src/main/java/com/r0r5chach/CompetitorRow.java new file mode 100644 index 0000000..ef8d38a --- /dev/null +++ b/src/main/java/com/r0r5chach/CompetitorRow.java @@ -0,0 +1,95 @@ +package com.r0r5chach; + +import java.util.Arrays; + +import com.r0r5chach.r6.R6Attacker; +import com.r0r5chach.r6.R6Defender; +import com.r0r5chach.valorant.ValorantAgent; + +import javafx.beans.property.SimpleIntegerProperty; +import javafx.beans.property.SimpleObjectProperty; +import javafx.beans.property.SimpleStringProperty; + +public class CompetitorRow { + private SimpleIntegerProperty playerNumber; + private SimpleStringProperty playerName; + private SimpleObjectProperty playerLevel; + private SimpleStringProperty scores; + private SimpleObjectProperty favoriteAgent; + private SimpleObjectProperty favoriteAttacker; + private SimpleObjectProperty favoriteDefender; + + public CompetitorRow(int playerNumber, Name playerName, Rank playerLevel, int[] scores) { + this.playerNumber = new SimpleIntegerProperty(playerNumber); + this.playerName = new SimpleStringProperty(playerName.getFullName()); + this.playerLevel = new SimpleObjectProperty(playerLevel); + this.scores = new SimpleStringProperty(Arrays.toString(scores).replace("[", "").replace("]", "")); + this.favoriteAgent = null; + this.favoriteAttacker = null; + this.favoriteDefender = null; + } + + public CompetitorRow(int playerNumber, Name playerName, Rank playerLevel, int[] scores, ValorantAgent favoriteAgent) { + this.playerNumber = new SimpleIntegerProperty(playerNumber); + this.playerName = new SimpleStringProperty(playerName.getFullName()); + this.scores = new SimpleStringProperty(Arrays.toString(scores).replace("[", "").replace("]", "")); + this.playerLevel = new SimpleObjectProperty(playerLevel); + this.favoriteAgent = new SimpleObjectProperty(favoriteAgent); + this.favoriteAttacker = null; + this.favoriteDefender = null; + } + + public CompetitorRow(int playerNumber, Name playerName, Rank playerLevel, int[] scores, R6Attacker favoriteAttacker, R6Defender favoriteDefender) { + this.playerName = new SimpleStringProperty(playerName.getFullName()); + this.playerNumber = new SimpleIntegerProperty(playerNumber); + this.scores = new SimpleStringProperty(Arrays.toString(scores).replace("[", "").replace("]", "")); + this.playerLevel = new SimpleObjectProperty(playerLevel); + this.favoriteAgent = null; + this.favoriteAttacker = new SimpleObjectProperty(favoriteAttacker); + this.favoriteDefender = new SimpleObjectProperty(favoriteDefender); + } + + public void setPlayerNumber(int newValue) { + this.playerNumber.set(newValue); + } + public void setPlayerName(String newValue) { + this.playerName.set(newValue); + } + public void setPlayerLevel(Rank newValue) { + this.playerLevel.set(newValue); + } + public void setScores(String newValue) { + this.scores.set(newValue); + } + public void setFavoriteAgent(ValorantAgent newValue) { + this.favoriteAgent.set(newValue); + } + public void setFavoriteAttacker(R6Attacker newValue) { + this.favoriteAttacker.set(newValue); + } + public void setFavoriteDefender(R6Defender newValue) { + this.favoriteDefender.set(newValue); + } + + public int getPlayerNumber() { + return this.playerNumber.get(); + } + public String getPlayerName() { + return this.playerName.get(); + } + public Rank getPlayerLevel() { + return this.playerLevel.get(); + } + public String getScores() { + return this.scores.get(); + } + public ValorantAgent getFavoriteAgent() { + return this.favoriteAgent.get(); + } + public R6Attacker getFavoriteAttacker() { + return this.favoriteAttacker.get(); + } + public R6Defender getFavoriteDefender() { + return this.favoriteDefender.get(); + } +} diff --git a/src/main/java/com/r0r5chach/MainController.java b/src/main/java/com/r0r5chach/MainController.java index b7a51c4..541fd3a 100644 --- a/src/main/java/com/r0r5chach/MainController.java +++ b/src/main/java/com/r0r5chach/MainController.java @@ -13,12 +13,16 @@ 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 { @@ -75,6 +79,8 @@ public class MainController implements Initializable { @FXML Button updateButton; + @FXML + TableView competitorTable; @Override public void initialize(URL url, ResourceBundle rb) { @@ -124,7 +130,20 @@ public class MainController implements Initializable { @FXML private void loadView() { - //TODO: Display all data from competitors + 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("scores")); + competitorTable.getColumns().add(playerNumCol); + competitorTable.getColumns().add(playerNameCol); + competitorTable.getColumns().add(playerLevelCol); + competitorTable.getColumns().add(scoresCol); + competitorTable.setItems(generateTable()); + //TODO: Add favorite characters } private void loadPlayer(Competitor player) { @@ -186,4 +205,20 @@ public class MainController implements Initializable { } player.setScores(newScores); } + + private ObservableList 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); + } } \ No newline at end of file diff --git a/src/main/java/module-info.java b/src/main/java/module-info.java index f2a5e82..41b7a6e 100644 --- a/src/main/java/module-info.java +++ b/src/main/java/module-info.java @@ -6,4 +6,6 @@ module com.r0r5chach { opens com.r0r5chach to javafx.fxml; exports com.r0r5chach; + exports com.r0r5chach.r6; + exports com.r0r5chach.valorant; } diff --git a/src/main/resources/com/r0r5chach/main.fxml b/src/main/resources/com/r0r5chach/main.fxml index cea2d4e..d26fd8c 100644 --- a/src/main/resources/com/r0r5chach/main.fxml +++ b/src/main/resources/com/r0r5chach/main.fxml @@ -7,6 +7,7 @@ + @@ -151,7 +152,10 @@ - + + + +