Implemented read/write of saved characters, currently a Tester.java file tests the ability to save and read saved characters, and the Application has a rudimentary GUI interface to choose to load a specific save file and see information about that character.
This commit is contained in:
+81
-11
@@ -1,8 +1,13 @@
|
||||
import javax.swing.*;
|
||||
import java.awt.*;
|
||||
import java.util.*;
|
||||
|
||||
public class GUImanager extends JFrame {
|
||||
|
||||
private FileManager fileManager;
|
||||
private ArrayList<CharacterSheet> saves;
|
||||
private ArrayList<DefaultButton> savesButtons;
|
||||
|
||||
private static JPanel[] panels;
|
||||
private int lastPanel;
|
||||
private int currentPanel;
|
||||
@@ -25,24 +30,23 @@ public class GUImanager extends JFrame {
|
||||
private String[] backgroundDescriptions;
|
||||
private int[] selectedStats;
|
||||
|
||||
|
||||
public GUImanager(boolean returningUser) {
|
||||
public GUImanager() {
|
||||
super("D&D Character Builder");
|
||||
fileManager = new FileManager();
|
||||
frameSetup();
|
||||
setupPanelInfo();
|
||||
this.panels = new JPanel[]{
|
||||
|
||||
new MainMenuPanel(createNewCharacterButton(), createRandomCharacterButton(), createLoadButton()),
|
||||
new BasicPanel(createNavPanel(), raceOptions, raceDescriptions, "Step 1: Choose Your Race"), // To choose Race.
|
||||
new BasicPanel(createNavPanel(), classOptions, classDescriptions, "Step 2: Choose Your Class"), // To choose Class.
|
||||
new ChooseAbilityScoresPanel(createNavPanel(1), statOptions, statDescriptions, selectedStats, "Step 3: Choose Your Ability Scores"),
|
||||
new DescriptionPanel(createNavPanel(), characteristics, alignmentOptions, alignmentDescriptions, backgroundOptions, backgroundDescriptions, "Step 4: Describe your character")
|
||||
new DescriptionPanel(createNavPanel(), characteristics, alignmentOptions, alignmentDescriptions, backgroundOptions, backgroundDescriptions, "Step 4: Describe your character"),
|
||||
new LoadCharacterPanel(createBackPanel(), loadableCharacters()),
|
||||
new ViewCharacterPanel(createBackPanel(), new CharacterSheet("Josh", 21, 5, 8, 180, "Brown", "Dark Brown", new Elf(), new Fighter(), "Neutral", "Nomad", new CharacterStats(9, 15, 12, 10, 13, 10)))
|
||||
};
|
||||
/*
|
||||
this.currentPanel = 0;
|
||||
this.lastPanel = currentPanel - 1;
|
||||
this.nextPanel = currentPanel + 1;*/
|
||||
|
||||
if (returningUser) {
|
||||
if (fileManager.isReturningUser()) {
|
||||
|
||||
this.currentPanel = 0;
|
||||
|
||||
@@ -52,6 +56,9 @@ public class GUImanager extends JFrame {
|
||||
|
||||
}
|
||||
|
||||
this.lastPanel = currentPanel - 1;
|
||||
this.nextPanel = currentPanel + 1;
|
||||
|
||||
add(panels[currentPanel]);
|
||||
|
||||
}
|
||||
@@ -62,7 +69,7 @@ public class GUImanager extends JFrame {
|
||||
setLayout(new BorderLayout());
|
||||
setPreferredSize(new Dimension(750, 550));
|
||||
setSize(getPreferredSize());
|
||||
// setResizable(false);
|
||||
setResizable(false);
|
||||
setLocationRelativeTo(null);
|
||||
|
||||
try {
|
||||
@@ -260,6 +267,12 @@ public class GUImanager extends JFrame {
|
||||
|
||||
}
|
||||
|
||||
private BasicNavPanel createBackPanel() {
|
||||
|
||||
return new BasicNavPanel(createBackButton(), null, 0);
|
||||
|
||||
}
|
||||
|
||||
private DefaultButton createBackButton() {
|
||||
|
||||
DefaultButton button = new DefaultButton("Back");
|
||||
@@ -305,6 +318,19 @@ public class GUImanager extends JFrame {
|
||||
DefaultButton button = createContinueButton();
|
||||
button.setText("Create New Character");
|
||||
|
||||
button.addActionListener(
|
||||
|
||||
e -> {
|
||||
|
||||
lastPanel = currentPanel;
|
||||
currentPanel = 1;
|
||||
nextPanel = 2;
|
||||
clearAndReset();
|
||||
|
||||
}
|
||||
|
||||
);
|
||||
|
||||
return button;
|
||||
|
||||
}
|
||||
@@ -361,8 +387,7 @@ public class GUImanager extends JFrame {
|
||||
e -> {
|
||||
|
||||
lastPanel = currentPanel;
|
||||
currentPanel = 3;
|
||||
nextPanel = currentPanel + 1;
|
||||
currentPanel = 5;
|
||||
clearAndReset();
|
||||
|
||||
}
|
||||
@@ -373,6 +398,50 @@ public class GUImanager extends JFrame {
|
||||
|
||||
}
|
||||
|
||||
private ArrayList<DefaultButton> loadableCharacters() {
|
||||
|
||||
System.out.println("Loading characters...");
|
||||
|
||||
saves = fileManager.getSaves();
|
||||
|
||||
savesButtons = new ArrayList<>();
|
||||
|
||||
for(int i = 0; i < saves.size(); i++) {
|
||||
|
||||
savesButtons.add(createLoadNCharacterButton(i));
|
||||
|
||||
}
|
||||
|
||||
for(int i = 0; i < saves.size(); i++) {
|
||||
|
||||
System.out.println(saves.get(i).toString());
|
||||
|
||||
}
|
||||
|
||||
return savesButtons;
|
||||
|
||||
}
|
||||
|
||||
private DefaultButton createLoadNCharacterButton(int index) {
|
||||
|
||||
DefaultButton button = new DefaultButton(saves.get(index).getName());
|
||||
button.addActionListener(
|
||||
|
||||
e -> {
|
||||
|
||||
lastPanel = currentPanel;
|
||||
panels[5] = new ViewCharacterPanel(createBackPanel(), saves.get(index));
|
||||
currentPanel = 5;
|
||||
clearAndReset();
|
||||
|
||||
}
|
||||
|
||||
);
|
||||
|
||||
return button;
|
||||
|
||||
}
|
||||
|
||||
// TODO: Need to implement random character creation.
|
||||
private void createRandomCharacter() {
|
||||
|
||||
@@ -392,4 +461,5 @@ public class GUImanager extends JFrame {
|
||||
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user