diff --git a/dndBuilder/src/GUI/Panels/ChooseRacePanel.java b/dndBuilder/src/GUI/Panels/ChooseRacePanel.java index 9e63baa..df3087e 100644 --- a/dndBuilder/src/GUI/Panels/ChooseRacePanel.java +++ b/dndBuilder/src/GUI/Panels/ChooseRacePanel.java @@ -1,14 +1,21 @@ package GUI.Panels; +import GUI.img.*; + import java.awt.*; -import java.awt.event.*; import javax.swing.*; import javax.swing.border.*; public class ChooseRacePanel extends JPanel { + private String[] raceOptions = {"Dragonborn", "Dwarf", "Elf", "Gnome", "HalfElf", "Halfling", "Halforc", "Human", "Tiefling"}; + + private ImagePanel imgPanel; + + // DEBUG: raceChoice to be deprecated after testing. private String raceChoice; + private int raceIndex; private JButton backButton; private JButton continueButton; @@ -19,6 +26,7 @@ public class ChooseRacePanel extends JPanel { super(); this.backButton = backButton; this.continueButton = continueButton; + imgPanel = new ImagePanel(raceOptions); panelSetup(); @@ -37,9 +45,9 @@ public class ChooseRacePanel extends JPanel { racePanel.setOpaque(false); racePanel.setLayout(null); - JTextPane textPane = new JTextPane(); - textPane.setBounds(47, 67, 223, 301); - racePanel.add(textPane); + + imgPanel.setBounds(47, 67, 223, 301); + racePanel.add(imgPanel); racePanel.add(createRaceButtonPanel()); @@ -56,11 +64,9 @@ public class ChooseRacePanel extends JPanel { raceBtnPanel.setBorder(new BevelBorder(BevelBorder.LOWERED, null, null, null, null)); raceBtnPanel.setBounds(311, 6, 409, 394); - String[] raceOptions = {"Dragonborn", "Dwarf", "Elf", "Gnome", "HalfElf", "Halfling", "Halforc", "Human", "Tiefling"}; + for (int i = 0; i < raceOptions.length; i++) { - for (int i = 0; i raceChoice = raceName + e -> { + + raceChoice = raceName; + raceIndex = index; + imgPanel.updateImage(raceIndex); + + } ); @@ -101,10 +113,12 @@ public class ChooseRacePanel extends JPanel { } - public String getRaceChoice() { + public int getRaceChoice() { - return raceChoice; + return raceIndex; } + + } diff --git a/dndBuilder/src/GUI/Panels/img/ImagePanel.java b/dndBuilder/src/GUI/Panels/img/ImagePanel.java deleted file mode 100644 index eafb17c..0000000 --- a/dndBuilder/src/GUI/Panels/img/ImagePanel.java +++ /dev/null @@ -1,23 +0,0 @@ -package GUI.Panels.img; - -import javax.swing.*; -import java.io.File; - -public class ImagePanel extends JPanel { - - private JLabel[] dragonbornPortraits; - - public ImagePanel() { - - super(); - - - } - - private void createPortraitsArray() { - - - - } - -} diff --git a/dndBuilder/src/GUI/img/ImagePanel.java b/dndBuilder/src/GUI/img/ImagePanel.java new file mode 100644 index 0000000..0f6caaf --- /dev/null +++ b/dndBuilder/src/GUI/img/ImagePanel.java @@ -0,0 +1,106 @@ +package GUI.img; + +import javax.imageio.ImageIO; +import javax.swing.*; +import java.awt.*; +import java.awt.image.BufferedImage; +import java.io.File; +import java.util.*; + +public class ImagePanel extends JPanel { + + private JLabel[][] portraits; + private String[] holder; + private int lastIndex; + + public ImagePanel(String[] holder) { + + super(); + this.holder = holder; + createPortraitsArray(); + + updateImage(0); // Default selection of the 0th element. + + } + + public void updateImage(int holderIndex) { + + removeAll(); + + Random ran = new Random(); + int bound = portraits[holderIndex].length; + int newIndex = ran.nextInt(bound); + + while(newIndex == lastIndex) { + + newIndex = ran.nextInt(bound); + + } + + lastIndex = newIndex; + + add(portraits[holderIndex][newIndex]); + + repaint(); + revalidate(); + + + } + + private void createPortraitsArray() { + + portraits = new JLabel[holder.length][]; + + for (int i = 0; i < holder.length; i++) { + + File imagesDir = new File("dndBuilder/src/GUI/img/" + holder[i] + "/"); + + File[] dir = imagesDir.listFiles(); + portraits[i] = new JLabel[dir.length]; + int index = 0; + + for (File file : dir) { + + portraits[i][index] = image(file); + index++; + + } + + } + + } + + private JLabel image(File file) { + + BufferedImage img; + Image finalImg; + JLabel picture; + + try { + + img = ImageIO.read(file); + finalImg = img.getScaledInstance(250, 250, Image.SCALE_SMOOTH); + + } catch (Exception e) { + + System.out.println("Error reading file."); + img = null; + finalImg = null; + + } + + if(Objects.isNull(finalImg)) { + + picture = new JLabel("ERROR: Image not found."); + + } else { + + picture = new JLabel(new ImageIcon(finalImg)); + + } + + return picture; + + } + +} diff --git a/dndBuilder/src/GUI/Panels/img/dragonborn/dragonborn.jpg b/dndBuilder/src/GUI/img/dragonborn/dragonborn.jpg similarity index 100% rename from dndBuilder/src/GUI/Panels/img/dragonborn/dragonborn.jpg rename to dndBuilder/src/GUI/img/dragonborn/dragonborn.jpg diff --git a/dndBuilder/src/GUI/Panels/img/dragonborn/dragonborn2.jpg b/dndBuilder/src/GUI/img/dragonborn/dragonborn2.jpg similarity index 100% rename from dndBuilder/src/GUI/Panels/img/dragonborn/dragonborn2.jpg rename to dndBuilder/src/GUI/img/dragonborn/dragonborn2.jpg diff --git a/dndBuilder/src/GUI/Panels/img/dragonborn/dragonborn3.jpg b/dndBuilder/src/GUI/img/dragonborn/dragonborn3.jpg similarity index 100% rename from dndBuilder/src/GUI/Panels/img/dragonborn/dragonborn3.jpg rename to dndBuilder/src/GUI/img/dragonborn/dragonborn3.jpg diff --git a/dndBuilder/src/GUI/Panels/img/dragonborn/dragonborn4.jpg b/dndBuilder/src/GUI/img/dragonborn/dragonborn4.jpg similarity index 100% rename from dndBuilder/src/GUI/Panels/img/dragonborn/dragonborn4.jpg rename to dndBuilder/src/GUI/img/dragonborn/dragonborn4.jpg diff --git a/dndBuilder/src/GUI/Panels/img/dragonborn/dragonborn5.jpg b/dndBuilder/src/GUI/img/dragonborn/dragonborn5.jpg similarity index 100% rename from dndBuilder/src/GUI/Panels/img/dragonborn/dragonborn5.jpg rename to dndBuilder/src/GUI/img/dragonborn/dragonborn5.jpg diff --git a/dndBuilder/src/GUI/Panels/img/dragonborn/dragonborn6.jpg b/dndBuilder/src/GUI/img/dragonborn/dragonborn6.jpg similarity index 100% rename from dndBuilder/src/GUI/Panels/img/dragonborn/dragonborn6.jpg rename to dndBuilder/src/GUI/img/dragonborn/dragonborn6.jpg diff --git a/dndBuilder/src/GUI/Panels/img/sheet.jpg b/dndBuilder/src/GUI/img/sheet.jpg similarity index 100% rename from dndBuilder/src/GUI/Panels/img/sheet.jpg rename to dndBuilder/src/GUI/img/sheet.jpg