This commit is contained in:
Joshua Perry 2023-02-03 19:41:30 +00:00
parent 10319aac16
commit 841ff873d3
16 changed files with 151 additions and 60 deletions

View File

@ -19,8 +19,6 @@ import com.r0r5chach.competitor.r6.R6Defender;
import com.r0r5chach.competitor.r6.R6Player;
import com.r0r5chach.competitor.valorant.ValorantAgent;
import com.r0r5chach.competitor.valorant.ValorantPlayer;
public class CompetitorList {
private final ArrayList<Competitor> competitors;
private String reportContents;

View File

@ -93,7 +93,7 @@ public class Manager extends Application {
competitors.readCompetitors(r6Players);
}
catch (Exception e) {
createErrorLog(e, "src/main/resources/log.txt");
createErrorLog(e, "src/main/resources/com/r0r5chach/log.txt");
}
return competitors;
}

View File

@ -2,7 +2,7 @@ package com.r0r5chach.competitor;
import java.text.DecimalFormat;
/**
* Class that defines the various attributes and methods associated with a Valorant Player
* Class that defines the various attributes and methods associated with a Competitor
* @author r0r5chach
*/
public abstract class Competitor {
@ -32,6 +32,7 @@ public abstract class Competitor {
* @param playerNumber the number of the player
* @param playerName the name of the player
* @param playerLevel the level of the player
* @param scores an array containing the 6 scores the player has achieved
*/
public Competitor(int playerNumber, Name playerName, Rank playerLevel, int[] scores) {
this.playerNumber = playerNumber;

View File

@ -2,7 +2,7 @@ package com.r0r5chach.competitor;
/**
* Class that defines a name and it's parts
* @author John.Kanyaru@northampton.ac.uk
* @author r0r5chach
*/
public class Name {
/**
@ -128,4 +128,3 @@ public class Name {
return result;
}
}

View File

@ -1,17 +1,18 @@
package com.r0r5chach.competitor;
import java.util.Locale;
/**
* All levels a ValorantPlayer can be
* @author r0r5chach
*/
public enum Rank {
/**
* First Level
* For ChoiceBoxes so selection is not null
*/
NONE,
/**
* First Level
*/
BRONZE,
/**
* Second Level

View File

@ -1,8 +1,13 @@
package com.r0r5chach.competitor.r6;
import java.util.Locale;
/** All Attackers an R6Player can play
* @author r0r5chach
*/
public enum R6Attacker {
/**
* For ChoiceBoxes so selection is not null
*/
NONE,
GRIM,
SENS,
@ -37,7 +42,10 @@ public enum R6Attacker {
IQ,
FUZE,
GLAZ;
/**
* Get the name of the attacker
* @return the name of the attacker as a formatted string
*/
public String getAttacker() {
return this.name().charAt(0) + this.name().substring(1).toLowerCase(Locale.ROOT); //Capitalizes the first letter and makes sure the other letters are lowercase
}

View File

@ -1,8 +1,13 @@
package com.r0r5chach.competitor.r6;
import java.util.Locale;
/** All Defenders an R6Player can play
* @author r0r5chach
*/
public enum R6Defender {
/**
* For ChoiceBoxes so selection is not null
*/
NONE,
SOLIS,
AZAMI,
@ -37,7 +42,10 @@ public enum R6Defender {
BANDIT,
TACHANKA,
KAPKAN;
/**
* Get the name of the defender
* @return the name of the defender as a formatted string
*/
public String getDefender() {
return this.name().charAt(0) + this.name().substring(1).toLowerCase(Locale.ROOT); //Capitalizes the first letter and makes sure the other letters are lowercase
}

View File

@ -5,33 +5,66 @@ import java.util.Arrays;
import com.r0r5chach.competitor.Competitor;
import com.r0r5chach.competitor.Name;
import com.r0r5chach.competitor.Rank;
/**
* Class that defines the various attributes and methods associated with a R6 Player
* Inherits from the com.r0r5chach.competitor.Competitor Class
* @author r0r5chach
*/
public class R6Player extends Competitor{
/**
* Attribute that stores the player's favorite Attacker
*/
private R6Attacker favoriteAttacker;
/**
* Attribute that stores the player's favorite Defender
*/
private R6Defender favoriteDefender;
/**
* Constructs an R6Player object with attributes matching the parameters passed
* @param playerNumber the number of the player
* @param playerName the name of the player
* @param playerLevel the level of the player
* @param favoriteAttacker the attacker the player plays most
* @param favoriteDefender the defender the player plays most
* @param scores an array containing the 6 scores the player has achieved
*/
public R6Player(int playerNumber, Name playerName, Rank playerLevel, R6Attacker favoriteAttacker, R6Defender favoriteDefender, int[] scores) {
super(playerNumber, playerName, playerLevel, scores);
this.favoriteAttacker = favoriteAttacker;
this.favoriteDefender = favoriteDefender;
}
/**
* Set the player's most played attacker to that of the parameter
* @param favoriteAttacker the new most played attacker of the player
*/
public void setFavoriteAttacker(R6Attacker favoriteAttacker) {
this.favoriteAttacker = favoriteAttacker;
}
/**
* Set the player's most played defender to that of the parameter
* @param favoriteDefender the new most played defender of the player
*/
public void setFavoriteDefender(R6Defender favoriteDefender) {
this.favoriteDefender = favoriteDefender;
}
/**
* Get the player's most played attacker
* @return the player's most played attack
*/
public R6Attacker getFavoriteAttacker() {
return this.favoriteAttacker;
}
/**
* Get the player's most played defender
* @return the player's most played defender
*/
public R6Defender getFavoriteDefender() {
return this.favoriteDefender;
}
/**
* Get all the attributes of the player
* @return all attributes of the player in a formatted string
*/
public String getFullDetails() {
return "Player Number: " + getPlayerNumber() +
"\nName: " + getPlayerName().getFullName() +

View File

@ -1,12 +1,14 @@
package com.r0r5chach.competitor.valorant;
import java.util.Locale;
/**
* All Characters a ValorantPlayer can play
* @author r0r5chach
*/
public enum ValorantAgent {
/**
* For ChoiceBoxes so selection is not null
*/
NONE,
BRIMSTONE,
VIPER,
@ -30,7 +32,7 @@ public enum ValorantAgent {
HARBOR;
/**
* Get the name of the character
* @return a formatted string containing the character name
* @return the name of the character as a formatted string
*/
public String getAgent() {
return this.name().charAt(0) + this.name().substring(1).toLowerCase(Locale.ROOT); //Capitalizes the first letter and makes sure the other letters are lowercase

View File

@ -7,9 +7,13 @@ import com.r0r5chach.competitor.Name;
import com.r0r5chach.competitor.Rank;
/**
* Class that defines the various attributes and methods associated with a Valorant Player
* Inherits from the com.r0r5chach.competitor.Competitor Class
* @author r0r5chach
*/
public class ValorantPlayer extends Competitor {
/**
* Attribute that stores the player's favorite character to play
*/
private ValorantAgent favoriteAgent;
/**
* Constructs an object with attributes matching the parameters passed
@ -17,6 +21,7 @@ public class ValorantPlayer extends Competitor {
* @param playerName the name of the player
* @param playerLevel the level of the player
* @param favoriteAgent the character the player plays most
* @param scores an array containing the 6 scores the player has achieved
*/
public ValorantPlayer(int playerNumber, Name playerName, Rank playerLevel, ValorantAgent favoriteAgent, int[] scores) {
super(playerNumber, playerName, playerLevel, scores);

View File

@ -5,6 +5,7 @@ import java.net.URL;
import java.util.ArrayList;
import java.util.ResourceBundle;
import static com.r0r5chach.CompetitorList.createErrorLog;
import com.r0r5chach.CompetitorList;
import com.r0r5chach.Manager;
import com.r0r5chach.competitor.Competitor;
@ -15,51 +16,72 @@ import javafx.fxml.Initializable;
import javafx.scene.Parent;
import javafx.scene.control.Tab;
import javafx.scene.control.TabPane;
import javafx.scene.layout.AnchorPane;
/**
* Class that defines a generic controller for the GUI
* Inherits from javafx.fxml.Initializable
*/
public class Controller implements Initializable {
@FXML
protected AnchorPane editTab;
@FXML
protected AnchorPane viewTab;
@FXML
protected AnchorPane reportTab;
/**
* Attribute that stores the Main Pane for the GUI view
*/
@FXML
protected TabPane tabs;
/**
* Attribute that stores the competitor list used by the program
*/
protected CompetitorList competitors;
/**
* Attribute that stores the playerNumber of each competitor in the same order as the competitors list to allow easy indexing of competitors list
*/
protected ArrayList<Integer> competitorIds;
/**
* Method that runs when the program initializes the GUI view
* (param details copied from super implementation)
* @param url The location used to resolve relative paths for the root object
* @param rb The resources used to localize the root object
*/
@Override
public void initialize(URL location, ResourceBundle resources) {
public void initialize(URL url, ResourceBundle rb) {
Platform.runLater(() -> {
loadCompetitors();
});
}
/**
* Sets the controller's competitor list to that of the new parameter
* @param competitors the new competitor list
*/
public void setCompetitors(CompetitorList competitors) {
this.competitors = competitors;
}
/**
* Gets the controller's competitor list
* @return the controller's competitor list
*/
public CompetitorList getCompetitors() {
return competitors;
}
/**
* Gets the tab selected on the GUI
*/
@FXML
protected void getTab() throws IOException {
protected void getTab() {
Parent root = null;
Tab tab = tabs.getSelectionModel().getSelectedItem();
try {
switch(tab.getText().toLowerCase()) {
case "view" -> root = Manager.loadFXML("pages/view");
case "edit" -> root = Manager.loadFXML("pages/edit");
case "report" -> root = Manager.loadFXML("pages/report");
}
}
catch (IOException e) {
createErrorLog(e, "src/main/resources/com/r0r5chach/log.txt");
}
tab.setContent(root);
}
/**
* Initializes the competitorIds array for the controller
*/
protected void loadCompetitors(){
competitorIds = new ArrayList<Integer>();
for (Competitor player : competitors.getCompetitors()) {

View File

@ -21,8 +21,10 @@ import javafx.scene.control.ChoiceBox;
import javafx.scene.control.ListView;
import javafx.scene.control.TextField;
import javafx.scene.text.Text;
/**
* Class that defines the controller for the edit View (edit.fxml) of the GUI
* Inherits from com.r0r5chach.controllers.Controller
*/
public class EditController extends Controller {
@FXML

View File

@ -17,7 +17,10 @@ import javafx.scene.control.TextArea;
import javafx.scene.control.TextField;
import javafx.scene.control.ToggleGroup;
import javafx.scene.control.RadioButton;
/**
* Class that defines the controller for the filters View (filters.fxml) of the GUI
* Inherits from com.r0r5chach.controllers.Controller
*/
public class FiltersController implements Initializable {
@FXML
private TextField numberFilter;

View File

@ -1,5 +1,8 @@
package com.r0r5chach.controllers;
/**
* Class that defines the controller for the main View (main.fxml) of the GUI
* Inherits from com.r0r5chach.controllers.Controller
*/
public class MainController extends Controller {
}

View File

@ -8,7 +8,10 @@ import javafx.collections.FXCollections;
import javafx.fxml.FXML;
import javafx.scene.control.ListView;
import javafx.scene.control.TextArea;
/**
* Class that defines the controller for the report View of the GUI
* Inherits from com.r0r5chach.controllers.Controller
*/
public class ReportController extends Controller {
@FXML
private ListView<Integer> competitorList;

View File

@ -27,7 +27,10 @@ import javafx.scene.control.TableView;
import javafx.scene.control.TextArea;
import javafx.scene.control.cell.PropertyValueFactory;
import javafx.stage.Popup;
/**
* Class that defines the Controller for the view View (view.fxml) of the GUI
* Inherits from com.r0r5chach.controllers.Controller
*/
public class ViewController extends Controller {
@FXML
private TableView<CompetitorRow> competitorTable;