|
@@ -1,39 +1,44 @@
|
|
|
package org.leumasjaffe.charsheet.view;
|
|
package org.leumasjaffe.charsheet.view;
|
|
|
|
|
|
|
|
-import javax.swing.JFileChooser;
|
|
|
|
|
-import javax.swing.JFrame;
|
|
|
|
|
-import javax.swing.JTabbedPane;
|
|
|
|
|
-
|
|
|
|
|
-import com.fasterxml.jackson.databind.ObjectMapper;
|
|
|
|
|
-import com.fasterxml.jackson.datatype.jdk8.Jdk8Module;
|
|
|
|
|
-
|
|
|
|
|
-import lombok.AccessLevel;
|
|
|
|
|
-import lombok.NonNull;
|
|
|
|
|
-import lombok.SneakyThrows;
|
|
|
|
|
-import lombok.experimental.FieldDefaults;
|
|
|
|
|
-import lombok.experimental.NonFinal;
|
|
|
|
|
|
|
+import static org.leumasjaffe.charsheet.config.Constants.K_LEVELUP;
|
|
|
|
|
+import static org.leumasjaffe.charsheet.config.Constants.LevelUpStyle.DURING_REST;
|
|
|
|
|
+import static org.leumasjaffe.charsheet.config.Constants.LevelUpStyle.IMMEDIATELY;
|
|
|
|
|
|
|
|
import java.awt.BorderLayout;
|
|
import java.awt.BorderLayout;
|
|
|
-import javax.swing.JPanel;
|
|
|
|
|
-import javax.swing.JMenuBar;
|
|
|
|
|
|
|
+import java.awt.event.InputEvent;
|
|
|
|
|
+import java.awt.event.KeyEvent;
|
|
|
|
|
+import java.awt.event.WindowEvent;
|
|
|
|
|
+import java.io.File;
|
|
|
|
|
+import java.util.ArrayList;
|
|
|
|
|
+import java.util.List;
|
|
|
|
|
+
|
|
|
|
|
+import javax.swing.JFileChooser;
|
|
|
|
|
+import javax.swing.JFrame;
|
|
|
import javax.swing.JMenu;
|
|
import javax.swing.JMenu;
|
|
|
|
|
+import javax.swing.JMenuBar;
|
|
|
import javax.swing.JMenuItem;
|
|
import javax.swing.JMenuItem;
|
|
|
import javax.swing.JOptionPane;
|
|
import javax.swing.JOptionPane;
|
|
|
|
|
+import javax.swing.JPanel;
|
|
|
|
|
+import javax.swing.JTabbedPane;
|
|
|
import javax.swing.KeyStroke;
|
|
import javax.swing.KeyStroke;
|
|
|
import javax.swing.UIManager;
|
|
import javax.swing.UIManager;
|
|
|
|
|
|
|
|
|
|
+import org.leumasjaffe.charsheet.config.Config;
|
|
|
import org.leumasjaffe.charsheet.model.DDCharacter;
|
|
import org.leumasjaffe.charsheet.model.DDCharacter;
|
|
|
import org.leumasjaffe.charsheet.model.DDCharacterClass;
|
|
import org.leumasjaffe.charsheet.model.DDCharacterClass;
|
|
|
import org.leumasjaffe.charsheet.model.observable.IntValue;
|
|
import org.leumasjaffe.charsheet.model.observable.IntValue;
|
|
|
import org.leumasjaffe.charsheet.observer.ObserverHelper;
|
|
import org.leumasjaffe.charsheet.observer.ObserverHelper;
|
|
|
|
|
+import org.leumasjaffe.charsheet.view.level.ExperienceDialog;
|
|
|
import org.leumasjaffe.observer.ObserverDispatch;
|
|
import org.leumasjaffe.observer.ObserverDispatch;
|
|
|
|
|
|
|
|
-import java.awt.event.KeyEvent;
|
|
|
|
|
-import java.awt.event.WindowEvent;
|
|
|
|
|
-import java.io.File;
|
|
|
|
|
-import java.util.ArrayList;
|
|
|
|
|
-import java.util.List;
|
|
|
|
|
-import java.awt.event.InputEvent;
|
|
|
|
|
|
|
+import com.fasterxml.jackson.databind.ObjectMapper;
|
|
|
|
|
+import com.fasterxml.jackson.datatype.jdk8.Jdk8Module;
|
|
|
|
|
+
|
|
|
|
|
+import lombok.AccessLevel;
|
|
|
|
|
+import lombok.NonNull;
|
|
|
|
|
+import lombok.SneakyThrows;
|
|
|
|
|
+import lombok.experimental.FieldDefaults;
|
|
|
|
|
+import lombok.experimental.NonFinal;
|
|
|
|
|
|
|
|
@FieldDefaults(level=AccessLevel.PRIVATE, makeFinal=true)
|
|
@FieldDefaults(level=AccessLevel.PRIVATE, makeFinal=true)
|
|
|
public class D20Sheet extends JFrame {
|
|
public class D20Sheet extends JFrame {
|
|
@@ -118,15 +123,10 @@ public class D20Sheet extends JFrame {
|
|
|
|
|
|
|
|
JMenuItem mntmGainExperience = new JMenuItem("Gain Experience");
|
|
JMenuItem mntmGainExperience = new JMenuItem("Gain Experience");
|
|
|
mntmGainExperience.addActionListener(e -> {
|
|
mntmGainExperience.addActionListener(e -> {
|
|
|
- // TODO move to own thing?
|
|
|
|
|
- final String input = JOptionPane.showInputDialog("How much experience");
|
|
|
|
|
- if (input == null || input.isEmpty()) return;
|
|
|
|
|
- final int exp = Integer.parseInt(input);
|
|
|
|
|
- if (exp <= 0) return;
|
|
|
|
|
- final IntValue mdlExp = this.model.getExperience();
|
|
|
|
|
- mdlExp.value(mdlExp.value()+exp);
|
|
|
|
|
- ObserverDispatch.notifySubscribers(mdlExp, this);
|
|
|
|
|
- DialogBuilder.showLevelUpDialog(this, this.model, 0);
|
|
|
|
|
|
|
+ ExperienceDialog.GainExperience(this.model);
|
|
|
|
|
+ if (Config.get(K_LEVELUP, IMMEDIATELY) == IMMEDIATELY) {
|
|
|
|
|
+ DialogBuilder.showLevelUpDialog(this, this.model, 0);
|
|
|
|
|
+ }
|
|
|
});
|
|
});
|
|
|
mnSession.add(mntmGainExperience);
|
|
mnSession.add(mntmGainExperience);
|
|
|
|
|
|
|
@@ -134,7 +134,9 @@ public class D20Sheet extends JFrame {
|
|
|
mntmTakeRest.addActionListener(e -> {
|
|
mntmTakeRest.addActionListener(e -> {
|
|
|
// Step 0: Gather information about the rest
|
|
// Step 0: Gather information about the rest
|
|
|
// Step 0.1: Check if 8-hour or full day
|
|
// Step 0.1: Check if 8-hour or full day
|
|
|
- // Step 0.2: Check if Long-Term-Care
|
|
|
|
|
|
|
+ // Step 0.2: Check for level-up
|
|
|
|
|
+ DialogBuilder.showLevelUpDialog(this, this.model, 0);
|
|
|
|
|
+ // Step 0.3: Check if Long-Term-Care
|
|
|
// Step 1: Heal Character according to info
|
|
// Step 1: Heal Character according to info
|
|
|
// Step 1.1: Heal non-lethal damage
|
|
// Step 1.1: Heal non-lethal damage
|
|
|
// Step 1.2: Heal ability damage
|
|
// Step 1.2: Heal ability damage
|