From c1768324737196fa6edceef1b06833dcd68e96bd Mon Sep 17 00:00:00 2001 From: Josh Ashton Date: Mon, 1 May 2023 14:43:37 -0600 Subject: [PATCH] updated to gradle project framework --- .gitattributes | 9 + .gitignore | 5 + .project | 28 ++ .settings/org.eclipse.buildship.core.prefs | 13 + app/.classpath | 32 +++ app/.project | 34 +++ .../org.eclipse.buildship.core.prefs | 2 + app/.settings/org.eclipse.jdt.core.prefs | 4 + app/build.gradle | 45 ++++ {src => app/src/main/java/dnd}/App.java | 2 +- .../src/main/java/dnd}/AppConstants.java | 8 +- .../src/main/java/dnd}/Background.java | 2 +- .../src/main/java/dnd}/BasicNavPanel.java | 4 +- .../src/main/java/dnd}/BasicPanel.java | 6 +- .../src/main/java/dnd}/CharacterSheet.java | 3 +- .../src/main/java/dnd}/CharacterStats.java | 2 +- {src => app/src/main/java/dnd}/Charisma.java | 2 +- .../java/dnd}/ChooseAbilityScoresPanel.java | 4 +- .../src/main/java/dnd}/ClassTemplate.java | 2 +- {src => app/src/main/java/dnd}/Cleric.java | 2 +- .../src/main/java/dnd}/Constitution.java | 2 +- .../src/main/java/dnd}/DefaultButton.java | 4 +- .../src/main/java/dnd}/DescriptionPanel.java | 4 +- {src => app/src/main/java/dnd}/Dexterity.java | 2 +- .../main/java/dnd}/DieRoller/DiceRoller.java | 2 +- {src => app/src/main/java/dnd}/Fighter.java | 2 +- .../src/main/java/dnd}/FileManager.java | 67 +---- .../src/main/java/dnd}/GUImanager.java | 84 +++--- .../src/main/java/dnd}/ImageManager.java | 44 +--- {src => app/src/main/java/dnd}/InfoPanel.java | 4 +- .../src/main/java/dnd}/Intelligence.java | 2 +- .../src/main/java/dnd}/LoadCharacter.java | 2 +- .../main/java/dnd}/LoadCharacterPanel.java | 4 +- .../src/main/java/dnd}/MainMenuPanel.java | 4 +- {src => app/src/main/java/dnd}/Skills.java | 2 +- {src => app/src/main/java/dnd}/Stats.java | 2 +- {src => app/src/main/java/dnd}/Strength.java | 2 +- {src => app/src/main/java/dnd}/Tester.java | 3 +- .../main/java/dnd}/ViewCharacterPanel.java | 4 +- {src => app/src/main/java/dnd}/Wisdom.java | 2 +- {src => app/src/main/java/dnd}/Wizard.java | 2 +- .../java/dnd}/deprecated/RoundedBorder.java | 2 + .../main/java/dnd/species}/Dragonborn.java | 2 +- .../src/main/java/dnd/species}/Dwarf.java | 2 +- .../src/main/java/dnd/species}/Elf.java | 2 +- .../src/main/java/dnd/species}/Gnome.java | 2 +- .../src/main/java/dnd/species}/HalfElf.java | 2 +- .../src/main/java/dnd/species}/HalfOrc.java | 2 +- .../src/main/java/dnd/species}/Halfling.java | 2 +- .../src/main/java/dnd/species}/Human.java | 2 +- .../src/main/java/dnd/species}/Race.java | 2 +- .../src/main/java/dnd/species}/Tiefling.java | 2 +- app/src/main/resources/SanSalvi.ttf | Bin 0 -> 41296 bytes .../java/dndcharacterbuilder/AppTest.java | 14 + gradle.properties | 6 + gradle/wrapper/gradle-wrapper.jar | Bin 0 -> 62076 bytes gradle/wrapper/gradle-wrapper.properties | 6 + gradlew | 245 ++++++++++++++++++ gradlew.bat | 92 +++++++ settings.gradle | 17 ++ src/App.class | Bin 331 -> 0 bytes src/AppConstants.class | Bin 1881 -> 0 bytes src/Background.class | Bin 8350 -> 0 bytes src/BasicNavPanel.class | Bin 2221 -> 0 bytes src/BasicPanel.class | Bin 4567 -> 0 bytes src/CharacterSheet.class | Bin 2428 -> 0 bytes src/CharacterStats.class | Bin 1918 -> 0 bytes src/Charisma.class | Bin 1322 -> 0 bytes src/ChooseAbilityScoresPanel.class | Bin 5347 -> 0 bytes src/ClassTemplate.class | Bin 527 -> 0 bytes src/Cleric.class | Bin 1152 -> 0 bytes src/Constitution.class | Bin 1321 -> 0 bytes src/DefaultButton$1.class | Bin 902 -> 0 bytes src/DefaultButton.class | Bin 1381 -> 0 bytes src/DescriptionPanel.class | Bin 5947 -> 0 bytes src/Dexterity.class | Bin 1286 -> 0 bytes src/Dragonborn.class | Bin 1208 -> 0 bytes src/Dwarf.class | Bin 1196 -> 0 bytes src/Elf.class | Bin 1218 -> 0 bytes src/Fighter.class | Bin 1310 -> 0 bytes src/FileManager.class | Bin 4179 -> 0 bytes src/GUImanager.class | Bin 19665 -> 0 bytes src/Gnome.class | Bin 1195 -> 0 bytes src/HalfElf.class | Bin 1273 -> 0 bytes src/HalfOrc.class | Bin 1197 -> 0 bytes src/Halfling.class | Bin 1200 -> 0 bytes src/Human.class | Bin 1220 -> 0 bytes src/ImageManager.class | Bin 3079 -> 0 bytes src/InfoPanel.class | Bin 2369 -> 0 bytes src/Intelligence.class | Bin 1292 -> 0 bytes src/LoadCharacter.class | Bin 1897 -> 0 bytes src/LoadCharacterPanel.class | Bin 1810 -> 0 bytes src/MainMenuPanel.class | Bin 1776 -> 0 bytes src/Race.class | Bin 314 -> 0 bytes src/Skills.class | Bin 1300 -> 0 bytes src/Stats.class | Bin 606 -> 0 bytes src/Strength.class | Bin 1488 -> 0 bytes src/Tester.class | Bin 1655 -> 0 bytes src/Tiefling.class | Bin 1204 -> 0 bytes src/ViewCharacterPanel.class | Bin 2955 -> 0 bytes src/Wisdom.class | Bin 1280 -> 0 bytes src/Wizard.class | Bin 1152 -> 0 bytes 102 files changed, 654 insertions(+), 201 deletions(-) create mode 100644 .gitattributes create mode 100644 .gitignore create mode 100644 .project create mode 100644 .settings/org.eclipse.buildship.core.prefs create mode 100644 app/.classpath create mode 100644 app/.project create mode 100644 app/.settings/org.eclipse.buildship.core.prefs create mode 100644 app/.settings/org.eclipse.jdt.core.prefs create mode 100644 app/build.gradle rename {src => app/src/main/java/dnd}/App.java (92%) rename {src => app/src/main/java/dnd}/AppConstants.java (89%) rename {src => app/src/main/java/dnd}/Background.java (99%) rename {src => app/src/main/java/dnd}/BasicNavPanel.java (97%) rename {src => app/src/main/java/dnd}/BasicPanel.java (97%) rename {src => app/src/main/java/dnd}/CharacterSheet.java (98%) rename {src => app/src/main/java/dnd}/CharacterStats.java (99%) rename {src => app/src/main/java/dnd}/Charisma.java (98%) rename {src => app/src/main/java/dnd}/ChooseAbilityScoresPanel.java (99%) rename {src => app/src/main/java/dnd}/ClassTemplate.java (98%) rename {src => app/src/main/java/dnd}/Cleric.java (99%) rename {src => app/src/main/java/dnd}/Constitution.java (98%) rename {src => app/src/main/java/dnd}/DefaultButton.java (97%) rename {src => app/src/main/java/dnd}/DescriptionPanel.java (99%) rename {src => app/src/main/java/dnd}/Dexterity.java (98%) rename {src => app/src/main/java/dnd}/DieRoller/DiceRoller.java (99%) rename {src => app/src/main/java/dnd}/Fighter.java (99%) rename {src => app/src/main/java/dnd}/FileManager.java (89%) rename {src => app/src/main/java/dnd}/GUImanager.java (95%) rename {src => app/src/main/java/dnd}/ImageManager.java (83%) rename {src => app/src/main/java/dnd}/InfoPanel.java (98%) rename {src => app/src/main/java/dnd}/Intelligence.java (98%) rename {src => app/src/main/java/dnd}/LoadCharacter.java (99%) rename {src => app/src/main/java/dnd}/LoadCharacterPanel.java (96%) rename {src => app/src/main/java/dnd}/MainMenuPanel.java (97%) rename {src => app/src/main/java/dnd}/Skills.java (99%) rename {src => app/src/main/java/dnd}/Stats.java (98%) rename {src => app/src/main/java/dnd}/Strength.java (98%) rename {src => app/src/main/java/dnd}/Tester.java (96%) rename {src => app/src/main/java/dnd}/ViewCharacterPanel.java (97%) rename {src => app/src/main/java/dnd}/Wisdom.java (98%) rename {src => app/src/main/java/dnd}/Wizard.java (99%) rename {src => app/src/main/java/dnd}/deprecated/RoundedBorder.java (95%) rename {src => app/src/main/java/dnd/species}/Dragonborn.java (98%) rename {src => app/src/main/java/dnd/species}/Dwarf.java (98%) rename {src => app/src/main/java/dnd/species}/Elf.java (98%) rename {src => app/src/main/java/dnd/species}/Gnome.java (98%) rename {src => app/src/main/java/dnd/species}/HalfElf.java (98%) rename {src => app/src/main/java/dnd/species}/HalfOrc.java (98%) rename {src => app/src/main/java/dnd/species}/Halfling.java (98%) rename {src => app/src/main/java/dnd/species}/Human.java (98%) rename {src => app/src/main/java/dnd/species}/Race.java (97%) rename {src => app/src/main/java/dnd/species}/Tiefling.java (98%) create mode 100644 app/src/main/resources/SanSalvi.ttf create mode 100644 app/src/test/java/dndcharacterbuilder/AppTest.java create mode 100644 gradle.properties create mode 100644 gradle/wrapper/gradle-wrapper.jar create mode 100644 gradle/wrapper/gradle-wrapper.properties create mode 100755 gradlew create mode 100644 gradlew.bat create mode 100644 settings.gradle delete mode 100644 src/App.class delete mode 100644 src/AppConstants.class delete mode 100644 src/Background.class delete mode 100644 src/BasicNavPanel.class delete mode 100644 src/BasicPanel.class delete mode 100644 src/CharacterSheet.class delete mode 100644 src/CharacterStats.class delete mode 100644 src/Charisma.class delete mode 100644 src/ChooseAbilityScoresPanel.class delete mode 100644 src/ClassTemplate.class delete mode 100644 src/Cleric.class delete mode 100644 src/Constitution.class delete mode 100644 src/DefaultButton$1.class delete mode 100644 src/DefaultButton.class delete mode 100644 src/DescriptionPanel.class delete mode 100644 src/Dexterity.class delete mode 100644 src/Dragonborn.class delete mode 100644 src/Dwarf.class delete mode 100644 src/Elf.class delete mode 100644 src/Fighter.class delete mode 100644 src/FileManager.class delete mode 100644 src/GUImanager.class delete mode 100644 src/Gnome.class delete mode 100644 src/HalfElf.class delete mode 100644 src/HalfOrc.class delete mode 100644 src/Halfling.class delete mode 100644 src/Human.class delete mode 100644 src/ImageManager.class delete mode 100644 src/InfoPanel.class delete mode 100644 src/Intelligence.class delete mode 100644 src/LoadCharacter.class delete mode 100644 src/LoadCharacterPanel.class delete mode 100644 src/MainMenuPanel.class delete mode 100644 src/Race.class delete mode 100644 src/Skills.class delete mode 100644 src/Stats.class delete mode 100644 src/Strength.class delete mode 100644 src/Tester.class delete mode 100644 src/Tiefling.class delete mode 100644 src/ViewCharacterPanel.class delete mode 100644 src/Wisdom.class delete mode 100644 src/Wizard.class diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..097f9f9 --- /dev/null +++ b/.gitattributes @@ -0,0 +1,9 @@ +# +# https://help.github.com/articles/dealing-with-line-endings/ +# +# Linux start script should use lf +/gradlew text eol=lf + +# These are Windows script files and should use crlf +*.bat text eol=crlf + diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..1b6985c --- /dev/null +++ b/.gitignore @@ -0,0 +1,5 @@ +# Ignore Gradle project-specific cache directory +.gradle + +# Ignore Gradle build output directory +build diff --git a/.project b/.project new file mode 100644 index 0000000..42cb056 --- /dev/null +++ b/.project @@ -0,0 +1,28 @@ + + + dnd + Project dnd created by Buildship. + + + + + org.eclipse.buildship.core.gradleprojectbuilder + + + + + + org.eclipse.buildship.core.gradleprojectnature + + + + 1682969422633 + + 30 + + org.eclipse.core.resources.regexFilterMatcher + node_modules|\.git|__CREATED_BY_JAVA_LANGUAGE_SERVER__ + + + + diff --git a/.settings/org.eclipse.buildship.core.prefs b/.settings/org.eclipse.buildship.core.prefs new file mode 100644 index 0000000..f093f85 --- /dev/null +++ b/.settings/org.eclipse.buildship.core.prefs @@ -0,0 +1,13 @@ +arguments=--init-script /Users/jashton/.cache/jdtls/config/org.eclipse.osgi/50/0/.cp/gradle/init/init.gradle +auto.sync=false +build.scans.enabled=false +connection.gradle.distribution=GRADLE_DISTRIBUTION(WRAPPER) +connection.project.dir= +eclipse.preferences.version=1 +gradle.user.home= +java.home=/opt/homebrew/Cellar/openjdk/20/libexec/openjdk.jdk/Contents/Home +jvm.arguments= +offline.mode=false +override.workspace.settings=true +show.console.view=true +show.executions.view=true diff --git a/app/.classpath b/app/.classpath new file mode 100644 index 0000000..be377dd --- /dev/null +++ b/app/.classpath @@ -0,0 +1,32 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/.project b/app/.project new file mode 100644 index 0000000..b0cd83e --- /dev/null +++ b/app/.project @@ -0,0 +1,34 @@ + + + app + Project app created by Buildship. + + + + + org.eclipse.jdt.core.javabuilder + + + + + org.eclipse.buildship.core.gradleprojectbuilder + + + + + + org.eclipse.jdt.core.javanature + org.eclipse.buildship.core.gradleprojectnature + + + + 1682969422631 + + 30 + + org.eclipse.core.resources.regexFilterMatcher + node_modules|\.git|__CREATED_BY_JAVA_LANGUAGE_SERVER__ + + + + diff --git a/app/.settings/org.eclipse.buildship.core.prefs b/app/.settings/org.eclipse.buildship.core.prefs new file mode 100644 index 0000000..b1886ad --- /dev/null +++ b/app/.settings/org.eclipse.buildship.core.prefs @@ -0,0 +1,2 @@ +connection.project.dir=.. +eclipse.preferences.version=1 diff --git a/app/.settings/org.eclipse.jdt.core.prefs b/app/.settings/org.eclipse.jdt.core.prefs new file mode 100644 index 0000000..626e0e1 --- /dev/null +++ b/app/.settings/org.eclipse.jdt.core.prefs @@ -0,0 +1,4 @@ +eclipse.preferences.version=1 +org.eclipse.jdt.core.compiler.codegen.targetPlatform=17 +org.eclipse.jdt.core.compiler.compliance=17 +org.eclipse.jdt.core.compiler.source=17 diff --git a/app/build.gradle b/app/build.gradle new file mode 100644 index 0000000..bfadd0b --- /dev/null +++ b/app/build.gradle @@ -0,0 +1,45 @@ +/* + * This file was generated by the Gradle 'init' task. + * + * This generated file contains a sample Java application project to get you started. + * For more details take a look at the 'Building Java & JVM projects' chapter in the Gradle + * User Manual available at https://docs.gradle.org/8.1.1/userguide/building_java_projects.html + * This project uses @Incubating APIs which are subject to change. + */ + +plugins { + // Apply the application plugin to add support for building a CLI application in Java. + id 'application' +} + +repositories { + // Use Maven Central for resolving dependencies. + mavenCentral() +} + +dependencies { + // This dependency is used by the application. + implementation 'com.google.guava:guava:31.1-jre' +} + +testing { + suites { + // Configure the built-in test suite + test { + // Use JUnit Jupiter test framework + useJUnitJupiter('5.9.1') + } + } +} + +// Apply a specific Java toolchain to ease working on different environments. +java { + toolchain { + languageVersion = JavaLanguageVersion.of(17) + } +} + +application { + // Define the main class for the application. + mainClass = 'dnd.App' +} diff --git a/src/App.java b/app/src/main/java/dnd/App.java similarity index 92% rename from src/App.java rename to app/src/main/java/dnd/App.java index 8e2f763..2402065 100644 --- a/src/App.java +++ b/app/src/main/java/dnd/App.java @@ -1,4 +1,4 @@ -package src; +package dnd; public class App { diff --git a/src/AppConstants.java b/app/src/main/java/dnd/AppConstants.java similarity index 89% rename from src/AppConstants.java rename to app/src/main/java/dnd/AppConstants.java index 2c1924f..eac09a0 100644 --- a/src/AppConstants.java +++ b/app/src/main/java/dnd/AppConstants.java @@ -1,4 +1,4 @@ -package src; +package dnd; import java.awt.*; @@ -12,11 +12,11 @@ public final class AppConstants { public static final String mainFilepath = System.getProperty("user.dir"); - public static final String imgFilepath = System.getProperty("user.dir") + "/.resources/img/"; + public static final String imgFilepath = System.getProperty("user.dir") + "/src/main/resources/img/"; - public static final String fontFilepath = System.getProperty("user.dir") + "/.resources/SanSalvi.ttf"; + public static final String fontFilepath = System.getProperty("user.dir") + "/src/main/resources/SanSalvi.ttf"; - public static final String savesFilepath = System.getProperty("user.dir") + "/.savedSheets/"; + public static final String savesFilepath = System.getProperty("user.home") + "/Documents/saves"; diff --git a/src/Background.java b/app/src/main/java/dnd/Background.java similarity index 99% rename from src/Background.java rename to app/src/main/java/dnd/Background.java index c3415e2..ef0b9fd 100644 --- a/src/Background.java +++ b/app/src/main/java/dnd/Background.java @@ -1,4 +1,4 @@ -package src; +package dnd; public class Background { diff --git a/src/BasicNavPanel.java b/app/src/main/java/dnd/BasicNavPanel.java similarity index 97% rename from src/BasicNavPanel.java rename to app/src/main/java/dnd/BasicNavPanel.java index beed543..0b2df6f 100644 --- a/src/BasicNavPanel.java +++ b/app/src/main/java/dnd/BasicNavPanel.java @@ -1,11 +1,11 @@ -package src; +package dnd; import javax.swing.*; import javax.swing.border.EmptyBorder; import javax.swing.border.LineBorder; import java.awt.*; -import static src.AppConstants.*; +import static dnd.AppConstants.*; public class BasicNavPanel extends JPanel { diff --git a/src/BasicPanel.java b/app/src/main/java/dnd/BasicPanel.java similarity index 97% rename from src/BasicPanel.java rename to app/src/main/java/dnd/BasicPanel.java index ebfb50d..9fec990 100644 --- a/src/BasicPanel.java +++ b/app/src/main/java/dnd/BasicPanel.java @@ -1,10 +1,10 @@ -package src; +package dnd; import javax.swing.*; import java.awt.*; -import static src.AppConstants.*; -import static src.ImageManager.*; +import static dnd.AppConstants.*; +import static dnd.ImageManager.*; public class BasicPanel extends JPanel { diff --git a/src/CharacterSheet.java b/app/src/main/java/dnd/CharacterSheet.java similarity index 98% rename from src/CharacterSheet.java rename to app/src/main/java/dnd/CharacterSheet.java index 02eacb9..e1c768d 100644 --- a/src/CharacterSheet.java +++ b/app/src/main/java/dnd/CharacterSheet.java @@ -1,6 +1,7 @@ -package src; +package dnd; import java.io.Serializable; +import dnd.species.*; public class CharacterSheet implements Serializable { private String name; diff --git a/src/CharacterStats.java b/app/src/main/java/dnd/CharacterStats.java similarity index 99% rename from src/CharacterStats.java rename to app/src/main/java/dnd/CharacterStats.java index 0fcbea6..64be5c2 100644 --- a/src/CharacterStats.java +++ b/app/src/main/java/dnd/CharacterStats.java @@ -1,4 +1,4 @@ -package src; +package dnd; import java.io.Serializable; diff --git a/src/Charisma.java b/app/src/main/java/dnd/Charisma.java similarity index 98% rename from src/Charisma.java rename to app/src/main/java/dnd/Charisma.java index 2046406..3dc054c 100644 --- a/src/Charisma.java +++ b/app/src/main/java/dnd/Charisma.java @@ -1,4 +1,4 @@ -package src; +package dnd; import java.io.Serializable; diff --git a/src/ChooseAbilityScoresPanel.java b/app/src/main/java/dnd/ChooseAbilityScoresPanel.java similarity index 99% rename from src/ChooseAbilityScoresPanel.java rename to app/src/main/java/dnd/ChooseAbilityScoresPanel.java index 1a156d0..be9bc3f 100644 --- a/src/ChooseAbilityScoresPanel.java +++ b/app/src/main/java/dnd/ChooseAbilityScoresPanel.java @@ -1,10 +1,10 @@ -package src; +package dnd; import javax.swing.*; import javax.swing.border.LineBorder; import java.awt.*; -import static src.AppConstants.*; +import static dnd.AppConstants.*; public class ChooseAbilityScoresPanel extends JPanel { diff --git a/src/ClassTemplate.java b/app/src/main/java/dnd/ClassTemplate.java similarity index 98% rename from src/ClassTemplate.java rename to app/src/main/java/dnd/ClassTemplate.java index ae285c2..4c83317 100644 --- a/src/ClassTemplate.java +++ b/app/src/main/java/dnd/ClassTemplate.java @@ -1,4 +1,4 @@ -package src; +package dnd; public interface ClassTemplate { diff --git a/src/Cleric.java b/app/src/main/java/dnd/Cleric.java similarity index 99% rename from src/Cleric.java rename to app/src/main/java/dnd/Cleric.java index 8dc0772..4d6a824 100644 --- a/src/Cleric.java +++ b/app/src/main/java/dnd/Cleric.java @@ -1,4 +1,4 @@ -package src; +package dnd; public class Cleric implements ClassTemplate { diff --git a/src/Constitution.java b/app/src/main/java/dnd/Constitution.java similarity index 98% rename from src/Constitution.java rename to app/src/main/java/dnd/Constitution.java index ab5d2e0..ce88d73 100644 --- a/src/Constitution.java +++ b/app/src/main/java/dnd/Constitution.java @@ -1,4 +1,4 @@ -package src; +package dnd; import java.io.Serializable; diff --git a/src/DefaultButton.java b/app/src/main/java/dnd/DefaultButton.java similarity index 97% rename from src/DefaultButton.java rename to app/src/main/java/dnd/DefaultButton.java index 53ea56a..1cca831 100644 --- a/src/DefaultButton.java +++ b/app/src/main/java/dnd/DefaultButton.java @@ -1,11 +1,11 @@ -package src; +package dnd; import javax.swing.*; import javax.swing.border.EmptyBorder; import java.awt.event.MouseEvent; import java.awt.event.MouseListener; -import static src.AppConstants.*; +import static dnd.AppConstants.*; public class DefaultButton extends JButton { diff --git a/src/DescriptionPanel.java b/app/src/main/java/dnd/DescriptionPanel.java similarity index 99% rename from src/DescriptionPanel.java rename to app/src/main/java/dnd/DescriptionPanel.java index 8534a6e..3cc8cab 100644 --- a/src/DescriptionPanel.java +++ b/app/src/main/java/dnd/DescriptionPanel.java @@ -1,10 +1,10 @@ -package src; +package dnd; import javax.swing.*; import javax.swing.border.*; import java.awt.*; -import static src.AppConstants.*; +import static dnd.AppConstants.*; public class DescriptionPanel extends JPanel { diff --git a/src/Dexterity.java b/app/src/main/java/dnd/Dexterity.java similarity index 98% rename from src/Dexterity.java rename to app/src/main/java/dnd/Dexterity.java index fd7f4b8..94a9db1 100644 --- a/src/Dexterity.java +++ b/app/src/main/java/dnd/Dexterity.java @@ -1,4 +1,4 @@ -package src; +package dnd; import java.io.Serializable; diff --git a/src/DieRoller/DiceRoller.java b/app/src/main/java/dnd/DieRoller/DiceRoller.java similarity index 99% rename from src/DieRoller/DiceRoller.java rename to app/src/main/java/dnd/DieRoller/DiceRoller.java index 08583ee..af053b2 100644 --- a/src/DieRoller/DiceRoller.java +++ b/app/src/main/java/dnd/DieRoller/DiceRoller.java @@ -2,7 +2,7 @@ * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license * Click nbfs://nbhost/SystemFileSystem/Templates/Character.Classes/Main.java to edit this template */ -package DieRoller; +package dnd.DieRoller; import javax.swing.*; import java.util.Arrays; diff --git a/src/Fighter.java b/app/src/main/java/dnd/Fighter.java similarity index 99% rename from src/Fighter.java rename to app/src/main/java/dnd/Fighter.java index 80354eb..921dfc8 100644 --- a/src/Fighter.java +++ b/app/src/main/java/dnd/Fighter.java @@ -1,4 +1,4 @@ -package src; +package dnd; import java.io.Serializable; diff --git a/src/FileManager.java b/app/src/main/java/dnd/FileManager.java similarity index 89% rename from src/FileManager.java rename to app/src/main/java/dnd/FileManager.java index 1855790..7b07445 100644 --- a/src/FileManager.java +++ b/app/src/main/java/dnd/FileManager.java @@ -1,57 +1,41 @@ -package src; +package dnd; import java.awt.*; import java.io.*; import java.util.*; -import static src.AppConstants.*; +import static dnd.AppConstants.*; public class FileManager { - private String filepath; private boolean returningUser; - private ArrayList saveFiles; private ArrayList saves; public FileManager() { - saveFiles = new ArrayList<>(); - setSaveFiles(); - loadFont(); - } public int getNumSaves() { - return saveFiles.size(); - } public boolean isReturningUser() { - return returningUser; - } public CharacterSheet readSavedCharacter(int index) { - return readCharacter(saveFiles.get(index)); - } public void saveCharacter(CharacterSheet completedCharacter) { - writeCharacter(completedCharacter); - } public ArrayList getSaves() { - return saves; - } // TODO: Need to implement. @@ -60,100 +44,57 @@ public class FileManager { } private void loadFont() { - try { - GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment(); - ge.registerFont(Font.createFont(Font.TRUETYPE_FONT, new File(fontFilepath))); - } catch(IOException | FontFormatException e) { - System.out.println("Filepath of font not found: " + fontFilepath + " does not exist."); - } - } private void setSaveFiles() { - File[] tmp = new File(savesFilepath).listFiles(); - if(tmp != null) { - for(int i = 0; i < tmp.length; i++) { - saveFiles.add(tmp[i]); - } - returningUser = true; - } else { - returningUser = false; - } saves = new ArrayList<>(); - for(File file : saveFiles) { - saves.add(readCharacter(file)); - } - } private CharacterSheet readCharacter(File file) { - CharacterSheet sheet = null; - try { - FileInputStream fileIn = new FileInputStream(file.getPath()); - ObjectInputStream in = new ObjectInputStream(fileIn); - sheet = (CharacterSheet) in.readObject(); - in.close(); fileIn.close(); - } catch (IOException | ClassNotFoundException e) { - System.out.println("No saved characters were found"); - } - return sheet; - } private void writeCharacter(CharacterSheet sheet) { - try( - - FileOutputStream fileOut = new FileOutputStream(savesFilepath + sheet.getName() + ".dnd"); - - ObjectOutputStream objOut = new ObjectOutputStream(fileOut); - + FileOutputStream fileOut = new FileOutputStream(savesFilepath + sheet.getName() + ".dnd"); + ObjectOutputStream objOut = new ObjectOutputStream(fileOut); ) { objOut.writeObject(sheet); - setSaveFiles(); - } catch (IOException e) { - System.out.println("ERROR: "); - e.printStackTrace(); - System.out.println("\nERROR: Unable to write character sheet object to \n" + filepath + "/.savedSheets"); - } - } - } diff --git a/src/GUImanager.java b/app/src/main/java/dnd/GUImanager.java similarity index 95% rename from src/GUImanager.java rename to app/src/main/java/dnd/GUImanager.java index 4f20712..89231ad 100644 --- a/src/GUImanager.java +++ b/app/src/main/java/dnd/GUImanager.java @@ -1,10 +1,11 @@ -package src; +package dnd; import javax.swing.*; import java.awt.*; import java.util.*; -import static src.AppConstants.*; +import static dnd.AppConstants.*; +import dnd.species.*; public class GUImanager extends JFrame { @@ -163,7 +164,7 @@ public class GUImanager extends JFrame { "A Strength check can model any attempt to lift, push, pull, or break something, to force your body through a space, or to otherwise apply brute force to a situation. You add your Strength modifier to your attack roll and your damage roll when attacking with a melee weapon Skills: Athletics", "A Dexterity check can model any attempt to move nimbly, quickly, or quietly, or to keep from falling on tricky footing. You add your Dexterity modifier to your attack roll and your damage roll when attacking with a ranged weapon, or a melee weapon that has the finesse property. Skills: Acrobatics, Sleight of Hand, Stealth", - "CConstitution checks are uncommon, and no skills apply to Constitution checks, because the endurance this ability represents is largely passive rather than involving a specific effort on the part of a character or monster. A Constitution check can model your attempt to push beyond normal limits, however. Your Constitution modifier contributes to your hit points. Typically, you add your Constitution modifier to each Hit Die you roll for your hit points.", + "Constitution checks are uncommon, and no skills apply to Constitution checks, because the endurance this ability represents is largely passive rather than involving a specific effort on the part of a character or monster. A Constitution check can model your attempt to push beyond normal limits, however. Your Constitution modifier contributes to your hit points. Typically, you add your Constitution modifier to each Hit Die you roll for your hit points.", "An Intelligence check comes into play when you need to draw on logic, education, memory, or deductive reasoning. Skills: Arcana, History, Investigation, Nature, Religion", "A Wisdom check might reflect an effort to read body language, understand someone’s feelings, notice things about the environment, or care for an injured person. Skills: Animal Handling, Insight, Medicine, Perception, Survival", "A Charisma check might arise when you try to influence or entertain others, when you try to make an impression or tell a convincing lie, or when you are navigating a tricky social situation. Skills: Deception, Intimidation, Performance, Persuasion" @@ -236,60 +237,41 @@ public class GUImanager extends JFrame { backgroundDescriptions = new String[]{ //Acolyte - "You have spent your life in the service of a temple to a specific god or pantheon of gods. You act as an intermediary between the realm of the holy and the mortal world, performing sacred rites and offering sacrifices in order to conduct worshipers into the presence of the divine. You are not necessarily a cleric—performing sacred rites is not the same thing as channeling divine power. Feature: Shelter of the Faithful Proficiencies: Insight, Religion -", + "You have spent your life in the service of a temple to a specific god or pantheon of gods. You act as an intermediary between the realm of the holy and the mortal world, performing sacred rites and offering sacrifices in order to conduct worshipers into the presence of the divine. You are not necessarily a cleric—performing sacred rites is not the same thing as channeling divine power. Feature: Shelter of the Faithful Proficiencies: Insight, Religion", //Charlatan - "You have always had a way with people. You know what makes them tick, you can tease out their hearts’ desires after a few minutes of conversation, and with a few leading questions you can read them like they were children’s books. It’s a useful talent, and one that you’re perfectly willing to use for your advantage. Feature: False Identity Proficiencies: Deception, Sleight of Hand -", + "You have always had a way with people. You know what makes them tick, you can tease out their hearts’ desires after a few minutes of conversation, and with a few leading questions you can read them like they were children’s books. It’s a useful talent, and one that you’re perfectly willing to use for your advantage. Feature: False Identity Proficiencies: Deception, Sleight of Hand", //Criminal - "You are an experienced criminal with a history of breaking the law. You have spent a lot of time among other criminals and still have contacts within the criminal underworld. You’re far closer than most people to the world of murder, theft, and violence that pervades the underbelly of civilization, and you have survived up to this point by flouting the rules and regulations of society. Feature: Criminal Contact Proficiencies: Deception, Stealth -", + "You are an experienced criminal with a history of breaking the law. You have spent a lot of time among other criminals and still have contacts within the criminal underworld. You’re far closer than most people to the world of murder, theft, and violence that pervades the underbelly of civilization, and you have survived up to this point by flouting the rules and regulations of society. Feature: Criminal Contact Proficiencies: Deception, Stealth", //Entertainer - "You thrive in front of an audience. You know how to entrance them, entertain them, and even inspire them. Your poetics can stir the hearts of those who hear you, awakening grief or joy, laughter or anger. Your music raises their spirits or captures their sorrow. Your dance steps captivate, your humor cuts to the quick. Whatever techniques you use, your art is your life. Feature: By Popular Demand Proficiencies: Acrobatics, Performance -", + "You thrive in front of an audience. You know how to entrance them, entertain them, and even inspire them. Your poetics can stir the hearts of those who hear you, awakening grief or joy, laughter or anger. Your music raises their spirits or captures their sorrow. Your dance steps captivate, your humor cuts to the quick. Whatever techniques you use, your art is your life. Feature: By Popular Demand Proficiencies: Acrobatics, Performance", //Folk Hero - "You come from a humble social rank, but you are destined for so much more. Already the people of your home village regard you as their champion, and your destiny calls you to stand against the tyrants and monsters that threaten the common folk everywhere. Feature: Rustic Hospitality Proficiencies: Animal Handling, Survival -", + "You come from a humble social rank, but you are destined for so much more. Already the people of your home village regard you as their champion, and your destiny calls you to stand against the tyrants and monsters that threaten the common folk everywhere. Feature: Rustic Hospitality Proficiencies: Animal Handling, Survival", //Gladiator - "A gladiator is as much an entertainer as any minstrel or circus performer, trained to make the arts of combat into a spectacle the crowd can enjoy. This kind of flashy combat is your entertainer routine, though you might also have some skills as a tumbler or actor. Feature: By Popular Demand Proficiencies: Acrobatics, Performance -", + "A gladiator is as much an entertainer as any minstrel or circus performer, trained to make the arts of combat into a spectacle the crowd can enjoy. This kind of flashy combat is your entertainer routine, though you might also have some skills as a tumbler or actor. Feature: By Popular Demand Proficiencies: Acrobatics, Performance", //Guild Artisan - "You are a member of an artisan’s guild, skilled in a particular field and closely associated with other artisans. You are a well-established part of the mercantile world, freed by talent and wealth from the constraints of a feudal social order. You learned your skills as an apprentice to a master artisan, under the sponsorship of your guild, until you became a master in your own right. Feature: Guild Membership Proficiencies: Insight, Persuasion -", + "You are a member of an artisan’s guild, skilled in a particular field and closely associated with other artisans. You are a well-established part of the mercantile world, freed by talent and wealth from the constraints of a feudal social order. You learned your skills as an apprentice to a master artisan, under the sponsorship of your guild, until you became a master in your own right. Feature: Guild Membership Proficiencies: Insight, Persuasion", //Guild Merchant - "Instead of an artisans’ guild, you might belong to a guild of traders, caravan masters, or shopkeepers. You don’t craft items yourself but earn a living by buying and selling the works of others (or the raw materials artisans need to practice their craft). Your guild might be a large merchant consortium (or family) with interests across the region. Perhaps you transported goods from one place to another, by ship, wagon, or caravan, or bought them from traveling traders and sold them in your own little shop. In some ways, the traveling merchant’s life lends itself to adventure far more than the life of an artisan. Feature: Guild Membership Proficiencies: Insight, Persuasion -", + "Instead of an artisans’ guild, you might belong to a guild of traders, caravan masters, or shopkeepers. You don’t craft items yourself but earn a living by buying and selling the works of others (or the raw materials artisans need to practice their craft). Your guild might be a large merchant consortium (or family) with interests across the region. Perhaps you transported goods from one place to another, by ship, wagon, or caravan, or bought them from traveling traders and sold them in your own little shop. In some ways, the traveling merchant’s life lends itself to adventure far more than the life of an artisan. Feature: Guild Membership Proficiencies: Insight, Persuasion", //Hermit - "You lived in seclusion — either in a sheltered community such as a monastery, or entirely alone — for a formative part of your life. In your time apart from the clamor of society, you found quiet, solitude, and perhaps some of the answers you were looking for. Feature: Discovery Proficiencies: Medicine, Religion -", + "You lived in seclusion — either in a sheltered community such as a monastery, or entirely alone — for a formative part of your life. In your time apart from the clamor of society, you found quiet, solitude, and perhaps some of the answers you were looking for. Feature: Discovery Proficiencies: Medicine, Religion", //Knight - "A knighthood is among the lowest noble titles in most societies, but it can be a path to higher status. One of your commoner retainers is a noble who serves as your squire, aiding you in exchange for training on his or her own path to knighthood. Your two remaining retainers might include a groom to care for your horse and a servant who polishes your armor (and even helps you put it on). Feature: Retainers Proficiencies: History, Persuasion -", + "A knighthood is among the lowest noble titles in most societies, but it can be a path to higher status. One of your commoner retainers is a noble who serves as your squire, aiding you in exchange for training on his or her own path to knighthood. Your two remaining retainers might include a groom to care for your horse and a servant who polishes your armor (and even helps you put it on). Feature: Retainers Proficiencies: History, Persuasion", //Noble - "You understand wealth, power, and privilege. You carry a noble title, and your family owns land, collects taxes, and wields significant political influence. You might be a pampered aristocrat unfamiliar with work or discomfort, a former merchant just elevated to the nobility, or a disinherited scoundrel with a disproportionate sense of entitlement. Or you could be an honest, hard-working landowner who cares deeply about the people who live and work on your land, keenly aware of your responsibility to them. Feature: Position of Privilege Proficiencies: History, Persuasion -", + "You understand wealth, power, and privilege. You carry a noble title, and your family owns land, collects taxes, and wields significant political influence. You might be a pampered aristocrat unfamiliar with work or discomfort, a former merchant just elevated to the nobility, or a disinherited scoundrel with a disproportionate sense of entitlement. Or you could be an honest, hard-working landowner who cares deeply about the people who live and work on your land, keenly aware of your responsibility to them. Feature: Position of Privilege Proficiencies: History, Persuasion", //Outlander - "You grew up in the wilds, far from civilization and the comforts of town and technology. You’ve witnessed the migration of herds larger than forests, survived weather more extreme than any city-dweller could comprehend, and enjoyed the solitude of being the only thinking creature for miles in any direction. The wilds are in your blood, whether you were a nomad, an explorer, a recluse, a hunter-gatherer, or even a marauder. Even in places where you don’t know the specific features of the terrain, you know the ways of the wild. Feature: Wanderer Proficiencies: Athletics, Survival -", + "You grew up in the wilds, far from civilization and the comforts of town and technology. You’ve witnessed the migration of herds larger than forests, survived weather more extreme than any city-dweller could comprehend, and enjoyed the solitude of being the only thinking creature for miles in any direction. The wilds are in your blood, whether you were a nomad, an explorer, a recluse, a hunter-gatherer, or even a marauder. Even in places where you don’t know the specific features of the terrain, you know the ways of the wild. Feature: Wanderer Proficiencies: Athletics, Survival", //Pirate - "You spent your youth under the sway of a dread pirate, a ruthless cutthroat who taught you how to survive in a world of sharks and lawlessness. You’ve indulged in larceny on the high seas and sent more than one deserving soul to a briny grave. Fear and bloodshed are no strangers to you, and you’ve garnered a somewhat unsavory reputation in many a port town. Feature: Bad Reputation Proficiencies: Athletics, Perception -", + "You spent your youth under the sway of a dread pirate, a ruthless cutthroat who taught you how to survive in a world of sharks and lawlessness. You’ve indulged in larceny on the high seas and sent more than one deserving soul to a briny grave. Fear and bloodshed are no strangers to you, and you’ve garnered a somewhat unsavory reputation in many a port town. Feature: Bad Reputation Proficiencies: Athletics, Perception", //Sage - "You spent years learning the lore of the multiverse. You scoured manuscripts, studied scrolls, and listened to the greatest experts on the subjects that interest you. Your efforts have made you a master in your fields of study. Feature: Researcher Proficiencies: Arcana, History -", + "You spent years learning the lore of the multiverse. You scoured manuscripts, studied scrolls, and listened to the greatest experts on the subjects that interest you. Your efforts have made you a master in your fields of study. Feature: Researcher Proficiencies: Arcana, History", //Sailer - "You sailed on a seagoing vessel for years. In that time, you faced down mighty storms, monsters of the deep, and those who wanted to sink your craft to the bottomless depths. Your first love is the distant line of the horizon, but the time has come to try your hand at something new. Feature: Ship's Passage Proficiencies: Athletics, Perception -", + "You sailed on a seagoing vessel for years. In that time, you faced down mighty storms, monsters of the deep, and those who wanted to sink your craft to the bottomless depths. Your first love is the distant line of the horizon, but the time has come to try your hand at something new. Feature: Ship's Passage Proficiencies: Athletics, Perception", //Soldier - "War has been your life for as long as you care to remember. You trained as a youth, studied the use of weapons and armor, learned basic survival techniques, including how to stay alive on the battlefield. You might have been part of a standing national army or a mercenary company, or perhaps a member of a local militia who rose to prominence during a recent war. Feature: Military Rank Proficiencies: Athletics, Intimidation - -", + "War has been your life for as long as you care to remember. You trained as a youth, studied the use of weapons and armor, learned basic survival techniques, including how to stay alive on the battlefield. You might have been part of a standing national army or a mercenary company, or perhaps a member of a local militia who rose to prominence during a recent war. Feature: Military Rank Proficiencies: Athletics, Intimidation", //Spy - "Although your capabilities are not much different from those of a burglar or smuggler, you learned and practiced them in a very different context: as an espionage agent. You might have been an officially sanctioned agent of the crown, or perhaps you sold the secrets you uncovered to the highest bidder. Feature: Criminal Contact Proficiencies: Deception, Stealth -", + "Although your capabilities are not much different from those of a burglar or smuggler, you learned and practiced them in a very different context: as an espionage agent. You might have been an officially sanctioned agent of the crown, or perhaps you sold the secrets you uncovered to the highest bidder. Feature: Criminal Contact Proficiencies: Deception, Stealth", //Urchin - "You grew up on the streets alone, orphaned, and poor. You had no one to watch over you or to provide for you, so you learned to provide for yourself. You fought fiercely over food and kept a constant watch out for other desperate souls who might steal from you. You slept on rooftops and in alleyways, exposed to the elements, and endured sickness without the advantage of medicine or a place to recuperate. You’ve survived despite all odds, and did so through cunning, strength, speed, or some combination of each. Feature: City Secrets Proficiencies: Sleight of Hand, Stealth -" + "You grew up on the streets alone, orphaned, and poor. You had no one to watch over you or to provide for you, so you learned to provide for yourself. You fought fiercely over food and kept a constant watch out for other desperate souls who might steal from you. You slept on rooftops and in alleyways, exposed to the elements, and endured sickness without the advantage of medicine or a place to recuperate. You’ve survived despite all odds, and did so through cunning, strength, speed, or some combination of each. Feature: City Secrets Proficiencies: Sleight of Hand, Stealth" }; } @@ -490,22 +472,24 @@ public class GUImanager extends JFrame { private DefaultButton createLoadNCharacterButton(int index) { - DefaultButton button = new DefaultButton(saves.get(index).getName()); + if(index < 0) return new DefaultButton("INDEX OUT OF BOUNDS"); - button.addActionListener( + DefaultButton button = new DefaultButton(saves.get(index).getName()); - e -> { + button.addActionListener( - lastPanel = currentPanel; - panels[6] = new ViewCharacterPanel(createBackPanel(), saves.get(index)); - currentPanel = 6; - clearAndReset(); + e -> { - } + lastPanel = currentPanel; + panels[6] = new ViewCharacterPanel(createBackPanel(), saves.get(index)); + currentPanel = 6; + clearAndReset(); - ); + } - return button; + ); + + return button; } diff --git a/src/ImageManager.java b/app/src/main/java/dnd/ImageManager.java similarity index 83% rename from src/ImageManager.java rename to app/src/main/java/dnd/ImageManager.java index 85a31aa..3ca8d06 100644 --- a/src/ImageManager.java +++ b/app/src/main/java/dnd/ImageManager.java @@ -1,4 +1,4 @@ -package src; +package dnd; import javax.imageio.*; import javax.swing.*; @@ -7,16 +7,14 @@ import java.awt.image.*; import java.io.*; import java.util.*; -import static src.AppConstants.*; +import static dnd.AppConstants.*; public class ImageManager extends FileManager { - private static JLabel[][] racePortraits; private static JLabel[][] classPortraits; private static ArrayList savesPortraits; public ImageManager() { - super(); racePortraits = new JLabel[9][]; classPortraits = new JLabel[12][]; @@ -29,88 +27,62 @@ public class ImageManager extends FileManager { } public JLabel getRacePortrait(int raceIndex) { + if(raceIndex < 1) return new JLabel(); - return racePortraits[raceIndex][new Random().nextInt(racePortraits[raceIndex].length)]; - + return racePortraits[raceIndex][new Random().nextInt(racePortraits[raceIndex].length)]; } public JLabel getClassPortrait(int classIndex) { + if(classIndex < 1) return new JLabel(); - return classPortraits[classIndex][new Random().nextInt(classPortraits[classIndex].length)]; - + return classPortraits[classIndex][new Random().nextInt(classPortraits[classIndex].length)]; } private void createSavesPortraits() { - File[] dir = new File(imgFilepath + "/saves/").listFiles(); - for(File file : dir) { - JLabel holder = image(file); holder.setOpaque(true); holder.setBackground(lightBrown); - savesPortraits.add(holder); - } - } private void createPortraitArray(JLabel[][] portraits, String category) { - - File imgDir = new File(imgFilepath + category + "/"); - - File[] masterDir = imgDir.listFiles(); + File imgDir = new File(imgFilepath + category + "/"); + File[] masterDir = imgDir.listFiles(); for(int i = 0; i < portraits.length; i++) { - File[] tmpDir = masterDir[i].listFiles(); - portraits[i] = new JLabel[tmpDir.length]; - int index = 0; - for(File file : tmpDir) { - portraits[i][index] = image(file); portraits[i][index].setOpaque(true); portraits[i][index].setBackground(lightBrown); //portraits[i][index].setBounds(bounds[3]); - index++; - } - } - } private JLabel image(File file) { - BufferedImage img; Image finalImg; JLabel picture; try { - img = ImageIO.read(file); finalImg = img.getScaledInstance(250, 375, Image.SCALE_SMOOTH); - } catch (IOException e) { - System.out.println("File " + file.getPath() + " does not exist."); img = null; finalImg = null; picture = null; - return null; - } picture = new JLabel(new ImageIcon(finalImg)); - return picture; - } - } diff --git a/src/InfoPanel.java b/app/src/main/java/dnd/InfoPanel.java similarity index 98% rename from src/InfoPanel.java rename to app/src/main/java/dnd/InfoPanel.java index 87b073e..af2ab18 100644 --- a/src/InfoPanel.java +++ b/app/src/main/java/dnd/InfoPanel.java @@ -1,10 +1,10 @@ -package src; +package dnd; import javax.swing.*; import javax.swing.border.EmptyBorder; import java.awt.*; -import static src.AppConstants.*; +import static dnd.AppConstants.*; public class InfoPanel extends JPanel { diff --git a/src/Intelligence.java b/app/src/main/java/dnd/Intelligence.java similarity index 98% rename from src/Intelligence.java rename to app/src/main/java/dnd/Intelligence.java index 3bc0f25..362a325 100644 --- a/src/Intelligence.java +++ b/app/src/main/java/dnd/Intelligence.java @@ -1,4 +1,4 @@ -package src; +package dnd; import java.io.Serializable; diff --git a/src/LoadCharacter.java b/app/src/main/java/dnd/LoadCharacter.java similarity index 99% rename from src/LoadCharacter.java rename to app/src/main/java/dnd/LoadCharacter.java index 09661ea..28f3554 100644 --- a/src/LoadCharacter.java +++ b/app/src/main/java/dnd/LoadCharacter.java @@ -1,4 +1,4 @@ -package src; +package dnd; import javax.swing.*; import java.awt.*; diff --git a/src/LoadCharacterPanel.java b/app/src/main/java/dnd/LoadCharacterPanel.java similarity index 96% rename from src/LoadCharacterPanel.java rename to app/src/main/java/dnd/LoadCharacterPanel.java index 7320817..02107ae 100644 --- a/src/LoadCharacterPanel.java +++ b/app/src/main/java/dnd/LoadCharacterPanel.java @@ -1,10 +1,10 @@ -package src; +package dnd; import javax.swing.*; import java.awt.*; import java.util.*; -import static src.AppConstants.*; +import static dnd.AppConstants.*; public class LoadCharacterPanel extends JPanel { diff --git a/src/MainMenuPanel.java b/app/src/main/java/dnd/MainMenuPanel.java similarity index 97% rename from src/MainMenuPanel.java rename to app/src/main/java/dnd/MainMenuPanel.java index 1b481d5..50d367a 100644 --- a/src/MainMenuPanel.java +++ b/app/src/main/java/dnd/MainMenuPanel.java @@ -1,4 +1,4 @@ -package src; +package dnd; import javax.swing.*; import javax.swing.border.BevelBorder; @@ -7,7 +7,7 @@ import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; -import static src.AppConstants.*; +import static dnd.AppConstants.*; public class MainMenuPanel extends JPanel { diff --git a/src/Skills.java b/app/src/main/java/dnd/Skills.java similarity index 99% rename from src/Skills.java rename to app/src/main/java/dnd/Skills.java index e7bbc92..e981b04 100644 --- a/src/Skills.java +++ b/app/src/main/java/dnd/Skills.java @@ -1,4 +1,4 @@ -package src; +package dnd; /** * 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 diff --git a/src/Stats.java b/app/src/main/java/dnd/Stats.java similarity index 98% rename from src/Stats.java rename to app/src/main/java/dnd/Stats.java index dc22fd8..0eb7245 100644 --- a/src/Stats.java +++ b/app/src/main/java/dnd/Stats.java @@ -1,4 +1,4 @@ -package src; +package dnd; public abstract class Stats { diff --git a/src/Strength.java b/app/src/main/java/dnd/Strength.java similarity index 98% rename from src/Strength.java rename to app/src/main/java/dnd/Strength.java index eded563..23ec22c 100644 --- a/src/Strength.java +++ b/app/src/main/java/dnd/Strength.java @@ -1,4 +1,4 @@ -package src; +package dnd; import java.io.Serializable; diff --git a/src/Tester.java b/app/src/main/java/dnd/Tester.java similarity index 96% rename from src/Tester.java rename to app/src/main/java/dnd/Tester.java index 32dc6ef..c1f29a3 100644 --- a/src/Tester.java +++ b/app/src/main/java/dnd/Tester.java @@ -1,5 +1,6 @@ -package src; +package dnd; +import dnd.species.*; public class Tester { public static void main(String[] args) { diff --git a/src/ViewCharacterPanel.java b/app/src/main/java/dnd/ViewCharacterPanel.java similarity index 97% rename from src/ViewCharacterPanel.java rename to app/src/main/java/dnd/ViewCharacterPanel.java index 1ba898e..458355a 100644 --- a/src/ViewCharacterPanel.java +++ b/app/src/main/java/dnd/ViewCharacterPanel.java @@ -1,9 +1,9 @@ -package src; +package dnd; import java.awt.*; import javax.swing.*; -import static src.AppConstants.*; +import static dnd.AppConstants.*; public class ViewCharacterPanel extends JPanel { diff --git a/src/Wisdom.java b/app/src/main/java/dnd/Wisdom.java similarity index 98% rename from src/Wisdom.java rename to app/src/main/java/dnd/Wisdom.java index 31c4b3c..62fd3ae 100644 --- a/src/Wisdom.java +++ b/app/src/main/java/dnd/Wisdom.java @@ -1,4 +1,4 @@ -package src; +package dnd; import java.io.Serializable; diff --git a/src/Wizard.java b/app/src/main/java/dnd/Wizard.java similarity index 99% rename from src/Wizard.java rename to app/src/main/java/dnd/Wizard.java index 76a2ee5..5639e10 100644 --- a/src/Wizard.java +++ b/app/src/main/java/dnd/Wizard.java @@ -1,4 +1,4 @@ -package src; +package dnd; public class Wizard implements ClassTemplate { diff --git a/src/deprecated/RoundedBorder.java b/app/src/main/java/dnd/deprecated/RoundedBorder.java similarity index 95% rename from src/deprecated/RoundedBorder.java rename to app/src/main/java/dnd/deprecated/RoundedBorder.java index 9a09f8b..518a898 100644 --- a/src/deprecated/RoundedBorder.java +++ b/app/src/main/java/dnd/deprecated/RoundedBorder.java @@ -1,3 +1,5 @@ +package dnd.deprecated; + import javax.swing.border.Border; import java.awt.*; diff --git a/src/Dragonborn.java b/app/src/main/java/dnd/species/Dragonborn.java similarity index 98% rename from src/Dragonborn.java rename to app/src/main/java/dnd/species/Dragonborn.java index 9e75281..d8c389c 100644 --- a/src/Dragonborn.java +++ b/app/src/main/java/dnd/species/Dragonborn.java @@ -1,4 +1,4 @@ -package src; +package dnd.species; public class Dragonborn implements Race { private final int speed = 30; diff --git a/src/Dwarf.java b/app/src/main/java/dnd/species/Dwarf.java similarity index 98% rename from src/Dwarf.java rename to app/src/main/java/dnd/species/Dwarf.java index e6a178e..69589b7 100644 --- a/src/Dwarf.java +++ b/app/src/main/java/dnd/species/Dwarf.java @@ -1,4 +1,4 @@ -package src; +package dnd.species; public class Dwarf implements Race { private final int speed = 25; diff --git a/src/Elf.java b/app/src/main/java/dnd/species/Elf.java similarity index 98% rename from src/Elf.java rename to app/src/main/java/dnd/species/Elf.java index 4da35d7..60ce0e0 100644 --- a/src/Elf.java +++ b/app/src/main/java/dnd/species/Elf.java @@ -1,4 +1,4 @@ -package src; +package dnd.species; import java.io.Serializable; diff --git a/src/Gnome.java b/app/src/main/java/dnd/species/Gnome.java similarity index 98% rename from src/Gnome.java rename to app/src/main/java/dnd/species/Gnome.java index 0c76921..194ddfc 100644 --- a/src/Gnome.java +++ b/app/src/main/java/dnd/species/Gnome.java @@ -1,4 +1,4 @@ -package src; +package dnd.species; public class Gnome implements Race { private final int speed = 25; diff --git a/src/HalfElf.java b/app/src/main/java/dnd/species/HalfElf.java similarity index 98% rename from src/HalfElf.java rename to app/src/main/java/dnd/species/HalfElf.java index c6b0171..20f710e 100644 --- a/src/HalfElf.java +++ b/app/src/main/java/dnd/species/HalfElf.java @@ -1,4 +1,4 @@ -package src; +package dnd.species; public class HalfElf implements Race { private final int speed = 30; diff --git a/src/HalfOrc.java b/app/src/main/java/dnd/species/HalfOrc.java similarity index 98% rename from src/HalfOrc.java rename to app/src/main/java/dnd/species/HalfOrc.java index 4031280..61fa3f5 100644 --- a/src/HalfOrc.java +++ b/app/src/main/java/dnd/species/HalfOrc.java @@ -1,4 +1,4 @@ -package src; +package dnd.species; public class HalfOrc implements Race { private final int speed = 30; diff --git a/src/Halfling.java b/app/src/main/java/dnd/species/Halfling.java similarity index 98% rename from src/Halfling.java rename to app/src/main/java/dnd/species/Halfling.java index fc58e32..9ae3e9d 100644 --- a/src/Halfling.java +++ b/app/src/main/java/dnd/species/Halfling.java @@ -1,4 +1,4 @@ -package src; +package dnd.species; public class Halfling implements Race { private final int speed = 30; diff --git a/src/Human.java b/app/src/main/java/dnd/species/Human.java similarity index 98% rename from src/Human.java rename to app/src/main/java/dnd/species/Human.java index 948e486..8e269c0 100644 --- a/src/Human.java +++ b/app/src/main/java/dnd/species/Human.java @@ -1,4 +1,4 @@ -package src; +package dnd.species; public class Human implements Race { diff --git a/src/Race.java b/app/src/main/java/dnd/species/Race.java similarity index 97% rename from src/Race.java rename to app/src/main/java/dnd/species/Race.java index 423e1c2..1fe4077 100644 --- a/src/Race.java +++ b/app/src/main/java/dnd/species/Race.java @@ -1,4 +1,4 @@ -package src; +package dnd.species; public interface Race { diff --git a/src/Tiefling.java b/app/src/main/java/dnd/species/Tiefling.java similarity index 98% rename from src/Tiefling.java rename to app/src/main/java/dnd/species/Tiefling.java index a90a8e7..b8e10c5 100644 --- a/src/Tiefling.java +++ b/app/src/main/java/dnd/species/Tiefling.java @@ -1,4 +1,4 @@ -package src; +package dnd.species; public class Tiefling implements Race { private final int speed = 30; diff --git a/app/src/main/resources/SanSalvi.ttf b/app/src/main/resources/SanSalvi.ttf new file mode 100644 index 0000000000000000000000000000000000000000..e0311ea1d57702e265419308a7e0f2044d6a4a60 GIT binary patch literal 41296 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 DSjQd) literal 0 HcmV?d00001 diff --git a/app/src/test/java/dndcharacterbuilder/AppTest.java b/app/src/test/java/dndcharacterbuilder/AppTest.java new file mode 100644 index 0000000..ad9559e --- /dev/null +++ b/app/src/test/java/dndcharacterbuilder/AppTest.java @@ -0,0 +1,14 @@ +/* + * This Java source file was generated by the Gradle 'init' task. + */ +package dndcharacterbuilder; + +import org.junit.jupiter.api.Test; +import static org.junit.jupiter.api.Assertions.*; + +class AppTest { + @Test void appHasAGreeting() { + App classUnderTest = new App(); + assertNotNull(classUnderTest.getGreeting(), "app should have a greeting"); + } +} diff --git a/gradle.properties b/gradle.properties new file mode 100644 index 0000000..18f452c --- /dev/null +++ b/gradle.properties @@ -0,0 +1,6 @@ +# This file was generated by the Gradle 'init' task. +# https://docs.gradle.org/current/userguide/build_environment.html#sec:gradle_configuration_properties + +org.gradle.parallel=true +org.gradle.caching=true + diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar new file mode 100644 index 0000000000000000000000000000000000000000..c1962a79e29d3e0ab67b14947c167a862655af9b GIT binary patch literal 62076 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 literal 0 HcmV?d00001 diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties new file mode 100644 index 0000000..37aef8d --- /dev/null +++ b/gradle/wrapper/gradle-wrapper.properties @@ -0,0 +1,6 @@ +distributionBase=GRADLE_USER_HOME +distributionPath=wrapper/dists +distributionUrl=https\://services.gradle.org/distributions/gradle-8.1.1-bin.zip +networkTimeout=10000 +zipStoreBase=GRADLE_USER_HOME +zipStorePath=wrapper/dists diff --git a/gradlew b/gradlew new file mode 100755 index 0000000..aeb74cb --- /dev/null +++ b/gradlew @@ -0,0 +1,245 @@ +#!/bin/sh + +# +# Copyright © 2015-2021 the original authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +############################################################################## +# +# Gradle start up script for POSIX generated by Gradle. +# +# Important for running: +# +# (1) You need a POSIX-compliant shell to run this script. If your /bin/sh is +# noncompliant, but you have some other compliant shell such as ksh or +# bash, then to run this script, type that shell name before the whole +# command line, like: +# +# ksh Gradle +# +# Busybox and similar reduced shells will NOT work, because this script +# requires all of these POSIX shell features: +# * functions; +# * expansions «$var», «${var}», «${var:-default}», «${var+SET}», +# «${var#prefix}», «${var%suffix}», and «$( cmd )»; +# * compound commands having a testable exit status, especially «case»; +# * various built-in commands including «command», «set», and «ulimit». +# +# Important for patching: +# +# (2) This script targets any POSIX shell, so it avoids extensions provided +# by Bash, Ksh, etc; in particular arrays are avoided. +# +# The "traditional" practice of packing multiple parameters into a +# space-separated string is a well documented source of bugs and security +# problems, so this is (mostly) avoided, by progressively accumulating +# options in "$@", and eventually passing that to Java. +# +# Where the inherited environment variables (DEFAULT_JVM_OPTS, JAVA_OPTS, +# and GRADLE_OPTS) rely on word-splitting, this is performed explicitly; +# see the in-line comments for details. +# +# There are tweaks for specific operating systems such as AIX, CygWin, +# Darwin, MinGW, and NonStop. +# +# (3) This script is generated from the Groovy template +# https://github.com/gradle/gradle/blob/HEAD/subprojects/plugins/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt +# within the Gradle project. +# +# You can find Gradle at https://github.com/gradle/gradle/. +# +############################################################################## + +# Attempt to set APP_HOME + +# Resolve links: $0 may be a link +app_path=$0 + +# Need this for daisy-chained symlinks. +while + APP_HOME=${app_path%"${app_path##*/}"} # leaves a trailing /; empty if no leading path + [ -h "$app_path" ] +do + ls=$( ls -ld "$app_path" ) + link=${ls#*' -> '} + case $link in #( + /*) app_path=$link ;; #( + *) app_path=$APP_HOME$link ;; + esac +done + +# This is normally unused +# shellcheck disable=SC2034 +APP_BASE_NAME=${0##*/} +APP_HOME=$( cd "${APP_HOME:-./}" && pwd -P ) || exit + +# Use the maximum available, or set MAX_FD != -1 to use that value. +MAX_FD=maximum + +warn () { + echo "$*" +} >&2 + +die () { + echo + echo "$*" + echo + exit 1 +} >&2 + +# OS specific support (must be 'true' or 'false'). +cygwin=false +msys=false +darwin=false +nonstop=false +case "$( uname )" in #( + CYGWIN* ) cygwin=true ;; #( + Darwin* ) darwin=true ;; #( + MSYS* | MINGW* ) msys=true ;; #( + NONSTOP* ) nonstop=true ;; +esac + +CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar + + +# Determine the Java command to use to start the JVM. +if [ -n "$JAVA_HOME" ] ; then + if [ -x "$JAVA_HOME/jre/sh/java" ] ; then + # IBM's JDK on AIX uses strange locations for the executables + JAVACMD=$JAVA_HOME/jre/sh/java + else + JAVACMD=$JAVA_HOME/bin/java + fi + if [ ! -x "$JAVACMD" ] ; then + die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." + fi +else + JAVACMD=java + which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." +fi + +# Increase the maximum file descriptors if we can. +if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then + case $MAX_FD in #( + max*) + # In POSIX sh, ulimit -H is undefined. That's why the result is checked to see if it worked. + # shellcheck disable=SC3045 + MAX_FD=$( ulimit -H -n ) || + warn "Could not query maximum file descriptor limit" + esac + case $MAX_FD in #( + '' | soft) :;; #( + *) + # In POSIX sh, ulimit -n is undefined. That's why the result is checked to see if it worked. + # shellcheck disable=SC3045 + ulimit -n "$MAX_FD" || + warn "Could not set maximum file descriptor limit to $MAX_FD" + esac +fi + +# Collect all arguments for the java command, stacking in reverse order: +# * args from the command line +# * the main class name +# * -classpath +# * -D...appname settings +# * --module-path (only if needed) +# * DEFAULT_JVM_OPTS, JAVA_OPTS, and GRADLE_OPTS environment variables. + +# For Cygwin or MSYS, switch paths to Windows format before running java +if "$cygwin" || "$msys" ; then + APP_HOME=$( cygpath --path --mixed "$APP_HOME" ) + CLASSPATH=$( cygpath --path --mixed "$CLASSPATH" ) + + JAVACMD=$( cygpath --unix "$JAVACMD" ) + + # Now convert the arguments - kludge to limit ourselves to /bin/sh + for arg do + if + case $arg in #( + -*) false ;; # don't mess with options #( + /?*) t=${arg#/} t=/${t%%/*} # looks like a POSIX filepath + [ -e "$t" ] ;; #( + *) false ;; + esac + then + arg=$( cygpath --path --ignore --mixed "$arg" ) + fi + # Roll the args list around exactly as many times as the number of + # args, so each arg winds up back in the position where it started, but + # possibly modified. + # + # NB: a `for` loop captures its iteration list before it begins, so + # changing the positional parameters here affects neither the number of + # iterations, nor the values presented in `arg`. + shift # remove old arg + set -- "$@" "$arg" # push replacement arg + done +fi + + +# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' + +# Collect all arguments for the java command; +# * $DEFAULT_JVM_OPTS, $JAVA_OPTS, and $GRADLE_OPTS can contain fragments of +# shell script including quotes and variable substitutions, so put them in +# double quotes to make sure that they get re-expanded; and +# * put everything else in single quotes, so that it's not re-expanded. + +set -- \ + "-Dorg.gradle.appname=$APP_BASE_NAME" \ + -classpath "$CLASSPATH" \ + org.gradle.wrapper.GradleWrapperMain \ + "$@" + +# Stop when "xargs" is not available. +if ! command -v xargs >/dev/null 2>&1 +then + die "xargs is not available" +fi + +# Use "xargs" to parse quoted args. +# +# With -n1 it outputs one arg per line, with the quotes and backslashes removed. +# +# In Bash we could simply go: +# +# readarray ARGS < <( xargs -n1 <<<"$var" ) && +# set -- "${ARGS[@]}" "$@" +# +# but POSIX shell has neither arrays nor command substitution, so instead we +# post-process each arg (as a line of input to sed) to backslash-escape any +# character that might be a shell metacharacter, then use eval to reverse +# that process (while maintaining the separation between arguments), and wrap +# the whole thing up as a single "set" statement. +# +# This will of course break if any of these variables contains a newline or +# an unmatched quote. +# + +eval "set -- $( + printf '%s\n' "$DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS" | + xargs -n1 | + sed ' s~[^-[:alnum:]+,./:=@_]~\\&~g; ' | + tr '\n' ' ' + )" '"$@"' + +exec "$JAVACMD" "$@" diff --git a/gradlew.bat b/gradlew.bat new file mode 100644 index 0000000..93e3f59 --- /dev/null +++ b/gradlew.bat @@ -0,0 +1,92 @@ +@rem +@rem Copyright 2015 the original author or authors. +@rem +@rem Licensed under the Apache License, Version 2.0 (the "License"); +@rem you may not use this file except in compliance with the License. +@rem You may obtain a copy of the License at +@rem +@rem https://www.apache.org/licenses/LICENSE-2.0 +@rem +@rem Unless required by applicable law or agreed to in writing, software +@rem distributed under the License is distributed on an "AS IS" BASIS, +@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +@rem See the License for the specific language governing permissions and +@rem limitations under the License. +@rem + +@if "%DEBUG%"=="" @echo off +@rem ########################################################################## +@rem +@rem Gradle startup script for Windows +@rem +@rem ########################################################################## + +@rem Set local scope for the variables with windows NT shell +if "%OS%"=="Windows_NT" setlocal + +set DIRNAME=%~dp0 +if "%DIRNAME%"=="" set DIRNAME=. +@rem This is normally unused +set APP_BASE_NAME=%~n0 +set APP_HOME=%DIRNAME% + +@rem Resolve any "." and ".." in APP_HOME to make it shorter. +for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi + +@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m" + +@rem Find java.exe +if defined JAVA_HOME goto findJavaFromJavaHome + +set JAVA_EXE=java.exe +%JAVA_EXE% -version >NUL 2>&1 +if %ERRORLEVEL% equ 0 goto execute + +echo. +echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:findJavaFromJavaHome +set JAVA_HOME=%JAVA_HOME:"=% +set JAVA_EXE=%JAVA_HOME%/bin/java.exe + +if exist "%JAVA_EXE%" goto execute + +echo. +echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:execute +@rem Setup the command line + +set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar + + +@rem Execute Gradle +"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %* + +:end +@rem End local scope for the variables with windows NT shell +if %ERRORLEVEL% equ 0 goto mainEnd + +:fail +rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of +rem the _cmd.exe /c_ return code! +set EXIT_CODE=%ERRORLEVEL% +if %EXIT_CODE% equ 0 set EXIT_CODE=1 +if not ""=="%GRADLE_EXIT_CONSOLE%" exit %EXIT_CODE% +exit /b %EXIT_CODE% + +:mainEnd +if "%OS%"=="Windows_NT" endlocal + +:omega diff --git a/settings.gradle b/settings.gradle new file mode 100644 index 0000000..c632bb1 --- /dev/null +++ b/settings.gradle @@ -0,0 +1,17 @@ +/* + * This file was generated by the Gradle 'init' task. + * + * The settings file is used to specify which projects to include in your build. + * + * Detailed information about configuring a multi-project build in Gradle can be found + * in the user manual at https://docs.gradle.org/8.1.1/userguide/multi_project_builds.html + * This project uses @Incubating APIs which are subject to change. + */ + +plugins { + // Apply the foojay-resolver plugin to allow automatic download of JDKs + id 'org.gradle.toolchains.foojay-resolver-convention' version '0.4.0' +} + +rootProject.name = 'dnd' +include('app') diff --git a/src/App.class b/src/App.class deleted file mode 100644 index 5a19e0a90c8d91596025b2f081b16fca65f7bf92..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 331 zcmYLEO-sW-5Pg%R-84d7_1N;CH6d~xL8cBqo9Ra93q|naXDb^Lgq2;cR{VFheC5?J)kfW| zt6bF&@}FEuZ3yG|CEXq}Yin)F(@Dn8v*o%j)U~$GK6_0q4M&JLhJ6mm24NiWbjX#s zc8)iocWwwfjCKvU=wTOo+*|6DrPd<)f_U1Xm!5bZ2)3Gt`QVH`s|M(^YM*BZ2Y+uY BIOG5T diff --git a/src/AppConstants.class b/src/AppConstants.class deleted file mode 100644 index 1fa22222389ac4ca7e062f6d2988dc13a1cbff25..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1881 zcmaJ>ZC4vb6n-|m>=K41tY}3neSua$n?R*S1Y47s6l@CBAXux`$!18FYPujDCP5ph$D_+6O3U57f!{N4kIZV z28OFbJ_>`T2<4%H8#BdT`jQM?zq&Gec4-JnjGC|+Uc(rrjY21#X*P3#A4%@Z$Utnf zWWYWfY2gh6Rx1)=s^W$!&zlV6DhX?F*Dtu9XmVMz>F5&-Z>vpTZ1B3E)DD+BuB;t@ zLDxWFL=kjs9 zi}y_2WJn=x;DVNhAINkr@Pd$ZuLvio2m{mqE!#1DMQv$;;TGPf{d#V-CNqvBd`bGX zb?Q+q+}69uX7kHg6}QCjfr^XkxNI04_!d6YoW;zYr6t8#WmGN1u^OV%Vcb)U+w->; z7nT(x!;n>sp$ZS{9m*$)vQU`M&u0{+z;Ittn4*YCYSs|xu+H$QatvgPncM?KEiydR zD`k&6brYMU<*`BqlH9^)w3`z5OWfOcug`9)wA&0j_>zuV6TBiq zmB>J%r;u9ET7JdwL=i`#R(b81t5ST!@U8YVdC03FZ`QWNGpRh^F>vM471&*L7%KXU z<(8Cz-~M8MPTy>z==x%#)hLT_iIQ}PfqaL6Xw(i=%mPT&nvl7tXQB<7&X$VP()geC{4|n zwm{c5ermZ}2`MReE$q{+l3R6OrBo9_M$}?#-SPDDf~-q~2I0Wm3mDJo#lS8-l^ZZ&q1vSy0~Dry&u#N1 zhK`W1U)Ok1<14%c9N|*OxT1`!9b;M<*X@~?m^;F}y{Peyy{vJ?zN_(LJEt-K2iA`8 z;7@EkwjcE;Z@$3iNBE*`_9dsZ`M7J2Y4hu@nb79b(`LDMtSspd4AZej=q*8~AH^Kq z#}eJeJvzXBOkk6GWQROYF-ZzthQt;8f~)uy*YG<{_de7pM+`3Z2*=2-lUU#DXQZDk P9FQkYtIzNQe!}>_nr^e_ diff --git a/src/Background.class b/src/Background.class deleted file mode 100644 index 1e9ab69525979158b2b49a8e64994dbaf3cce055..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8350 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 r;_v?N)J3K4e(q1Kj9IyheYAWZ;J+@hOO7oABtu diff --git a/src/BasicNavPanel.class b/src/BasicNavPanel.class deleted file mode 100644 index 1de75ed8553a155d8968d488635c9ca344e177ee..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2221 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 diff --git a/src/ChooseAbilityScoresPanel.class b/src/ChooseAbilityScoresPanel.class deleted file mode 100644 index 08d0e56f4cb10ad481d1fbb38622b165c8f71d79..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5347 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 Dj#8<( diff --git a/src/Constitution.class b/src/Constitution.class deleted file mode 100644 index 4b2f62f84f6e40b42b21d974aa169d67308ac958..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1321 zcmaJ>T~8B16g^W4TgpOdK@lrbl#jL|RTNQ*CW;|60evXJ7+)NgfetJ?&F)Zx@rU>$ ze9%NN;lUr^k22nA7g(V2p?7xfoO|ZpGxzq--;>_}o?|hI7&Np@oQ>JZcE`Cj%zlqV~C+=N9a?3GpR}f z!we%Ug1fploeMPImmZ(aHKgWlZd>_|m@x!d8@DjR&_@KXMd0|d-b#5eUs&Dc4PJ7& zw?k$7lwLVQ!i?I;VT@sDpYI7O)8YD^)U{^8+%w|j^Oefg*fw+)?ow^dTcj#gg)g}) zKl4qOG%^}&(6XeqXqQ@*o_KSxzbX9n)_H;w4&^ktU(he1RV!hJUgakuNj$(q3$v#5M-1cV!bq>7_C%;pOO0jj zXyqR=e9cEx2!Soq74B`hA{bv)YVV+4j=(~pBc2O^>xXsG2L2&}f4jLW99@pe9a1cD z*R4t|$_dOdlwP)aGS^gQA;)rGa;GiS+C}<-9Mr`X&lCQV%Y#4!7M?OpToIyOeHIoN zZvP)jBh?ZEW7L%~Fx(*ZU=@qmWAq*& z{e#>LlVmf9lTDJf(T!f(r|4t~Lm|lst&9+z#hs%)DUkA*QP)5~z^c}-A5rAHU5gEf{JfU5ZzUJ`^ HWeooV2)ZO0 diff --git a/src/DefaultButton$1.class b/src/DefaultButton$1.class deleted file mode 100644 index f7866a05e33090bf95b41ae7e519ac4df0537f10..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 902 zcmah{QBM;=5dOBUz4m%7ZBY{kGB|P}Hy{>R@-D~dlQ2vVl z!UQ$(!5`p{GR|%r3_`-g?e5Hc-^_e-^ZU=wUjSa%7^@zw*oHrTki&k!c#a2t7xWSN%ML@~Lkb!;BIp-bR z)Cni#a}o^M!YzhH(;WY#TH;tp)#`;*qU*;>ND(p2)i2T4*kj0a!l7W8>H1P^C!>Lg zcKIM6k2BI4I)U#U=~kBN-ODPtx>#E$n&5XL5tB5AqM^ShDcsnTuq%~_bhu!`?q}cV zEcO-mj(U7Nt!?+iB=W?juN$eJQ~X$WLH)YY3&Pl!`#qr!!l8qP9#O%}w-b&=p`=M} zi&(u0WBO6fTS;^11f05yu}rIx1H%GXxvbZNHb#F1+$QfLy;ca3qT6n+eFJO$fc2Fu zhC6g-=?0$BxrDn@`~rD2p8XGdPJrdBVe16DcQx!4!B);-HL`TkT=Nv{JBt5m+s3~E z3oc<+&lv3~qpBIFsD2@VhC8RZDI>3hG`+WAqf3jtgBn?BunID`Z$J<5knRj^W*trA NDPfIndzze{e*sXSvG@Q0 diff --git a/src/DefaultButton.class b/src/DefaultButton.class deleted file mode 100644 index c06735a6a1161b5f40918fc883a1ba037635d869..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1381 zcmZux>r&K67(LC5gc+KyF#@nR+*5Y zR3s)1r9bdDKI!>pQ-#{X6l45U#EaLx z(JEB2z{I|tt4+po4ghk2TN1Z%M_`C~r*(bl`e9o6Vr4B$^`69U_+6m9o?4_9g_`)i zBASV`hW901M(0?mmO+i~+d~SQT(R&_V0^#z)}z={vGcgq*4qo|xQsb0nB=Pzt1R-# zeDheMh9?3gb4V$YQdx*yALnA(YM$ew#53a_D^_ijojInu#FCjS$7<6Je9zVNXR#W2 z?1t)osFpjebrrvH*Nt)eJk>}o$@`IclgviciJPkC8^GuRyHA_+c+kr<#*#8Rbf8=e zc`nt!O%j!0f_v!UwG?dWd5(HH=DlRQ%&!}qH|vA;)DDE*g~fN^TgrIBb`(Xn!(@!0 z#IFGyCG#a@&bP@HM3n8qUl=z0J?;2y7-mdL>Cu-BwvPwD;VTO=rK3?5HeYYeB}`GHIk=Eo*|k4kDUC0vnJCS z`ybe=_71Lg;n;;PZc^rM7qgt7TkYkugZVBVu@+DHKHuBgI2C|fRD8>7uCOxixXD#a cVGR!6vs$mY-h&3-urD&2O(biZjyM3m14t$tt^fc4 diff --git a/src/DescriptionPanel.class b/src/DescriptionPanel.class deleted file mode 100644 index f498f5d317ecfbe66c8819156824c96880d9ee1e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5947 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 diff --git a/src/Dragonborn.class b/src/Dragonborn.class deleted file mode 100644 index eb9eaa007cdd427918c87e53eb9ec2aeb005c026..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1208 zcma)6YflqF6g|^zyY0HAYk8ZMd%i1iqyJUB3{84_; z#A0I9AK;HNp4k!#O+S!k=g!c6_?L-sD-}cwo(`;qT+Qro}0p?K#GJ-&vlxT;);%|xF(R6nz~lY4g|*E zZx3YlNmeCxTE}&XO$HyGb~}(qE9kg^S#q}Qu+p{ySzRohDUXt?8gAm2irYHwU|t|Q zpg$?fu)gMWj@tH))v*O8&XJtaP}EV1G=#q8gn^W`pyQrQWsZFBgVS_umtUY_iL#`B zZ>=U7GZoJbLdy;Jt#;Q|csm6-R0ZM{?|^{pw&U76-A=>y_pC;n8I_{?#k`uW{vm69 z|I^&sixdb<7E2=xqowjpky8RX=i38^4KAx^)zVa^Hf!t>C!K5-di`SyXf?0vH|;l$ z6qOx3hb3tv=4e3-0*go@C!Y=HWu7dC`&{#VoUR`*NAsdRUSt$``B9{Uj2f|gryL)0 z^^SAFxM2Q(FpWYFs%cbv$e4-WFzQM!SF6W!6SW?uOof>q^4|y-Smu}~4JaqhpGG1B z89stBn3N>&2=gaRW*KFZlzEJqW6XU$Wsov}365Dj<|rjiGs>)DRKE-X^W1nc0$3OZ z%8pO*jH6_nVU&ys^E>ViH4!Z!!QkJ^d?vm~n{ZW3< z#A0I9AK;HNp4m1$ntm`%@141G?z!jQne3mxKYjyviggVUL{-FeD2NMWj;s@_RJYt( zX?y?3t_A|}RmXLLX9CeeaW{zsk}5PESD*_d{bsfF;-l3(6j1zQ+ddEw8xl02BP|i} zhV^N^W~&&yL~aI6$E_tWL`2zZG(0zf5rKr{I&u8>lH#h4Ysj&Pl+&_mwl6UBZu4AW zhh#-!$8?NKY~26g)a$bi~_m?US-4$5`Qm)V8lh4e7EqTwc{Rm|wPg;|00Iej-N z#eCCg9M|nFt6>WaUn04np`fD}Y6zN^6ZlfroQ`=JN*y=7L#OK4F8{uYMaq(+dt+6} zm@0d&A6Ra%Yt>tJloyku5qko$vUfm0ded?3tyW{-Ztht7bw*T*>Ll}4Habn3o%ttu zv=b^27%3F{42&a{J%y7J(7E0`pKylT*B8}ts0^)}tP&%gEEag3wgoiPYc;F(D@Tgb z!k4fpCx|I_AA!IE;>gO!!gYzAMR13EK8>^eUB)=K@QimDdft2JIXrreSiVl$d)&R{ zTF}oM-yw`lt_{@~6nkx?4CNOxm1s6=R$|#WT5Ek!cVq zOk)6Z)Ff~pv)w9_^s-9AIK{*%roNmpNFBg1Z5j_~rKWLu8I4iM=N@F9ClAk%V_jr4 zlj{Y_l8^A1R#HxMfr{}Bw|lEgmCJph`CjM(p-=ikM|+`5gs$|38okhELRb0y=xCkc hFlGC?@>8osmF-GQ+3w9)BjVYAkM||fYh;Yz`9JtzzSsZ& diff --git a/src/Elf.class b/src/Elf.class deleted file mode 100644 index 842c6520c6e5c08725ec844bb7bfc9b0216586a4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1218 zcma)4+fEZv6kVsCcG^0%rCd}l6$G&zkSbo0i_``U2?65}V&l_LhB`Q%A)P5Pev=QH zSWJxi0e%dhU|eTPxHNq*P4_-?&f06Qz0Udb_s4Gl%c!IfK~#mJA%?g>_P{(cOOEN* zOIy1KRxJ>SFWIggtO!I4#hoM)NUBI_xB^W;^_#WQnzJtu^A9a+Pe80o$W;v)c^+?= zAIo)1Mc*ZABWT)gJ%N5ADqf@Exd{w%z2+R*{(DJqO~ZBE5J*ZXEwgU<0{!nc&ee4& z7A1B>!>Gi@{SUU|_;RAWhMO1{NYt&M;+VdyE)*}6hntHj+`^=aDGj$VEs!~fk zN7AsZ?Uf9xX`7Dy$=r3=D_!wiKQP^3$8=g&l-HGKh@1#06>pD#%!ch+o2|yK)!gos zsFW*d!@FAVjBj-ACCQ`hP@BMDq1eMpnk}adJrvNm-Z=L@%g@&r=b+u(DjV#gkWMxW zypACPDZ^_uYt~C!&XM5zn3E%7g04jPyNeRy$jK)Jf%}{+f_Z-P$((&Z;2s?f&v?6G z=8Fh3ZDmdo%QwsTkY8`P7RC-Ob%(6>DKgQTGCcd08NFBfsV+KzcrKVA4 zxvNmf=Pu+JPoAD3M^2H^Y`z;f#iIp0W0aJ#Oj5@5Z@AOleTGMiJ)y(h(0M|adP0Y~ zp$mjA_k`-*&{aZL@SIUS5&77HYo;mNCbLRVxuipSXz-9p%WOEoRVjL3!Ge>eDYrYKH zwPy!Ms$~Tx?(0C?hXUD3^|{0IMNFa~kZ&tn_hl3b%vGw5-#26DRsls!=TIu5j2VIQ zNL*l=_dVV1`D#ygmB9R8Njz(G(B8`7jKEZ6TD2YB?pS4Vm=~CJj##Ftm_S;U!&zpC zHFQ|>l+n`HALN10#F?l20%BKS+*bqT^GO|Tw>2YU_3)6U+|YsA>vs>7X(m@ntZiFG zEu(u@hk<}|?3=J{R20RIg-Z4HA8#I(%MPA)Wk*TdCoV8a*VCb5!R_~@Z45T!jjop=2)%lJgY9%`o(nQ<>w^zN^_g*1k`%`N&FR*}5n1`np%| zgu3NwD9OWt46JOcdPlX6>8LbZ6Fn#2r>qSOaXa()~+82n= z+z2djbw3U$VT>sSF2P-L_#&;tGvX81gmtMvF@ejt!u9{$5{cy$oGWZ4h3+c3tGG6* zoBcRa-z^f?Q*ayPZltL1F1ghd+&ywPQ*e*SRZ?)< mor3eo-ASSQlHB^Qxh?bLen)=o1i2GTjsBW9jMiLT*!T%2)yyLR diff --git a/src/FileManager.class b/src/FileManager.class deleted file mode 100644 index bc98be248c66edc8ee3bf6e56c87f4a720e15421..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4179 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 diff --git a/src/HalfElf.class b/src/HalfElf.class deleted file mode 100644 index 49e042396ddf85a47561961b4e56f1e65a881669..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1273 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 ml(HR0^pi@aFgRaPr( zr?0ei^JvmX(nr!)((+4wrOu4p!4v=5nf}TYO!vG%IGveN&?At%F@9UW zqc7!Ji>6i2y)>@R7>!~aDtZ-Y8unnXz&>fHyg(aUmi9P$&6u^!XT3b2_4hS5Om*?89*~ndR9DRA*Y`H2D2ulwRY8b$msMyl)7!MWcwCD39 zYQ-KL5{O8@R4PBF;RufMhMHsO?v|_GEdtqecYl4u4V_R_U5AJiGgCbn6o`7xOT$lU z__9Q|-#1*{;hTcvgzI5YS9ELEUQlriVY#F=WH2P4SjLiDwp{v~E@#RLh6OZF%e1|W z#W8}Mf~Pe+gM5&H3(aQ9wpy-kNx*x}g}TgbQ+MYC61yEwkQ1jgoW`iYz=A$+P`ReN z*GzYAo0+H5yEQYrk5puFM$+mzqTfwrN=g(poW(hTc!Oz_&e6~P>5R{eTo77Og800K zui^q>H6^PAjs-S1WqcPNVWo-^zNX-!hD&&XG4CcWuWlLc<);2>n?@t)>zOHuWLd*Y zcv(PgnDse#%&`|OV(Le!FS@ys-LM_{RYFC>1TG8gp_wtgHeYw_wlzx@1^zvh&M@Kx zzOLa4s;nn{mQp*Axjb{*sJX?=^#laIArmnraHb1(yV35NfNx@2!F3Hc@Gait$L^s= z%)Htx)9(n$PDe(%!kLradn&oH_N`lnW6XMrMFrnsm3jP=BHp2jo6r@^XsCe}AKQA{ z#Q?KhH{5DXZ_uL0&>G=Srpx7W5XzQW-gRrU?4{$EFD})Lrfb?(9CI)g+}1FU#%2-u zmAKq;jRk^iw^=bk@l$z{1?sX)4Sj*h%fixNqsi)`Gm~Cf^ryQ(nP8VZrJ@B_L0iKe z$!Wh2?X*clO?gAZQn0iIx!)%}h{`qFQn85FWMO=FCrNx@B}q#7zI^`!35b{KO;$^F zwij}?YSt~?Z94=l>$72JM?AYjFX++di%fUPo~2UXxM>*^?S&b`xvI}JlexXHLOewD?FBE7+^xot=5|Iws4kYPX%5AsYah;UN*s zjSWta8+v4bGRt$H}o^AET@GBMX;e7?amX-1wb_9=bUj9w%jy-P#4cYHvm-L!z zJIeweZZD`n&^P)bTQ57%v2oj;Z#RoRuG>5Nwv!!-SC^Yc7x5r|&%$PH?>14=8;z>z z8k|PI6CAKPZ+7K+@FDpt1UG-+u$0gYiosdiXboDnJ7_GiVUBPHlr76}ykrV7!t01}&rb=iKjMi= z4Z-K>p*4to@z0=qiugXwd-km(F};TVPmvs2MLdz};4n9RiO1!pgD3t*MS&l4eG)xf z`w>AB8V+(dfTKv^1P0m4sTg8hVjISb@ighq~Z6zW;dGId@L}(ijCvgBd2LBA# zJh}fYzvNDH!sRfI=kNxl2M~HdT%rn81#j{v80Wukz_P4&tlnRG!@(U45ey#R7u4OJ*l3J(Rg@NO{&TGU7Shv zB-MPOmty&(GL-6Na8>_LUIrL!{U}!yv7$1*f2>5ge(*5Lg2$|LWZ3hJj4i@g?RiFb$ zRK$cRM8v&yl&06QIDK*r%WL>vA(D#RqeU>bei%VkN6^cYo4i5id4q3iB)Ng(xWz2j z8NeKd8SMxxBGU9?>_h0P0^>hODY&WN+vMH5G!nwk@e4lt`Tv)^=(pbbfw%r1f8-mL Mr+>mn_zP111!U^>MgRZ+ diff --git a/src/InfoPanel.class b/src/InfoPanel.class deleted file mode 100644 index 65faad6f8eee46e541db3354e85e48fdaa30959e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2369 zcmbtVYgZFj6x~CDfp|d#Uj?x~YE42kzFMp(6%Yy-lp0Dz>tm8!aWt73Cle4`?MwUm z++WZy{ajZGYt>bMK>tVoL|0eaeI|*dE&b5dtd%=6=bYJhpMB1p`}6NVz5s9*Uq{h` zPy}IxR%|lReb-zvAEe65mc5voo;7VPnncX_9)X7hqf=pv0Ce980?+Gm-m_faa_q9W zw<>g_hkNIoid`rh*j~pmm;Kabo%ab>)I(8*ZdceL+@r40&1k>kig}m9D?v(mPm@#g z2IB5h*e&jMPnVn}JyI;nwtEy_#a;ud(8R~UuG;1=g_+Y2{1L(i`|npcfY+#wStuAt z#A^8p&oQUuI<~g`q4-8dq4B!HA)yiRv};n3kiD3b3WsrojLX`; z&56;LTcm+FWrezJb1`_?m6Tw9Q5B z4aMgpIQ94LNSirbY{O{-o14UqVi0Gfo6fRkb-?D@O9#D;a}kUvjAG0{mvqpG>yEMV ztg6pica$r+No}%!CLEi@wydis2C6=YafJ!IL*b}KEvmbTeh?>U1I4(<0;W>5J!ditirpvEFEHc_jK7G^_*p!S*%kW zbBc}^aGX54AevYzQ?{FS24I$lAXrb14fo9Rqjww3^~CuPwJw;Rs!g5{gJBKs_hI|`QARlqu5 zDT_l=zo$@?igmcAXD$-zPJ_g_ymvGL*TA0U6msODz0`Qg^;brN`zRcE(jF{xBsRsL zXq!bvVF}BP{*|`~Rg>bi?^85fz&XTCkzkbntmnCe|zCQ-vARty76+oQjv%6PEDmd^x<2Nae7P!=#00 zLo32E3V9cnNgP}`u!Acne{lT>AM?5i2BSaW`YE5%d^^nR?!+35#K0;diR3Ce5{FmO zm8fDH|2w~@-@s>F_aMTxhi_~{JGP^fqr3;ZuoJ!LT@`(_@f0r-*%;*h4(U&Y~Z~%;Owc@~ErhKd!SLO@yi# zNRV<@h?G+aqly#HF}TqE)*6P=1J5vA#rc8ODy9b{D9oUXv|g$rlNb;l>$xQmCFAo{ zeVoVh1gkR18ck8RX`V?Jm|>cXE@A|;WLK}Z;xL<`&|AQ(% z;Drf1W>kM)GV{bRzWd`F$)hFcs|jr7{T%yrp0&BcPF`Tmui^-<;RJ{1DO{(jH+TZw oWOlcZfyqgkT~8B16g|_HZd(>g3yN5QqI|SfsiKHdG|?Jj6VQhejPb?kb}R$SZnHaJF#ZsK zgb$hsCOr59{87d`?E(ulKJ?DqJLjIc_w1ei`Fs2uz*DTG5JA*H%tRmJ3`yU!%5}w+ z&k$dcj#SSWqJ`pS5(y*?q)ha~WEj%8nxlkm%a(8~!C>-+w52+zTdqegtEDJq&_o(T z3~7toR-Nxlr?s)=xt|zfg<7$uS+gdFHRVV+f8A}$k5YJ=7|ZTJ3Uf4>|+4=%UUo(k<78C%G*@^M*|_=r%WLsk%+_(reNYulIHv z!rSPcC#c{+Fh3eo&ZUmTVR=vMI7Ak{BRAO(%00 z4M@gmrMG~-(oY!QPSfI@;4oQwLS*%QVQA(ebc{fS9?&CYPO9+8)#-4dRlg0X)H&lw~D diff --git a/src/LoadCharacter.class b/src/LoadCharacter.class deleted file mode 100644 index 16779aea32588f6f5ae1cf0c25885fa00f922688..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1897 zcmb7FOK%%x6g{6GnelX**iQ49q-k8*g6-IG9&JLCK8Ri7CUufFPaL2ywufXAXC@tw zTY``f3wD+G1zoXYfdoRfL{wH~gM^S+u;|n*v0JP9Bz0 zpV+C4SvD;R0wm6GhJvFD3k$JL31`tMpi4#&A%;-JDyDL#TFUIImRhtmi{WfVv(svE zf5$SbMv0+2nmb85%d>Se^t9l#X_Yi9ryiMATS6E;JZUe3pOU&c`(-E?UsuBfg#8hN7P75w1h!Kc+QKYs=-=T$*MKmBF7xQOAG_; zF0OGeGp13oRl}}uhAT4O#9Iu#r17q4>7SW~t(ND?`i^m+88(A2O4SI6kw>l4=P5|U z2#HObCDYI&(-V=Ea;ah;l{E=bB)P0nhQ8Oxa?KgUn2d2uFbI^G^ATB_H5{P|L|i39 zmrcvwplRyJ(6bs1j|ctypm9kvTxj>M;Pg9{)*fqRxAzj}aEF)rF2kMZ!mAVWf3IDg zSs8b+;OcbKkPf%f=DW~T;s|P#cTYwROU=h8v#`tkh1g#VyYex9H zPxFv5OEeZ;Io;5fs|N+mT2~8YLZmgbY8AD4onM4c?2b`x5H8YmdT5IQjQ+H~=sW;C zUqZwg0)L6u!Q#gd@*(^d!dJoDbp&dV2@2=E-a5|J(07c%e0Zpi;oOL~hRY+zh~~p_ zZ*aJdL=CC&e#Vznd_3S7glu!fpH%!U z;LHimIFN1JmMlT4-kxQi)P g!8ALf&G;18*)zu&&N;KdO^R7aPA zZuDqKY>MaN+iY{kcBG&5jSv51&lPka<<@#%6v_D zqAV@19Tab<;G!j4jTl4v3>-(lhW@5_ZXIrJY8Wmk&TLEC_3WJIi5CUCDRYWu&_F_Q z43<4hNNZIz_u+M%U|AM6l0VwDisZ>WJsoh z=H2av>sXG=g>!Yml-Em}R$1m!k75|d869U0oWq2M0hQ)lqcQI~O(`5n-SN6zt;xLS z?l@dOid%QRK>q~;7ja2LU(=F#QQoS0Zp)#Hp$-*lx3YBzld1?;s6M&892%W6U?Qy{ zMuadu4X2MphjXjK5mif}=y>nV8Wu#!s`nzRG_p(+V&b4uab$2!abBmHZPdVpqV!n* z0Ph10V@G?Us5;}o1%+_az=yb{I>C}lu4lh=9VzN_bjR7IyBfNZ%trY+Wgv%XI#;s< z>$Sj*Y=}eW)C7&oVAjA#xT8TQWVkDFB>=3WO)xo zsm__X|Bdr*B?`Q+D0v)LMWc-w=XK$gtp!^VoP7H>yQ+$c^X!cXZ%vJF-evsS{EJ`{ zT^x5~i{m=-%jr42W_A$fHoR7PEh-^^(YKBXT8O_JXCKD(m?sv$aM2uoCB92Q; z;xdI#k}=6qiuaa@ET7xBMt&ZsHvjibRJpUFDE9DR!~7YBkB409~q+dm33`!>7xo_p@ud+%R=fA|x?eKcYSAsj_Sq6g;$61(ar z^>e1VZ#z4gr_Yq5YXaxyZO8T(1j5P5%@}&o7e!3sJUa|Fy>ez%+0LqVS{?gXgZ(zN z-)i)cb-%;~3a zq5~bsx#4?MhXl$}EK1~%r=+V|k<&8CNkwv+G#^mTb9f}NjK=~|Vr;AuU3>#GgSaB` zl$DhgPbaBoaM}qQH1JQYom<%%gh4e`jhnh8K9nihWOM z(o>non!_83AMn=DGnNEpl0R9U zxi5AFtS)6wJHj;GM{Oc7pZt%O|9?l5o1{+Ot&rRU1>4bUt$Im&&sC{LC$SB;<(2ia z%|8-nhS4of4A-d>LNxEfw9+V|U5IB)@TGY|-w3GYu}5o-e!V5j2z}GmA%xXN)Jh#d zTImDCt*HYHS#&m?MY}}n7%{nu6s}Qx znx36#GZa~n$B6YF$u@3TM;I%H!-tq|W9Ah00+9j%L@B^9O_mT3ybeT}PC3ClN0=)n zvWK`|NWI6yHkRn~q>XP<;WpNId7e7Li()VR9pYshuT#H~o8di9AV3l^YPLaG1kX&< z6mAN)k)Z%I&N=~qrOcR4^$4Nj5mYhK6Q3r^eA?Kq zrr9=a{Q=oVb&EG~-lWpON$PukcNLqW09pSo^z>*|M>l{K9pb+(Ij!DU&^|LUp> zzI8W(~hg69g0f16=$9!Hz<6 diff --git a/src/Skills.class b/src/Skills.class deleted file mode 100644 index a5083def7263cd077560f756bdc0ac4f892216d9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1300 zcmZWnU31%15Ixsll4UtjZYeauEh(S26C6l^0%<93N{GRUOBFJsF*BgpilbJMGLoDr z54RA-Q9b%yJz?Q{KroZ09?d}26D)2 zD3~asBw$^458b7}4M$78o$KBp6)0WsLqB~>AYX56m!YGq!7x#QDPSb=V9CDW2SFlG zK8T~;%TYL{Ejk*e{*}&7V?P|}u=rPd5Jx+1>JJhfQee6r`ulD$zwU;^AR|4-vh8@_ zhOUmsnYo?r1>S^zitZI};2orX6zZ50(ANDVjp9#r)aZ1=#2@XYI?f1~oiO$H{UJ*! z?z}*?6CQd=>W_{?PYdW9-q0WTp{L_nmfdvIaZLMp_IcHd|1MM)sL^JC9asYzq`tqoKz^bUEG4@&1k%Z@D`GBUNS}+}LmrGG9|N$}IHoB^Bz8 zKI`ZYLjou3{~tnw6vK|j+|in^vQ{Slx74_BmP&JMtpKUsDg@T)<Yv!KehP3Z_(SnprGM>vi)NYt0{V?!mWc@jPE^ z6~2LyS$Z!!K2q_Og<5O*4laMvyOk5){rRgBl6yo*9b0JPV=Tf)3kO)nE&5+^LmOmP zk^ddr8aBo3ZI4waYo4>Mi8*-~WfV#v5DR GVCyd^j|bKO diff --git a/src/Stats.class b/src/Stats.class deleted file mode 100644 index fe4239d00cfba99fe922316781027f4ce3171ead..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 606 zcmYjN%T60X5UjD+USsUA5b}^vA|XYQoddpcfpAHLgapZ9QLbS;3}(RWI(r;F3?_q10?fN?NL}-k$E>>i+fc<0pW(c-BS@^%zkH4KxLk6FHNEvCKw; zkHZtKN`dC4$xOK=Q1A6W#b^o46;=(>QkI24^e#Wt0t>q)(;ud1Lv8ovaO^Wmj#VmW zCL8S^+x(oRy`BD!K$o5BbWct~Vb^5JYFX%1<(7@DkuF2XKeAz-iM{;L92so|9{K10 z$NI#3T_|fNrO7ja*5KxFmelGVz%h257R!alk3r<18R2dwdBf z$R5*x^W@egcP_bi$%Cu8x{F-HHC^mlF1c|ms#Ox#(PbRtfZ`NI9$^6nOBmw`GCaow yE3kNp604Zu6)x}^SLjt;2|BkpsL{k5QRJ<5?De&WJQNih6!P7r$%x}#A diff --git a/src/Strength.class b/src/Strength.class deleted file mode 100644 index af4860c185be4bb2dda373a92aab6899f982bb2a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1488 zcmaJ>U2hXd6g}g7*l{*-YyuQg=(bJ4F%Y-(g9g)5>I&6Tpbw5f6)%i8gFR%kW6e%N zUG<0bNA#hUN-FWtAJ89F^^CnFORy@-b3HTXo_puqd;QP9ul@$`6}~B>fSDp@1I%Gw zU?H_pv+JZw1?KPQM7ysAX6hS{7Er=M5#<1j2n2!&&Z?yE2HeV?jF*4zc_A=c?`(8DV=cfLPq&))e_(d?Gp(%WI2+&`&I^?K%4Out zW=ww}z(s$x$g9^bCA=%}(L?DDtc*kH2C;HF(&>IElijdK;&>De%?o8WJ^SSV?;#Xe zCdGFujjSFzZ4%~F-`IXG4`nl!NuPRH=H9ANu@3@#h;@PU`*KgUO%h4>Si1p#rA{VZ zwR*kNdE0jiT@hCpXdFeGW>;A)WBs%2#T3vB^oXWycDbu;>qI>~*zYO3Gr6zUxAO&P zd9Z)P8!A`5F!HCiw087Z>Hfe`M`tFl5m?emWR*-+rfa!t4s4|EYoEXpQRCWf`UC}5 zzBR_B&dT8f_#b-DRpeUvI%E`W8OL4iRI7w7f#$tQ zCx>HIZigcLC4AjolU=S+c);H8B#E-^Sf;5;i@3uEd`pOF?<<0%b@~6H9Kwkhc%SWB z0J*sq{0y=g3x0TL7kEC0t6b~c-NFoSfHRH1AR22gQEW8Uj)6gq~a;P)bHCms*Ol|G=Q{k`k;`%XX$On61$!EG! z8JwoQ$=e&pv^S}-N7p=>-)iFsmtL_*IEk`M46sFcZ=*^punGTg|JbXU|6=1u63jlO oxF@yof62f-R;Nu^lfMi27@yFV=Yje{^6g?Y1Br7r&PVAs2fj|>#CxH8)(8>vq7+eB&px8AHeA?JsTSS&TlAKQd zMnCmu^fgHb&-4fMM={)uGfh%!@Qk&)ckey-p0juN-}mqS0kDBL8m16a5Z94FlEHY( z_j$?TZnyM&_pNA$49RudwZnT1u|lz>KxN1Te!En)9Z}~l?+Raof|!PB=nB$0E+E68 zNuQ<&Lg6z^w|&7w(dY?5fcZkPCU+}6?(;S|9NWth<)V%(W*E`|-xvSwGt3pDB8n{; zlhcvM97C3JbQ%=bITyGUnJfhppD38uv4F*Mv>OLhbD!9HL#j1bI~K(DN-uod4I3dP z=~Jm!u%zIsj%)aoGEcH$P(zQrZMVxXON38#9b3y;(tkzAb$mwj`g~7RJh#omS9aK= zSrBqJ3>dB#CL<%jG!(I_U`@vj++>)ED4IbTND7WitfEj`DoPCTr(V!g@dZO-)AxRM zReVK<`H1^_OUG*kUlWof{Mh+P!)@6--_Qw5OV#f7=r}dpmDcivFd+{E4Hh#VH6Fj5JSFpoy`Qxtikd3+GD!o)wbo+o9 zsL_z5ZmTtJ{elkn|T8LC(YC3)y>{|X5`k@4MV+m z5r5r@XFsL#5(;O_<>d$&06>ouVH=w|DK!6 diff --git a/src/Tiefling.class b/src/Tiefling.class deleted file mode 100644 index 44e3ca911bddafd1a386c672cded874f5565fad0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1204 zcma)6YflqF6g|_|Zr80{%R?5j^8X- zcMoJE6i6+*z8kIx#EYe!G<2jj7$z>j6flEMqrBzHeb4oq0?FV|$~^(Gu5cGkWECjY zaz3s#rG`uA_-kQ@MLI@^sI*(Hwy$GMKwtOwWyg0sMRD206(G;%PD=`mo+CMnzK)aiedcIgw8v|VBCkG*^pDXXmT#2f1Fqh3 zE*NL+ZxFUs=s~ls?H)3A@+Yi%JeRB06S>h^594;6nI7_A2p3r3m?sS=C&8aVA`2Nl zfs3#yN#G%7j+;y|swTR9gvldJe?DPQGJsKzSv=yXBuy}?Y~0%ZGyu$VW5K}r>gaYUacqf>R{C>Q7ixL@Jpgs$r{6pznG}O>i_@% diff --git a/src/ViewCharacterPanel.class b/src/ViewCharacterPanel.class deleted file mode 100644 index 124d93338d92a2e1b5d1ff85123be5cbaadc1d64..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2955 zcmaJ@X?qh@7(LU4r13&apdg@#$kL|RB8pqx+DM^T)*x7LyG^dm&~zrwOsRFnecv~5 z-}eO(Q%x21t6%&dKK=$D&pQ*^6rxX`-pRbnx$kn`JNJ)&$|nI_jo%ZfLwyVl3XPa! zA$d?A(sy>T52!b)5a!zzWYl zWP)&=LJxX{RwmfudiLF}6X-$@OX-ZVYZe;Xn7S1IdWB8sW0~_tlLvh?w9q_LW)Xxz zZBgjQR>n`r$SPS?q0lTs98lOMy;M2vjTk>_odmT*Vdtqn^|_vj`V_}*wqm>MMV#BC za3l6I!HBohgtz^`&ia+1SX8Op>&hW%u~G+{S;b}s5-0)x0&3VaK5 zAp;@~)ZsRfT_kg?6^4+F*s!Ch?;K;V8rt>?RW`yX+<{?k!#4H|Q^R5IPx2736%Jy= z!s1aqV%UtV4))nWe!4Bv&iUQuc3%jaWL0dzy-(qOVfI;6ZJJ=3 zoT?=1aad3vw6LZYV{7m7u)-q(r6hQ5dljq(9F~n9S9k(XM$@ueXIW>(p36MR8wvR| zo{8aEh35pLCG2z6A!H#QxY5KU+13#9MTM8}GEYQqI8Cc`LHj&pS}Wk;>mD;&EbwgV z<^dYHzNYXxju4ctnLx|2Bov%I-XdpUZ%ANoo-zEQO(KTF7CNFLokrf%(8BY*orBPj zc5_U>dBAqe_Oa0+Fahujg<71cSSd>_AEt~X)fNHr5Gh7sr% z?c@r^Up3&mBV)zt4@l*RtK!Qn$2}88Q^Wi~mHnwtP?e|xk=BJm#%5FF_=?lZ(YR*NLwW;k*vbaQ2!&j5^^bg zE0c6RLw3OqCRSv!Jo$WziP`Ts#tY4iAHy#eR-aMZS|y9&R}0Jk-;^mv^~L%8@YeBs zvbgf9!C#I1-H5ljzQeao9N&6Am!u|PrPlp`SgM4%{BKEhBwI^Z{9Wk$F4v`;2Vfo= zc;je73+7@z{}$kEv=Zz+ykCLbz^!D7skDkLv;Zb^8QdKH=YVajyeh9k|}H$Or1ci zgi9uIS$3DT*o?n;k*LQ9w6DX5_=wL9tlh^%`Z8R< g4%ctP^}BHWK3snY*U51G2~+e-(C25I#BW&gFE)PfX#fBK diff --git a/src/Wisdom.class b/src/Wisdom.class deleted file mode 100644 index ee7f088e402b5da33fd224aaf36f46fa6ead0d3a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1280 zcmaJ>T~8B16g|_HZo6G5Ehu6Iit^D`rHUd-(L`&AO+X(?AjTJ`+Yttqoo08zVEiHe z2p=?2OnC4I_@j(>+64+UKJ?DaopaCJd-mS``Fs2uz*8)nh#+bpW}y#phNSP=<$Aya zpCP_1T^T%Mh!%<)NhFXoU|LAQVlXvsQ~FJ{$6)b>bYyT?x0NRtSj{BxfQ2*$8PYa) z>^eV??$-LYr#>>o3bkTQ^JOgzX|mz&_%+p(AEfX!#}x}#F~X4A62XbTolY%*Q3hyC z&cY3hF$@sqrSNS}wgRbKVl5O`clZG>JKWu(nmo#&lBKFAEaWlCFtW#YMOC>r4>o16 zO*=o}uCBaLsMRjV_MkIxiymsfB2~FAJjosTi8maQL6^BfOI0=LlwOstc)h>Z5Z-#{ zK0yhGis{_XNt6gwCt-$u>Dr#)z6h~qUG00eSdsdTROb`S=?oYKUnmv$fyY~GBG^_< zKOINe#68?MFt3Y#z%X?tiF6Ott_YRs=&-`=KzWA@UkY9IhrkZ$EABQO;ZLn9wY%S{ zbiqQ2yFBLt*AH8w2mD?*g>UR=#Zky9j7h>QAuEdq5QnlaQU_-OL><6oImN0 z&Z(;t$U!Yyb6w$89q#+WH}IHY`jQa6>NBv!F#dliO-e@$Oj18az;KgnL=OseTSWIb ztp@q~FhzEnPK$`r4KP&t1y;)agi$Kxj?n)TneXIgm?4`*jI2r4LK6LSPSedSMnaM? zT4@TuFfL?HnRY!$VfT*A2~FgpLxZ&;xpe;fv4-g3`E!tT|eB0@3WXZx^1Q zp^M@vaGuK5z^u-cewoq{t{-C@IExz~3~-k!okNCJh7xosI{n!&K2>^41hMy|*O^TE jFAP{9p|q;EX&=EIA^?32Mq~^R@rX_)?H2I_6^#A^)o>J8 diff --git a/src/Wizard.class b/src/Wizard.class deleted file mode 100644 index da885c83cb3053563dbd527d6de2188f7b98181c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1152 zcma))OK;Oa5XWcjJRnJv6jC1LQA!JnIW$6CkV=strL>X-L5UiPo;J?nZ0p!zy)hD> zi36OFIPd}ZP>BE9;h_MMFFQLkKhOMk#^1hw`AS54bhknl*<~u!s7NJ7%~PK6PQXLI z^Kx`5Jk6-|NQP2BW@NXW<1(FNREd?>8OrxujmuPFv}*irz~guzrn7)+!N@x7F=9uI zih)Q(fHD)Q_a!pT_K9mg=xeUy-6Q9iQK1`+k!iRx6ffq}kx&CZ3J|ILLhp;%Q*x$d z6f$bH9rw4yzE(2ycQdZ1B43F(PPw(VbMh~+iGr!p1HttiIHU6j9WJz0%)Q68o7_*| z3;ne;G~;m=H0~2MjTG9wVYC8wDEKT2GrtOd5Jf@eH84yWn5Xp5WDuZPE7n|Th<^5V zE@$0IBt4^{&c_K4HTOk#BD^yM+JDT*d5sy5WxNbE(5%lBR2xiG^bU0@{b;T{aUjj` zs@aNm%)Drm%GfksOEzqkYFNKTD+^msZ3FotnX`%PCaeuxy!V;dCtM%`r}<$Bcp(KZ z(8UG54$F|S*vDUNDUGb*Y>_!l+5dAUb14V60q$~+zT4og(ADL>_J<{X4v6&}+zz;F zIrKdMcRdI95ZsL%+#a}_Ik>0bHga&!!QD#N`*R;=qt;(@alzfr!My^vm80(v+_vdN GcYXk3Fsb$c