From 35315e7d5e1c582b178f18b0bdb202228bf78e21 Mon Sep 17 00:00:00 2001 From: MrMcX Date: Mon, 12 Sep 2016 18:08:47 +0200 Subject: [PATCH] EncounterGenerator added --- nbproject/private/private.properties | 2 +- .../dungeon/objects/Encounters.java | 102 +++++++++++ .../dungeon/objects/Enemy.java | 1 - .../dungeon/objects/Treasure.java | 14 +- .../main/DungeonGeneratorUI.form | 8 + .../main/DungeonGeneratorUI.java | 15 ++ .../main/EncounterGenerator.form | 140 ++++++++++++++++ .../main/EncounterGenerator.java | 158 ++++++++++++++++++ .../main/TreasureGenerator.form | 7 +- .../main/TreasureGenerator.java | 10 +- 10 files changed, 442 insertions(+), 15 deletions(-) create mode 100644 src/eu/smoser/dungeongenerator/dungeon/objects/Encounters.java create mode 100644 src/eu/smoser/dungeongenerator/main/EncounterGenerator.form create mode 100644 src/eu/smoser/dungeongenerator/main/EncounterGenerator.java diff --git a/nbproject/private/private.properties b/nbproject/private/private.properties index 0a93cc4..9e8f740 100644 --- a/nbproject/private/private.properties +++ b/nbproject/private/private.properties @@ -3,4 +3,4 @@ do.depend=false do.jar=true javac.debug=true javadoc.preview=true -user.properties.file=/home/mosers/.netbeans/8.1/build.properties +user.properties.file=C:\\Users\\MrMcX\\AppData\\Roaming\\NetBeans\\8.1\\build.properties diff --git a/src/eu/smoser/dungeongenerator/dungeon/objects/Encounters.java b/src/eu/smoser/dungeongenerator/dungeon/objects/Encounters.java new file mode 100644 index 0000000..162a5ac --- /dev/null +++ b/src/eu/smoser/dungeongenerator/dungeon/objects/Encounters.java @@ -0,0 +1,102 @@ +/* + * The MIT License + * + * Copyright 2016 MrMcX. + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ +package eu.smoser.dungeongenerator.dungeon.objects; + +import eu.smoser.dungeongenerator.dungeon.Dungeon; +import eu.smoser.dungeongenerator.util.Dice; + +/** + * + * @author MrMcX + */ +public class Encounters extends ADungeonObject{ + public Encounters(int num, Dungeon.Type type){ + descString = ""; + for(int i = 1; i <= num; i++){ + descString += i + ": " + Encounter(type) + "\n"; + } + } + + public static String Encounter(Dungeon.Type type){ + if(Dungeon.Natural(type)){ + switch(Dice.Roll(20, 1)){ + case 1: return "Ein Höhlenbewohner behauptet, er sei der Häuptling eines ganzen Stammes und bietet den Helden die Freundschaft an. In Wirklichkeit ist er nur ein unbedeutender Kundschafter, der keinerlei Befehlsgewalt hat, nachdem er die Helden zum Stamm geführt hat."; + case 2: return "Ein kleines Höhlenogermädchen wird von einer Riesenamöbe angegriffen."; + case 3: return "Eine Abenteurergruppe, bestehend aus einem Thorwaler und drei Tulamiden, hat sich in dieser Höhle verschanzt. Sie sind schwer verletzt, ausgehungert und wollen nur noch aus dem Dungeon entkommen."; + case 4: return "Ein tulamidischer Elementarist hat seine Kraft nicht mehr unter Kontrolle. Wahnsinnig zaubert er einen elementaren Zauberspruch nach dem anderen – anscheinend mit einer unbegrenzten Fülle an Astralpunkten."; + case 5: return "Vier Höhlenbewohner versuchen ihren Häuptling zu befreien, der in eine Gesteinsspalte gerutscht und nun eingeklemmt ist."; + case 6: return "Der Großteil dieser Höhle wird von einem tiefen Teich eingenommen. Im klaren Wasser ist ein Tunnel zu entdecken. Darin herrscht allerdings ein starker Sog, der einen in den See einer Nachbarhöhle zieht, aus der es keinen weiteren Ausgang gibt."; + case 7: return "Eine weiße, blinde Schlange greift den ersten Helden an, der die Höhle betritt."; + case 8: return "Ein Grolmhändler bietet seine Waren feil. Die Preise sind exorbitant hoch und sein Sortiment ist äußerst beschränkt."; + case 9: return "Ein völlig untypischer Wühlschrat folgt der stärksten Lichtquelle in dieser Höhle."; + case 10: return "Vier Höhlenspinnen haben einen völlig verängstigten Kobold in einer Ecke in die Enge getrieben."; + case 11: return "Eine etwa katzengroße Sphinx thront auf einem kleinen Basaltpodest. Wenn die Helden freundlich auftreten, wird sie eine kryptische und zu diesem Zeitpunkt völlig unverständliche Weissagung von sich geben."; + case 12: return "Ein Höhlenoger sitzt hier und lässt niemanden durch, der ihm nicht 5 Dukaten gibt. Unglücklicherweise kann er nur bis zwei zählen."; + case 13: return "Eine aus 5 Personen bestehende zwergische Prospektorengruppe macht hier gerade Rast. Sie sind auf der Suche nach erzhaltigen Kavernen, in die sie ihre Gänge treiben können."; + case 14: return "An der Decke der Höhle klettert ein Wühlschrat umher, der anscheinend Kristalle erntet."; + case 15: return "Der komplette Boden dieser Höhle sowie die Wände wimmeln nur so vor Glutlingen. Gibt es hier ein Durchkommen?"; + case 16: return "Ein kleiner Drache liegt in einer der Ecken der Kaverne und rührt sich nicht. Ob er schläft?"; + case 17: return "Im Raum liegt eine eisenverstärkte Truhe, aufgebrochen und anscheinend von woanders hierher geschleppt. Sie ist leer – neben ihr liegen zwei kleine Aschehäufchen."; + case 18: return "Die Höhle ist völlig mit Eis bedeckt, obwohl es gar nicht so kalt ist."; + case 19: return "Die Höhle scheint sich zu drehen, wenn man sie betritt. Nach jeweils 5 angefangenen KR ist eine Orientierungs-Probe notwendig, jeweils um einen Punkt mehr als die vorherige erschwert. Gelingt die Probe nicht, verliert man jegliche Orientierung."; + case 20: return "Ein Höhlendrache sitzt auf seinem Hort, hinter ihm befindet sich ein weiterer Ausgang nach draußen. Er bietet den Helden die Hälfte seines Schatzes an, wenn sie das gesamte Gebäude von ‚Ungeziefer‘ befreien können. Natürlich wird er das Versprechen nicht halten."; + } + } else { + switch(Dice.Roll(20, 1)){ + case 1: return "Ein verletzter Höhlenbewohner bittet die Helden, ihn zurück zu seiner Heimat zu bringen. Er weiß nicht, was er hier tut und warum er verletzt ist."; + case 2: return "Auf einem Pergament im Raum findet sich ein Teil der Anlage skizziert."; + case 3: return "Ein Gestaltwandler beobachtet die Gruppe schon länger und erwartet sie in diesem Raum in Gestalt des stärksten Helden der Gruppe oder eines vertrauten Freundes."; + case 4: return Dice.Roll(6, 1) + " Glutlinge laben sich am frischen Leichnam eines in eine Robe gekleideten Andergasters."; + case 5: return "Was macht ein waschechter Pirat hier? Das weiß er selber nicht. Eben noch befand er sich auf seinem Schiff auf dem Meer der Sieben Winde."; + case 6: return "Wolfsratten haben sich hier eingenistet. Ihr Fell scheint aus reinem Gold zu bestehen."; + case 7: return "In der Höhle befinden sich unterschiedliche Monster, die anscheinend wie bei einer Schwarmintelligenz gegen die Helden zusammenarbeiten: " + EnemyList(Dice.Roll(6, 2), type); + case 8: return "Ein Grautier galoppiert panisch an den Helden vorbei. Es hat eine Art Satteltasche, in der sich die Ausrüstung eines Aves-Geweihten befindet. Auch 15 Silberdukatenfinden sich in einem kleinen Lederbeutel. In einem Raum ganz in der Nähe befindet sich sein toter Besitzer."; + case 9: return "Ein tulamidischer und sehr zerstreuter Magier, der vergessen hat, was er hier suchte, rennt an der Abenteurergruppe vorbei. Er ist sehr dankbar, wenn ihm geholfen wird, seinen spitzen Hut wiederzufinden und wieder an den Ausgang zu gelangen."; + case 10: return "Zwei von vier steinernen Verzierungen auf einem Sims in diesem Raum erweisen sich als Gargyle. Diese sind aber nicht auf Kampf aus, sondern wollen nur von den Helden erfahren, was sich an der Oberfläche in den letzten Jahren alles abgespielt hat."; + case 11: return "Diese Höhle wird von einem angeketteten Oger bewacht, der nicht mehr weiß, wer ihn hier angekettet hat."; + case 12: return "In der Höhle hat sich ein Kobold breit gemacht, der partout nichts davon wissen will, dass er hier völlig fehl am Platz ist. Er spricht nur in Reimen und verlangt das auch von den Helden."; + case 13: return "Die Sensenfalle war wohl zu kompliziert für den mittelreichischen Einbrecher, der tot auf dem Boden liegt. Immerhin hat er die tückische Falle für die Helden entschärft."; + case 14: return "Das Skelett eines nostrianischen Gelehrten kämpft in der Höhle einen verzweifelten Kampf gegen den Geist eines andergastischen Adligen. Beide haben wichtige Informationen für die Helden – wenn sie mal voneinander ablassen würden."; + case 15: return "Eine Gruppe Fasarer Magiestudenten hat sich total verlaufen und selbst durch Teleportationsversuche wurde es nicht besser."; + case 16: return "Zwei Höhlenspinnen kämpfen um den Kadaver einer fast dackelgroßen Ratte."; + case 17: return "Eine Gruppe von " + Dice.Roll(20, 1) + " Vampirfledermäusen hat einen einzeln reisenden Thorwaler Krieger überwältigt und mit Tollwut infiziert."; + case 18: return "Ein Grolmhändler bietet seine Waren feil. Die Preise sind exorbitant hoch und sein Sortiment ist äußerst beschränkt."; + case 19: return "Aus diesem Raum kommt man nur hinaus, wenn man ihn rückwärts wieder verlässt. Alle anderen Versuche landen direkt wieder im gleichen Raum."; + case 20: return "Ein Höhlendrache sitzt auf seinem Hort, hinter ihm befindet sich ein weiterer Ausgang nach draußen. Er bietet den Helden die Hälfte seines Schatzes an, wenn sie das gesamte Gebäude von ‚Ungeziefer‘ befreien können. Natürlich wird er das Versprechen nicht halten."; + } + } + return ""; + } + + private static String EnemyList(int num, Dungeon.Type type){ + String out = ""; + for(int i = 0; i < num; i++){ + out += new Enemy(type).toString(); + if(i < (num - 1)){ + out += ", "; + } + } + return out; + } +} diff --git a/src/eu/smoser/dungeongenerator/dungeon/objects/Enemy.java b/src/eu/smoser/dungeongenerator/dungeon/objects/Enemy.java index 9f77fa3..5b22a64 100644 --- a/src/eu/smoser/dungeongenerator/dungeon/objects/Enemy.java +++ b/src/eu/smoser/dungeongenerator/dungeon/objects/Enemy.java @@ -24,7 +24,6 @@ package eu.smoser.dungeongenerator.dungeon.objects; import eu.smoser.dungeongenerator.dungeon.Dungeon; -import eu.smoser.dungeongenerator.dungeon.objects.ADungeonObject; import eu.smoser.dungeongenerator.util.Dice; /** diff --git a/src/eu/smoser/dungeongenerator/dungeon/objects/Treasure.java b/src/eu/smoser/dungeongenerator/dungeon/objects/Treasure.java index d07b6e1..136f155 100644 --- a/src/eu/smoser/dungeongenerator/dungeon/objects/Treasure.java +++ b/src/eu/smoser/dungeongenerator/dungeon/objects/Treasure.java @@ -129,11 +129,11 @@ public class Treasure extends ADungeonObject{ case 13: case 14: return Gem(); case 15: - case 16: return Coins() + " und " + Jewelry(); + case 16: return Coins() + "; " + Jewelry(); case 17: - case 18: return Coins() + " und " + Gem(); - case 19: return Jewelry() + " und " + Gem(); - case 20: return Coins() + ", " + Jewelry() + " und " + Gem(); + case 18: return Coins() + "; " + Gem(); + case 19: return Jewelry() + "; " + Gem(); + case 20: return Coins() + "; " + Jewelry() + "; " + Gem(); } return ""; } @@ -181,8 +181,8 @@ public class Treasure extends ADungeonObject{ case 13: case 14: return Material() + "-Ring"; case 15: return Material() + "-Armreif mit eingearbeitetem " + Gem(); - case 16: return Material() + "-Brosche besetzt mit " + Dice.Roll(6, 1) + Gem(); - case 17: return Material() + "-Diadem besetzt mit " + Dice.Roll(6, 1) + Gem(); + case 16: return Material() + "-Brosche besetzt mit " + Dice.Roll(6, 1) + " " + Gem(); + case 17: return Material() + "-Diadem besetzt mit " + Dice.Roll(6, 1) + " " + Gem(); case 18: return Material() + "-Kette mit Anhänger mit einem " + Gem(); case 19: return Material() + "-Ohrring mit einem " + Gem(); case 20: return Material() + "-Ring mit einem " + Gem(); @@ -251,7 +251,7 @@ public class Treasure extends ADungeonObject{ case 6: return Dice.Roll(6, 1) + " Karat"; case 7: case 8: - case 9: return (Dice.Roll(6, 1)/2) + " Karat"; + case 9: return (int) Math.ceil(Dice.Roll(6, 1)/2f) + " Karat"; case 10: return (Dice.Roll(6, 3)+3) + " Karat"; case 11: return Dice.Roll(6, 5) + " Karat"; case 12: return (Dice.Roll(20, 1)+10) + " Karat"; diff --git a/src/eu/smoser/dungeongenerator/main/DungeonGeneratorUI.form b/src/eu/smoser/dungeongenerator/main/DungeonGeneratorUI.form index 7786b09..03c7c19 100644 --- a/src/eu/smoser/dungeongenerator/main/DungeonGeneratorUI.form +++ b/src/eu/smoser/dungeongenerator/main/DungeonGeneratorUI.form @@ -29,6 +29,14 @@ + + + + + + + + diff --git a/src/eu/smoser/dungeongenerator/main/DungeonGeneratorUI.java b/src/eu/smoser/dungeongenerator/main/DungeonGeneratorUI.java index 4299779..fdf66ea 100644 --- a/src/eu/smoser/dungeongenerator/main/DungeonGeneratorUI.java +++ b/src/eu/smoser/dungeongenerator/main/DungeonGeneratorUI.java @@ -111,6 +111,7 @@ public class DungeonGeneratorUI extends javax.swing.JFrame { jMenu = new javax.swing.JMenu(); jMenuNew = new javax.swing.JMenuItem(); jMenuTreasure = new javax.swing.JMenuItem(); + jMenuEncounters = new javax.swing.JMenuItem(); jMenuDescription = new javax.swing.JMenu(); jMenuDescTxt = new javax.swing.JMenuItem(); jMenuDescPdf = new javax.swing.JMenuItem(); @@ -239,6 +240,14 @@ public class DungeonGeneratorUI extends javax.swing.JFrame { }); jMenu.add(jMenuTreasure); + jMenuEncounters.setText("Neue Zufallsbegegnungen"); + jMenuEncounters.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + jMenuEncountersActionPerformed(evt); + } + }); + jMenu.add(jMenuEncounters); + jMenuDescription.setText("Beschreibung exportieren"); jMenuDescription.setEnabled(false); jMenuDescription.addActionListener(new java.awt.event.ActionListener() { @@ -659,6 +668,11 @@ public class DungeonGeneratorUI extends javax.swing.JFrame { treasureGenerator.setVisible(true); }//GEN-LAST:event_jMenuTreasureActionPerformed + private void jMenuEncountersActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jMenuEncountersActionPerformed + JFrame encounters = new EncounterGenerator(); + encounters.setVisible(true); + }//GEN-LAST:event_jMenuEncountersActionPerformed + private void CreateGraphPDF(File file) throws BadElementException, IOException, DocumentException { Document document = new Document(PageSize.A4); Image image = Image.getInstance(mxCellRenderer.createBufferedImage(mGraphComponent.getGraph(), null, 10, Color.WHITE, true, null), Color.WHITE); @@ -767,6 +781,7 @@ public class DungeonGeneratorUI extends javax.swing.JFrame { private javax.swing.JMenuItem jMenuDescPdf; private javax.swing.JMenuItem jMenuDescTxt; private javax.swing.JMenu jMenuDescription; + private javax.swing.JMenuItem jMenuEncounters; private javax.swing.JMenu jMenuGraph; private javax.swing.JMenuItem jMenuGraphGml; private javax.swing.JMenuItem jMenuGraphPdf; diff --git a/src/eu/smoser/dungeongenerator/main/EncounterGenerator.form b/src/eu/smoser/dungeongenerator/main/EncounterGenerator.form new file mode 100644 index 0000000..910928f --- /dev/null +++ b/src/eu/smoser/dungeongenerator/main/EncounterGenerator.form @@ -0,0 +1,140 @@ + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/eu/smoser/dungeongenerator/main/EncounterGenerator.java b/src/eu/smoser/dungeongenerator/main/EncounterGenerator.java new file mode 100644 index 0000000..89be893 --- /dev/null +++ b/src/eu/smoser/dungeongenerator/main/EncounterGenerator.java @@ -0,0 +1,158 @@ +/* + * The MIT License + * + * Copyright 2016 MrMcX. + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ +package eu.smoser.dungeongenerator.main; + +import eu.smoser.dungeongenerator.dungeon.Dungeon; +import eu.smoser.dungeongenerator.dungeon.objects.Encounters; + +/** + * + * @author MrMcX + */ +public class EncounterGenerator extends javax.swing.JFrame { + + /** + * Creates new form EncounterGenerator + */ + public EncounterGenerator() { + initComponents(); + } + + /** + * This method is called from within the constructor to initialize the form. + * WARNING: Do NOT modify this code. The content of this method is always + * regenerated by the Form Editor. + */ + @SuppressWarnings("unchecked") + // //GEN-BEGIN:initComponents + private void initComponents() { + + jButtonStart = new javax.swing.JButton(); + jPanel1 = new javax.swing.JPanel(); + filler1 = new javax.swing.Box.Filler(new java.awt.Dimension(0, 0), new java.awt.Dimension(0, 0), new java.awt.Dimension(32767, 0)); + jSpinner = new javax.swing.JSpinner(); + jLabel1 = new javax.swing.JLabel(); + filler3 = new javax.swing.Box.Filler(new java.awt.Dimension(0, 0), new java.awt.Dimension(0, 0), new java.awt.Dimension(32767, 0)); + jLabel2 = new javax.swing.JLabel(); + jCombo = new javax.swing.JComboBox<>(); + filler2 = new javax.swing.Box.Filler(new java.awt.Dimension(0, 0), new java.awt.Dimension(0, 0), new java.awt.Dimension(32767, 0)); + jScrollPane1 = new javax.swing.JScrollPane(); + jText = new javax.swing.JTextArea(); + + setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE); + setTitle("Zufallsbegegnungen generieren"); + setMinimumSize(new java.awt.Dimension(800, 600)); + setName("Zufallsbegegnungen"); // NOI18N + + jButtonStart.setText("Zufallsbegegnungen starten"); + jButtonStart.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + jButtonStartActionPerformed(evt); + } + }); + getContentPane().add(jButtonStart, java.awt.BorderLayout.PAGE_END); + + jPanel1.setLayout(new java.awt.GridLayout(1, 7)); + jPanel1.add(filler1); + + jSpinner.setModel(new javax.swing.SpinnerNumberModel(1, 1, null, 1)); + jPanel1.add(jSpinner); + + jLabel1.setHorizontalAlignment(javax.swing.SwingConstants.CENTER); + jLabel1.setText("Begegnungen"); + jPanel1.add(jLabel1); + jPanel1.add(filler3); + + jLabel2.setText("Dungeonart"); + jPanel1.add(jLabel2); + + jCombo.setModel(new javax.swing.DefaultComboBoxModel<>(new String[] { "Natürlich", "Künstlich" })); + jPanel1.add(jCombo); + jPanel1.add(filler2); + + getContentPane().add(jPanel1, java.awt.BorderLayout.PAGE_START); + + jText.setColumns(20); + jText.setRows(5); + jScrollPane1.setViewportView(jText); + + getContentPane().add(jScrollPane1, java.awt.BorderLayout.CENTER); + + pack(); + }// //GEN-END:initComponents + + private void jButtonStartActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButtonStartActionPerformed + Encounters e = new Encounters((int) jSpinner.getValue(), jCombo.getSelectedItem().equals("Natürlich") ? Dungeon.Type.NATURAL : Dungeon.Type.ARTIFICIAL); + jText.setText(e.toString()); + }//GEN-LAST:event_jButtonStartActionPerformed + + /** + * @param args the command line arguments + */ + public static void main(String args[]) { + /* Set the Nimbus look and feel */ + // + /* If Nimbus (introduced in Java SE 6) is not available, stay with the default look and feel. + * For details see http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html + */ + try { + for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) { + if ("Nimbus".equals(info.getName())) { + javax.swing.UIManager.setLookAndFeel(info.getClassName()); + break; + } + } + } catch (ClassNotFoundException ex) { + java.util.logging.Logger.getLogger(EncounterGenerator.class.getName()).log(java.util.logging.Level.SEVERE, null, ex); + } catch (InstantiationException ex) { + java.util.logging.Logger.getLogger(EncounterGenerator.class.getName()).log(java.util.logging.Level.SEVERE, null, ex); + } catch (IllegalAccessException ex) { + java.util.logging.Logger.getLogger(EncounterGenerator.class.getName()).log(java.util.logging.Level.SEVERE, null, ex); + } catch (javax.swing.UnsupportedLookAndFeelException ex) { + java.util.logging.Logger.getLogger(EncounterGenerator.class.getName()).log(java.util.logging.Level.SEVERE, null, ex); + } + // + + /* Create and display the form */ + java.awt.EventQueue.invokeLater(new Runnable() { + public void run() { + new EncounterGenerator().setVisible(true); + } + }); + } + + // Variables declaration - do not modify//GEN-BEGIN:variables + private javax.swing.Box.Filler filler1; + private javax.swing.Box.Filler filler2; + private javax.swing.Box.Filler filler3; + private javax.swing.JButton jButtonStart; + private javax.swing.JComboBox jCombo; + private javax.swing.JLabel jLabel1; + private javax.swing.JLabel jLabel2; + private javax.swing.JPanel jPanel1; + private javax.swing.JScrollPane jScrollPane1; + private javax.swing.JSpinner jSpinner; + private javax.swing.JTextArea jText; + // End of variables declaration//GEN-END:variables +} diff --git a/src/eu/smoser/dungeongenerator/main/TreasureGenerator.form b/src/eu/smoser/dungeongenerator/main/TreasureGenerator.form index 857e958..932e5e1 100644 --- a/src/eu/smoser/dungeongenerator/main/TreasureGenerator.form +++ b/src/eu/smoser/dungeongenerator/main/TreasureGenerator.form @@ -3,6 +3,7 @@
+ @@ -21,6 +22,7 @@ + @@ -94,9 +96,10 @@ - + - + + diff --git a/src/eu/smoser/dungeongenerator/main/TreasureGenerator.java b/src/eu/smoser/dungeongenerator/main/TreasureGenerator.java index b19d881..b2cf23e 100644 --- a/src/eu/smoser/dungeongenerator/main/TreasureGenerator.java +++ b/src/eu/smoser/dungeongenerator/main/TreasureGenerator.java @@ -54,9 +54,10 @@ public class TreasureGenerator extends javax.swing.JFrame { jLabel1 = new javax.swing.JLabel(); filler2 = new javax.swing.Box.Filler(new java.awt.Dimension(0, 0), new java.awt.Dimension(0, 0), new java.awt.Dimension(32767, 0)); jScrollPane1 = new javax.swing.JScrollPane(); - jText = new javax.swing.JTextField(); + jText = new javax.swing.JTextArea(); setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE); + setTitle("Schätze generieren"); setMinimumSize(new java.awt.Dimension(800, 600)); jButtonStart.setText("Schatz generieren"); @@ -80,7 +81,8 @@ public class TreasureGenerator extends javax.swing.JFrame { getContentPane().add(jPanel1, java.awt.BorderLayout.PAGE_START); - jText.setEditable(false); + jText.setColumns(20); + jText.setRows(5); jScrollPane1.setViewportView(jText); getContentPane().add(jScrollPane1, java.awt.BorderLayout.CENTER); @@ -91,7 +93,7 @@ public class TreasureGenerator extends javax.swing.JFrame { private void jButtonStartActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButtonStartActionPerformed String text = ""; for(int i = 1; i <= (int) jSpinner.getValue(); i++){ - text += i + ": " + Treasure.DetailedTreasure() + "\n\n"; + text += i + " Handvoll:\n" + Treasure.DetailedTreasure() + "\n\n"; } jText.setText(text); }//GEN-LAST:event_jButtonStartActionPerformed @@ -139,6 +141,6 @@ public class TreasureGenerator extends javax.swing.JFrame { private javax.swing.JPanel jPanel1; private javax.swing.JScrollPane jScrollPane1; private javax.swing.JSpinner jSpinner; - private javax.swing.JTextField jText; + private javax.swing.JTextArea jText; // End of variables declaration//GEN-END:variables }