added update function

This commit is contained in:
Joshua Perry 2023-02-01 14:28:41 +00:00
parent 5e32a47e8e
commit c53c3ed173
2 changed files with 85 additions and 25 deletions

View File

@ -2,14 +2,20 @@ 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.collections.FXCollections;
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.TextField;
import javafx.scene.text.Text;
@ -28,16 +34,19 @@ public class MainController implements Initializable {
TextField playerName;
@FXML
TextField playerLevel;
ChoiceBox<Rank> playerLevel;
@FXML
Text favoriteCharacters;
@FXML
TextField favoriteAttacker;
ChoiceBox<R6Attacker> favoriteAttacker;
@FXML
TextField favoriteDefender;
ChoiceBox<ValorantAgent> favoriteAgent;
@FXML
ChoiceBox<R6Defender> favoriteDefender;
@FXML
TextField scores0;
@ -62,12 +71,31 @@ public class MainController implements Initializable {
TextField[] scores;
@FXML
Button updateButton;
@Override
public void initialize(URL url, ResourceBundle rb) {
loadCompetitors();
this.scores = new TextField[]{scores0, scores1, scores2, scores3, scores4, scores5};
loadView();
}
}
@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());
loadView();
loadPlayer(player);
}
private void loadCompetitors(){
this.competitors = new Manager().getCompetitors();
@ -79,18 +107,16 @@ public class MainController implements Initializable {
private void loadView() {
competitorsList.setItems(FXCollections.observableArrayList(this.competitorIds));
}
@FXML
public void getCompetitor() {
Competitor player = this.competitors.getCompetitors().get(this.competitorIds.indexOf(this.competitorsList.getSelectionModel().getSelectedItem()));
loadPlayer(player);
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 loadPlayer(Competitor player) {
this.playerNumber.setText(String.valueOf(player.getPlayerNumber()));
this.playerName.setText(player.getPlayerName().getFullName());
this.playerLevel.setText(player.getPlayerLevel().getRank());
this.playerLevel.getSelectionModel().select(player.getPlayerLevel());;
loadFavoriteCharacters(player);
loadScores(player);
this.overallScore.setText(String.valueOf(player.getOverallScore()));
@ -98,13 +124,17 @@ public class MainController implements Initializable {
private void loadFavoriteCharacters(Competitor player) {
if (player instanceof R6Player) {
this.favoriteAttacker.setText(((R6Player) player).getFavoriteAttacker().getAttacker());
this.favoriteDefender.setText(((R6Player) player).getFavoriteDefender().getDefender());
this.favoriteAttacker.getSelectionModel().select(((R6Player) player).getFavoriteAttacker());
this.favoriteDefender.getSelectionModel().select((((R6Player) player).getFavoriteDefender()));
this.favoriteAgent.visibleProperty().set(false);
this.favoriteAttacker.visibleProperty().set(true);
this.favoriteDefender.visibleProperty().set(true);
this.favoriteCharacters.setText("Favorite Operators");
}
else if (player instanceof ValorantPlayer) {
this.favoriteAttacker.setText(((ValorantPlayer) player).getFavoriteAgent().getAgent());
this.favoriteAgent.getSelectionModel().select(((ValorantPlayer) player).getFavoriteAgent());
this.favoriteAgent.visibleProperty().set(true);
this.favoriteAttacker.visibleProperty().set(false);
this.favoriteDefender.visibleProperty().set(false);
this.favoriteCharacters.setText("Favorite Agent");
}
@ -116,4 +146,30 @@ public class MainController implements Initializable {
this.scores[i].setText(String.valueOf(playerScores[i]));
}
}
private void updatePlayer(Competitor player) {
player.setPlayerNumber(Integer.parseInt(this.playerNumber.getText()));
player.setPlayerName(new Name(this.playerName.getText()));
player.setPlayerLevel(this.playerLevel.getValue());
updateFavoriteCharacters(player);
updateScores(player);
}
private void updateFavoriteCharacters(Competitor player) {
if (player instanceof R6Player) {
((R6Player) player).setFavoriteAttacker(this.favoriteAttacker.getValue());
((R6Player) player).setFavoriteDefender(this.favoriteDefender.getValue());
}
else if (player instanceof ValorantPlayer) {
((ValorantPlayer) player).setFavoriteAgent(this.favoriteAgent.getValue());
}
}
private void updateScores(Competitor player) {
int[] newScores = new int[6];
for (int i = 0; i < newScores.length; i++) {
newScores[i] = Integer.parseInt(this.scores[i].getText());
}
player.setScores(newScores);
}
}

View File

@ -1,6 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
<?import javafx.geometry.Insets?>
<?import javafx.scene.control.Button?>
<?import javafx.scene.control.ChoiceBox?>
<?import javafx.scene.control.ListView?>
<?import javafx.scene.control.SplitPane?>
<?import javafx.scene.control.Tab?>
@ -60,11 +62,6 @@
<Insets right="10.0" />
</GridPane.margin>
</Text>
<TextField fx:id="playerLevel" GridPane.columnIndex="1" GridPane.rowIndex="2">
<GridPane.margin>
<Insets right="100.0" />
</GridPane.margin>
</TextField>
<Text strokeType="OUTSIDE" strokeWidth="0.0" text="Level" GridPane.halignment="RIGHT" GridPane.rowIndex="2">
<GridPane.margin>
<Insets right="10.0" />
@ -77,16 +74,17 @@
</Text>
<VBox prefHeight="0.0" prefWidth="291.0" GridPane.columnIndex="1" GridPane.rowIndex="3">
<children>
<TextField fx:id="favoriteAttacker">
<ChoiceBox fx:id="favoriteAttacker" prefWidth="150.0" />
<ChoiceBox fx:id="favoriteAgent" prefWidth="150.0">
<VBox.margin>
<Insets right="100.0" top="15.0" />
<Insets />
</VBox.margin>
</TextField>
<TextField fx:id="favoriteDefender">
</ChoiceBox>
<ChoiceBox fx:id="favoriteDefender" prefWidth="150.0">
<VBox.margin>
<Insets right="100.0" top="15.0" />
<Insets top="15.0" />
</VBox.margin>
</TextField>
</ChoiceBox>
</children>
</VBox>
<Text strokeType="OUTSIDE" strokeWidth="0.0" text="Scores" GridPane.halignment="RIGHT" GridPane.rowIndex="4">
@ -134,6 +132,12 @@
<Insets right="200.0" />
</GridPane.margin>
</TextField>
<Button fx:id="updateButton" mnemonicParsing="false" onAction="#updateCompetitor" text="Update" GridPane.columnIndex="1" GridPane.halignment="RIGHT" GridPane.rowIndex="5">
<GridPane.margin>
<Insets right="10.0" />
</GridPane.margin>
</Button>
<ChoiceBox fx:id="playerLevel" prefHeight="25.0" prefWidth="193.0" GridPane.columnIndex="1" GridPane.rowIndex="2" />
</children>
</GridPane>
</items>