Move (most) hardcoded defaults to MazeDefault

- harcoded values centralized
- IntegerField for JTextField containing numbers
- fix, can draw even if topleft position is not (0,0) ( ie if scrollbar were used )
This commit is contained in:
philippe lhardy
2020-12-15 22:26:57 +01:00
parent 14b6d9ff1d
commit b8cb7394cd
8 changed files with 274 additions and 110 deletions

View File

@@ -2,19 +2,21 @@ package org.artisanlogiciel.games.maze.gui;
import org.artisanlogiciel.games.maze.MazeParams;
import org.artisanlogiciel.games.maze.MazeParamsFixed;
import org.artisanlogiciel.games.maze.gui.component.IntegerField;
import org.artisanlogiciel.games.maze.gui.component.Panel;
import javax.swing.*;
import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener;
import java.util.Random;
public class MazeSettings extends JPanel {
public class MazeSettings extends Panel {
MazeParams params;
JTextField textWidth = null;
JTextField textHeight = null;
JTextField textDepth = null;
JTextField textSeed = null;
IntegerField fieldWidth = null;
IntegerField fieldHeight = null;
IntegerField fieldDepth = null;
IntegerField fieldSeed = null;
JCheckBox onewaywallCB = null;
// TODO set width and height and depth of maze with gui
@@ -25,35 +27,39 @@ public class MazeSettings extends JPanel {
}
void createSettingsGui() {
MazeParams defaultParams = MazeDefault.getInstance().getParams();
if (params != null) {
final JSlider slider = new JSlider(1, 100);
final JSlider slider = new JSlider(1,
Math.max(
Math.max(defaultParams.getHeight(),defaultParams.getHeight()),
Math.max(defaultParams.getWidth(),params.getWidth())));
slider.addChangeListener(new ChangeListener() {
public void stateChanged(ChangeEvent e) {
// settextWidthWallSize(slider.getValue());
String valueStr = "" + slider.getValue();
textWidth.setText(valueStr);
textHeight.setText(valueStr);
fieldWidth.getTextField().setText(valueStr);
fieldHeight.getTextField().setText(valueStr);
}
});
add(slider);
JLabel widthLabel = new JLabel(Display.labels.getString("width"));
textWidth = new JTextField("0" + params.getWidth());
add(widthLabel);
add(textWidth);
JLabel heightLabel = new JLabel(Display.labels.getString("height"));
textHeight = new JTextField("0" + params.getHeight());
add(heightLabel);
add(textHeight);
JLabel depthLabel = new JLabel(Display.labels.getString("depth"));
textDepth = new JTextField("0" + params.getMaxDepth());
add(depthLabel);
add(textDepth);
JLabel seedLabel = new JLabel(Display.labels.getString("seed"));
textSeed = new JTextField( "" + params.getSeed(),16);
add(seedLabel);
add(textSeed);
fieldWidth = new IntegerField("width",params.getWidth());
addField(fieldWidth);
fieldHeight = new IntegerField("height",params.getHeight());
addField(fieldHeight);
fieldDepth = new IntegerField("depth",params.getMaxDepth());
addField(fieldDepth);
JLabel seedLabel = new JLabel();
fieldSeed = new IntegerField("seed", params.getSeed());
addField(fieldSeed);
onewaywallCB = new JCheckBox("one way wall", false);
add(onewaywallCB);
}
@@ -61,12 +67,12 @@ public class MazeSettings extends JPanel {
public MazeParams resetParams() {
params = new MazeParamsFixed(params.getSaveDir(),
Integer.parseInt(textWidth.getText()),
Integer.parseInt(textHeight.getText()),
Integer.parseInt(textDepth.getText()),
fieldWidth.getValue(),
fieldHeight.getValue(),
fieldDepth.getValue(),
new Random().nextLong()
);
textSeed.setText("" + params.getSeed());
fieldSeed.getTextField().setText("" + params.getSeed());
return params;
}