diff --git a/.idea/compiler.xml b/.idea/compiler.xml new file mode 100644 index 0000000..cf29c1c --- /dev/null +++ b/.idea/compiler.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml index aedfe4c..674f423 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -1,4 +1,6 @@ - + + + \ No newline at end of file diff --git a/dndBuilder/src/Character/CharacterStats.java b/dndBuilder/src/Character/AbilityScores/CharacterStats.java similarity index 92% rename from dndBuilder/src/Character/CharacterStats.java rename to dndBuilder/src/Character/AbilityScores/CharacterStats.java index d07b1c5..6ce1166 100644 --- a/dndBuilder/src/Character/CharacterStats.java +++ b/dndBuilder/src/Character/AbilityScores/CharacterStats.java @@ -1,4 +1,5 @@ -package Character; +package Character.AbilityScores; + public class CharacterStats { private Stats[] stats; @@ -48,13 +49,13 @@ public class CharacterStats { * * Allows for access to a particular stat. * - * @param int stat + * @param index * @return a specific stat * */ - public Stats getStats(int stat) { + public Stats getStats(int index) { - return stats[stat]; + return stats[index]; } diff --git a/dndBuilder/src/Character/AbilityScores/Charisma.java b/dndBuilder/src/Character/AbilityScores/Charisma.java index 7cb3d39..c4f2ab8 100644 --- a/dndBuilder/src/Character/AbilityScores/Charisma.java +++ b/dndBuilder/src/Character/AbilityScores/Charisma.java @@ -46,7 +46,7 @@ public class Charisma extends Stats { } @Override - void increaseScore() { + public void increaseScore() { abilityScore++; diff --git a/dndBuilder/src/Character/AbilityScores/Constitution.java b/dndBuilder/src/Character/AbilityScores/Constitution.java index 726ce15..f1e1724 100644 --- a/dndBuilder/src/Character/AbilityScores/Constitution.java +++ b/dndBuilder/src/Character/AbilityScores/Constitution.java @@ -46,7 +46,7 @@ public class Constitution extends Stats { } @Override - void increaseScore() { + public void increaseScore() { abilityScore++; diff --git a/dndBuilder/src/Character/AbilityScores/Dexterity.java b/dndBuilder/src/Character/AbilityScores/Dexterity.java index 4f325de..c463ba8 100644 --- a/dndBuilder/src/Character/AbilityScores/Dexterity.java +++ b/dndBuilder/src/Character/AbilityScores/Dexterity.java @@ -46,7 +46,7 @@ public class Dexterity extends Stats { } @Override - void increaseScore() { + public void increaseScore() { abilityScore++; diff --git a/dndBuilder/src/Character/AbilityScores/Intelligence.java b/dndBuilder/src/Character/AbilityScores/Intelligence.java index 26034f8..172ac18 100644 --- a/dndBuilder/src/Character/AbilityScores/Intelligence.java +++ b/dndBuilder/src/Character/AbilityScores/Intelligence.java @@ -46,7 +46,7 @@ public class Intelligence extends Stats{ } @Override - void increaseScore() { + public void increaseScore() { abilityScore++; diff --git a/dndBuilder/src/Character/AbilityScores/Stats.java b/dndBuilder/src/Character/AbilityScores/Stats.java index 97752ea..b4f21c7 100644 --- a/dndBuilder/src/Character/AbilityScores/Stats.java +++ b/dndBuilder/src/Character/AbilityScores/Stats.java @@ -37,13 +37,13 @@ public abstract class Stats { case 20: return 5; default: - return 0; + return -42; } } - abstract void increaseScore(); + public abstract void increaseScore(); abstract int getScore(); diff --git a/dndBuilder/src/Character/AbilityScores/Strength.java b/dndBuilder/src/Character/AbilityScores/Strength.java index 97de47a..88dc250 100644 --- a/dndBuilder/src/Character/AbilityScores/Strength.java +++ b/dndBuilder/src/Character/AbilityScores/Strength.java @@ -58,7 +58,7 @@ public class Strength extends Stats { } @Override - void increaseScore() { + public void increaseScore() { abilityScore++; diff --git a/dndBuilder/src/Character/AbilityScores/Wisdom.java b/dndBuilder/src/Character/AbilityScores/Wisdom.java index a5481a7..2970826 100644 --- a/dndBuilder/src/Character/AbilityScores/Wisdom.java +++ b/dndBuilder/src/Character/AbilityScores/Wisdom.java @@ -46,7 +46,7 @@ public class Wisdom extends Stats { } @Override - void increaseScore() { + public void increaseScore() { abilityScore++; diff --git a/dndBuilder/src/Character/Background.java b/dndBuilder/src/Character/Background.java index 8abfe11..6de98c4 100644 --- a/dndBuilder/src/Character/Background.java +++ b/dndBuilder/src/Character/Background.java @@ -13,7 +13,6 @@ public class Background { /** * @param name - * @param skillProficiences * @param feature */ public Background(String name, boolean[] proficientStatus, String[] skills, String feature) { diff --git a/dndBuilder/src/Character/CharacterSheet.java b/dndBuilder/src/Character/CharacterSheet.java index 8ead40b..5bf2ea2 100644 --- a/dndBuilder/src/Character/CharacterSheet.java +++ b/dndBuilder/src/Character/CharacterSheet.java @@ -1,5 +1,6 @@ package Character; +import Character.AbilityScores.CharacterStats; import Character.Races.*; import java.io.Serializable; diff --git a/dndBuilder/src/Character/Skills.java b/dndBuilder/src/Character/Skills.java index 3a172e3..2911cc4 100644 --- a/dndBuilder/src/Character/Skills.java +++ b/dndBuilder/src/Character/Skills.java @@ -1,5 +1,7 @@ package Character; +import Character.AbilityScores.*; + /** * * Object stores information about a character's skills arrays. Firstly, the name of each skill, and secondly the value of each skill. When constructed, a private method is called @@ -23,8 +25,8 @@ public class Skills { * * Default constructor for the Skills class. Should be constructed AFTER the user has generated their stats and chosen the skills they are proficient in. * - * @param int[] skills - * @param Stats[] stats + * @param skills + * @param stats * */ public Skills(int[] skills, Stats[] stats) { diff --git a/dndBuilder/src/DndCharacterBuilder.java b/dndBuilder/src/DndCharacterBuilder.java index 3ca0ea6..a08df00 100644 --- a/dndBuilder/src/DndCharacterBuilder.java +++ b/dndBuilder/src/DndCharacterBuilder.java @@ -5,10 +5,12 @@ public class DndCharacterBuilder { public static void main(String[] args) { - FileManager data = new FileManager(); + //FileManager data = new FileManager(); PanelHolder guiPanels = new PanelHolder(); - UImanager gui = new UImanager(guiPanels, data.isReturninguser()); + // UImanager gui = new UImanager(guiPanels, data.isReturninguser()); + UImanager gui = new UImanager(guiPanels); + gui.setVisible(true); } diff --git a/dndBuilder/src/FileManagement/FileManager.java b/dndBuilder/src/FileManagement/FileManager.java index f5ce845..a89f2f2 100644 --- a/dndBuilder/src/FileManagement/FileManager.java +++ b/dndBuilder/src/FileManagement/FileManager.java @@ -1,6 +1,7 @@ package FileManagement; import java.io.*; +import java.util.Arrays; import Character.*; @@ -10,12 +11,20 @@ public class FileManager { public FileManager() { + System.out.println("FileManager object created.\n"); + findSavedCharacters(); } public boolean isReturninguser() { + if(savedCharacters == null) { + + return false; + + } + return savedCharacters.length > 0; } @@ -64,6 +73,8 @@ public class FileManager { } + findSavedCharacters(); + } public void deleteCharacter(int index) { @@ -82,12 +93,13 @@ public class FileManager { savedCharacters = tmp; + findSavedCharacters(); + } - // TODO: Need to implement. Should create an array of Files corresponding to user-created characters. private void findSavedCharacters() { - savedCharacters = new File("/bin/").listFiles(); + savedCharacters = new File("/dndBuilder").listFiles(); } diff --git a/dndBuilder/src/GUI/PanelHolder.java b/dndBuilder/src/GUI/PanelHolder.java index bcadca7..71b7684 100644 --- a/dndBuilder/src/GUI/PanelHolder.java +++ b/dndBuilder/src/GUI/PanelHolder.java @@ -1,6 +1,9 @@ package GUI; +import GUI.Panels.ChooseRacePanel; + import javax.swing.*; +import java.awt.*; /* @@ -15,40 +18,44 @@ NOTES: public class PanelHolder { +/* private JPanel mainMenuPanel; +*/ private JPanel racePanel; - private JPanel classPanel; +/* private JPanel classPanel; private JPanel abilityScorePanel; private JPanel descriptionPanel; private JPanel equipmentPanel; private JPanel finalizePanel; - private JPanel loadMenuPanel; + private JPanel loadMenuPanel;*/ - private int lastPanel; +// private int lastPanel; private int currentPanel; - private int nextPanel; +// private int nextPanel; public PanelHolder() { +/* this.mainMenuPanel = createMainMenuPanel(); +*/ this.racePanel = createRaceSelectPanel(); - this.classPanel = createClassSelectPanel(); +/* this.classPanel = createClassSelectPanel(); this.abilityScorePanel = createAbilityScoreSelectPanel(); this.descriptionPanel = createDescriptionPanel(); this.equipmentPanel = createEquipmentSelectPanel(); this.finalizePanel = createFinalizePanel(); - this.loadMenuPanel = createLoadMenu(); - lastPanel = 0; + this.loadMenuPanel = createLoadMenu();*/ +// lastPanel = 0; currentPanel = 0; - nextPanel = 0; +// nextPanel = 0; } - public JPanel getMainMenuPanel() { +/* public JPanel getMainMenuPanel() { return mainMenuPanel; - } + }*/ public JPanel getRacePanel() { @@ -56,7 +63,7 @@ public class PanelHolder { } - public JPanel getClassPanel() { + /* public JPanel getClassPanel() { return classPanel; @@ -92,19 +99,19 @@ public class PanelHolder { } - /* TODO: Need to implement. + *//* TODO: Need to implement. LEFT-SIDE: Two large buttons, split with a horizontal line. One is to create a new DnD character, the other is to create a random character. RIGHT-SIDE: One extra-large button to load an existing character. - */ + *//* private JPanel createMainMenuPanel() { return new JPanel(); - } + }*/ /* TODO: Need to implement. @@ -117,14 +124,68 @@ public class PanelHolder { */ private JPanel createRaceSelectPanel() { - currentPanel++; + System.out.println("Race Panel generated."); + + JPanel display = new JPanel(); + display.setLayout(new BorderLayout(0, 0)); + + + JLabel title = new JLabel("Step 1: Choose Race"); + title.setHorizontalAlignment(SwingConstants.CENTER); + display.add(title, BorderLayout.NORTH); + + JPanel textPanel = new JPanel(); + textPanel.setLayout(null); + + JLabel characterName = new JLabel("Character Name: "); + characterName.setBounds(113, 31, 108, 16); + textPanel.add(characterName); + + JTextField nameTextBox = new JTextField(); + nameTextBox.setBounds(233, 26, 211, 26); + textPanel.add(nameTextBox); + nameTextBox.setColumns(10); + + JLabel raceLbl = new JLabel("Choose Race: "); + raceLbl.setBounds(113, 70, 98, 16); + textPanel.add(raceLbl); + + JComboBox raceComboBox = new JComboBox(); + raceComboBox.setBounds(196, 54, 221, 50); + textPanel.add(raceComboBox); + + JLabel genderLbl = new JLabel("Gender: "); + genderLbl.setBounds(113, 108, 61, 16); + textPanel.add(genderLbl); + + JComboBox genderComboBox = new JComboBox(); + genderComboBox.setBounds(162, 92, 211, 50); + textPanel.add(genderComboBox); + + JLabel classLbl = new JLabel("Class: "); + classLbl.setBounds(113, 154, 61, 16); + textPanel.add(classLbl); + + JComboBox classComboBox = new JComboBox(); + classComboBox.setBounds(162, 138, 200, 50); + textPanel.add(classComboBox); + + JLabel AlignmentLbl = new JLabel("Alignment: "); + AlignmentLbl.setBounds(113, 200, 80, 16); + textPanel.add(AlignmentLbl); + + JComboBox comboBox = new JComboBox(); + comboBox.setBounds(190, 184, 200, 50); + textPanel.add(comboBox); + + display.add(textPanel, BorderLayout.CENTER); return new JPanel(); } // TODO: Need to implement. - private JPanel createClassSelectPanel() { + /* private JPanel createClassSelectPanel() { currentPanel++; @@ -176,5 +237,5 @@ public class PanelHolder { return new JPanel(); } - +*/ } \ No newline at end of file diff --git a/dndBuilder/src/GUI/Panels/ChooseRacePanel.java b/dndBuilder/src/GUI/Panels/ChooseRacePanel.java new file mode 100644 index 0000000..be8a15f --- /dev/null +++ b/dndBuilder/src/GUI/Panels/ChooseRacePanel.java @@ -0,0 +1,28 @@ +package GUI.Panels; + +import javax.swing.JPanel; +import java.awt.BorderLayout; +import javax.swing.JLabel; +import javax.swing.SwingConstants; +import javax.swing.JTextField; +import javax.swing.JComboBox; +import java.awt.GridLayout; + +public class ChooseRacePanel extends JPanel { + + /** + * Create the panel. + */ + public ChooseRacePanel() { + + createPanel(); + + } + + private void createPanel() { + + + + } + +} diff --git a/dndBuilder/src/GUI/Panels/GuiCharacterFrame.java b/dndBuilder/src/GUI/Panels/GuiCharacterFrame.java new file mode 100644 index 0000000..a62ed17 --- /dev/null +++ b/dndBuilder/src/GUI/Panels/GuiCharacterFrame.java @@ -0,0 +1,49 @@ +package GUI.Panels; + +import java.awt.BorderLayout; +import java.awt.EventQueue; + +import javax.swing.JFrame; +import javax.swing.JPanel; +import javax.swing.border.EmptyBorder; +import javax.swing.JButton; + +public class GuiCharacterFrame extends JFrame { + + private JPanel contentPane; + + /** + * Launch the application. + */ +/* public static void main(String[] args) { + EventQueue.invokeLater(new Runnable() { + public void run() { + try { + GuiCharacterFrame frame = new GuiCharacterFrame(); + frame.setVisible(true); + } catch (Exception e) { + e.printStackTrace(); + } + } + }); + }*/ + + /** + * Create the frame. + */ +/* public GuiCharacterFrame() { + setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); + setBounds(100, 100, 550, 300); + contentPane = new JPanel(); + contentPane.setBorder(new EmptyBorder(5, 5, 5, 5)); + contentPane.setLayout(new BorderLayout(0, 0)); + setContentPane(contentPane); + + ChooseRacePanel panel = new ChooseRacePanel(); + contentPane.add(panel, BorderLayout.CENTER); + + JButton submitBttn = new JButton("Next"); + panel.add(submitBttn, BorderLayout.SOUTH); + }*/ + +} diff --git a/dndBuilder/src/GUI/Panels/dndCharacterSheet.java b/dndBuilder/src/GUI/Panels/dndCharacterSheet.java new file mode 100644 index 0000000..1a1a388 --- /dev/null +++ b/dndBuilder/src/GUI/Panels/dndCharacterSheet.java @@ -0,0 +1,96 @@ +package GUI.Panels; + +import java.awt.BorderLayout; +import java.awt.EventQueue; + +import javax.swing.JFrame; +import javax.swing.JPanel; +import javax.swing.border.EmptyBorder; +import java.awt.Color; +import java.awt.GridBagLayout; +import java.awt.GridBagConstraints; +import javax.swing.JLabel; +import javax.swing.JTextField; +import java.awt.Insets; +import java.awt.FlowLayout; +import javax.swing.BoxLayout; +import javax.swing.ImageIcon; + +import java.awt.GridLayout; +import java.awt.ScrollPane; +import java.awt.Scrollbar; +import javax.swing.JScrollPane; +import javax.swing.ScrollPaneConstants; +import javax.swing.JScrollBar; + +public class dndCharacterSheet extends JFrame { + + private JPanel contentPane; + private JTextField textField; + private JPanel panel; + private JTextField textField_1; + private JTextField textField_2; + + /** + * Launch the application. + */ +/* public static void main(String[] args) { + EventQueue.invokeLater(new Runnable() { + public void run() { + try { + dndCharacterSheet frame = new dndCharacterSheet(); + frame.setVisible(true); + } catch (Exception e) { + e.printStackTrace(); + } + } + }); + }*/ + + /** + * Create the frame. + */ + public dndCharacterSheet() { + + JLabel imageLabel = new JLabel(new ImageIcon(getClass().getResource("/dnd/img/sheet.jpg"))); + JPanel newPanel = new JPanel(); + newPanel.add(imageLabel); + JScrollPane scrollPane = new JScrollPane(newPanel); + + + this.getContentPane().add(scrollPane, BorderLayout.CENTER); + + setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); + setBounds(100, 100, 850, 1200); + setVisible(true); + pack(); + +// contentPane = new JPanel(); +// contentPane.setBorder(new EmptyBorder(5, 5, 5, 5)); +// setContentPane(contentPane); +// contentPane.setLayout(new BorderLayout(0, 0)); + + /*ImagePanel imagePanel = new ImagePanel(); + JScrollPane scrollPane = new JScrollPane(); + + JPanel panel1 = new JPanel(); + panel1.setLayout(new BorderLayout(0, 0)); + panel1.add(imagePanel, BorderLayout.CENTER); + scrollPane.add(panel1); + imagePanel.setLayout(null); + + + contentPane.add(scrollPane, BorderLayout.CENTER);*/ + +// ImagePanel imagePanel = new ImagePanel(); +// contentPane.add(imagePanel, BorderLayout.CENTER); +// imagePanel.setLayout(null); + + + + + + + + } +} diff --git a/dndBuilder/src/GUI/Panels/img/sheet.jpg b/dndBuilder/src/GUI/Panels/img/sheet.jpg new file mode 100644 index 0000000..9126be9 Binary files /dev/null and b/dndBuilder/src/GUI/Panels/img/sheet.jpg differ diff --git a/dndBuilder/src/GUI/UImanager.java b/dndBuilder/src/GUI/UImanager.java index 2b84dbd..a59659d 100644 --- a/dndBuilder/src/GUI/UImanager.java +++ b/dndBuilder/src/GUI/UImanager.java @@ -1,19 +1,20 @@ package GUI; import javax.swing.*; +import java.awt.*; -public class UImanager { +public class UImanager extends JFrame { - private final JFrame gui; private final PanelHolder guiPanels; private int currentPanel; - public UImanager (PanelHolder guiPanels, boolean returningUser) { - - this.gui = new JFrame("D&D Character Builder"); + //public UImanager (PanelHolder guiPanels, boolean returningUser) { + public UImanager (PanelHolder guiPanels) { + super("D&D Character Builder"); + frameSetup(); this.guiPanels = guiPanels; - if (returningUser) { +/* if (returningUser) { this.currentPanel = 0; @@ -21,22 +22,33 @@ public class UImanager { this.currentPanel = 1; - } + }*/ - frameSetup(); + clearAndReset(getNextPanel()); } // TODO: Need to implement. private void frameSetup() { + setDefaultCloseOperation(EXIT_ON_CLOSE); + setLayout(new BorderLayout()); + setPreferredSize(new Dimension(600,600)); + setSize(getPreferredSize()); + try { + UIManager.setLookAndFeel( UIManager.getCrossPlatformLookAndFeelClassName() ); + } catch (Exception e) { + System.out.println("Error with cross platform look/feel in frameSetup()."); + } } private JPanel getNextPanel() { - return switch (currentPanel) { + return guiPanels.getRacePanel(); + +/* return switch (currentPanel) { case 1 -> guiPanels.getRacePanel(); case 2 -> guiPanels.getClassPanel(); case 3 -> guiPanels.getAbilityScorePanel(); @@ -45,17 +57,17 @@ public class UImanager { case 6 -> guiPanels.getLoadMenuPanel(); case 7 -> guiPanels.getFinalizePanel(); default -> guiPanels.getMainMenuPanel(); - }; + };*/ } private void clearAndReset(JPanel nextPanel) { - gui.removeAll(); - gui.add(nextPanel); + removeAll(); + add(nextPanel); - gui.repaint(); - gui.revalidate(); + repaint(); + revalidate(); }