diff --git a/hyperlap2d-runtime-libgdx b/hyperlap2d-runtime-libgdx index 15d82099..a8101ae5 160000 --- a/hyperlap2d-runtime-libgdx +++ b/hyperlap2d-runtime-libgdx @@ -1 +1 @@ -Subproject commit 15d82099c47226acf2526af9367e546cb483ba0a +Subproject commit a8101ae54298cca7c7388761093684b50bb6ec2f diff --git a/src/main/java/games/rednblack/editor/controller/commands/ChangeOriginPointPosition.java b/src/main/java/games/rednblack/editor/controller/commands/ChangeOriginPointPosition.java index 186163e1..78082ab5 100644 --- a/src/main/java/games/rednblack/editor/controller/commands/ChangeOriginPointPosition.java +++ b/src/main/java/games/rednblack/editor/controller/commands/ChangeOriginPointPosition.java @@ -1,9 +1,9 @@ package games.rednblack.editor.controller.commands; +import com.kotcrab.vis.ui.util.Validators; import games.rednblack.editor.controller.SandboxCommand; import games.rednblack.editor.renderer.components.TransformComponent; import games.rednblack.editor.utils.runtime.SandboxComponentRetriever; -import games.rednblack.editor.view.ui.validator.FloatInputValidator; import games.rednblack.h2d.common.command.TransformCommandBuilder; import games.rednblack.h2d.common.view.ui.dialog.MultipleInputDialog; import games.rednblack.h2d.common.view.ui.listener.MultipleInputDialogListener; @@ -19,7 +19,7 @@ public class ChangeOriginPointPosition extends SandboxCommand { int entity = notification.getBody(); TransformComponent transformComponent = SandboxComponentRetriever.get(entity, TransformComponent.class); - MultipleInputDialog dialog = new MultipleInputDialog("Origin Position", new String[]{"X : ", "Y : "}, false, new FloatInputValidator(), new MultipleInputDialogListener() { + MultipleInputDialog dialog = new MultipleInputDialog("Origin Position", new String[]{"X : ", "Y : "}, false, new Validators.FloatValidator(), new MultipleInputDialogListener() { @Override public void finished(String[] input) { TransformCommandBuilder commandBuilder = new TransformCommandBuilder(); diff --git a/src/main/java/games/rednblack/editor/controller/commands/ChangePolygonVertexPositionCommand.java b/src/main/java/games/rednblack/editor/controller/commands/ChangePolygonVertexPositionCommand.java index 6bd08a1c..dc772b5a 100644 --- a/src/main/java/games/rednblack/editor/controller/commands/ChangePolygonVertexPositionCommand.java +++ b/src/main/java/games/rednblack/editor/controller/commands/ChangePolygonVertexPositionCommand.java @@ -3,6 +3,7 @@ package games.rednblack.editor.controller.commands; import com.badlogic.gdx.math.Vector2; import com.badlogic.gdx.utils.Array; import com.badlogic.gdx.utils.IntSet; +import com.kotcrab.vis.ui.util.Validators; import games.rednblack.editor.controller.SandboxCommand; import games.rednblack.editor.controller.commands.component.UpdatePolygonVerticesCommand; import games.rednblack.editor.renderer.components.shape.PolygonShapeComponent; @@ -10,7 +11,6 @@ import games.rednblack.editor.renderer.utils.poly.PolygonRuntimeUtils; import games.rednblack.editor.utils.poly.PolygonUtils; import games.rednblack.editor.utils.runtime.SandboxComponentRetriever; import games.rednblack.editor.view.ui.followers.PolygonFollower; -import games.rednblack.editor.view.ui.validator.FloatInputValidator; import games.rednblack.h2d.common.MsgAPI; import games.rednblack.h2d.common.view.ui.dialog.MultipleInputDialog; import games.rednblack.h2d.common.view.ui.listener.MultipleInputDialogListener; @@ -35,7 +35,7 @@ public class ChangePolygonVertexPositionCommand extends SandboxCommand { Vector2 backup = points.get(anchor).cpy(); currentCommandPayload = UpdatePolygonVerticesCommand.payloadInitialState(follower.getEntity()); - MultipleInputDialog dialog = new MultipleInputDialog("Vertex Position", new String[]{"X : ", "Y : "}, false, new FloatInputValidator(), new MultipleInputDialogListener() { + MultipleInputDialog dialog = new MultipleInputDialog("Vertex Position", new String[]{"X : ", "Y : "}, false, new Validators.FloatValidator(), new MultipleInputDialogListener() { @Override public void finished(String[] input) { Array points = polygonShapeComponent.vertices; diff --git a/src/main/java/games/rednblack/editor/view/ui/dialog/NewProjectDialog.java b/src/main/java/games/rednblack/editor/view/ui/dialog/NewProjectDialog.java index b67e8e01..93903f5c 100755 --- a/src/main/java/games/rednblack/editor/view/ui/dialog/NewProjectDialog.java +++ b/src/main/java/games/rednblack/editor/view/ui/dialog/NewProjectDialog.java @@ -30,6 +30,7 @@ import com.badlogic.gdx.utils.Align; import com.kotcrab.vis.ui.util.Validators; import com.kotcrab.vis.ui.widget.*; import com.kotcrab.vis.ui.widget.file.FileChooser; +import games.rednblack.editor.view.ui.validator.GreaterThanIntegerValidator; import games.rednblack.editor.view.ui.validator.StringNameValidator; import games.rednblack.h2d.common.H2DDialog; import games.rednblack.h2d.common.view.ui.StandardWidgetsFactory; @@ -52,7 +53,7 @@ public class NewProjectDialog extends H2DDialog { private VisValidatableTextField originHeightTextField; private String defaultWorkspacePath; private VisValidatableTextField pixelsPerWorldUnitField; - private VisLabel worldSizeLabel; + private final VisLabel worldSizeLabel; NewProjectDialog() { super("Create New Project"); @@ -119,7 +120,7 @@ public class NewProjectDialog extends H2DDialog { dimensionsTable.add(originHeightTextField).width(45).height(21).left(); dimensionsTable.add("px").left(); dimensionsTable.row().padTop(10); - pixelsPerWorldUnitField = StandardWidgetsFactory.createValidableTextField(DEFAULT_PPWU, "light", new Validators.IntegerValidator(), digitsOnlyFilter); + pixelsPerWorldUnitField = StandardWidgetsFactory.createValidableTextField(DEFAULT_PPWU, "light", new GreaterThanIntegerValidator(1, true), digitsOnlyFilter); pixelsPerWorldUnitField.addListener(new ChangeListener() { @Override public void changed(ChangeEvent event, Actor actor) { @@ -166,8 +167,11 @@ public class NewProjectDialog extends H2DDialog { int originH = NumberUtils.toInt(getOriginHeight()); int ppwu = NumberUtils.toInt(getPixelPerWorldUnit(), 1); - - worldSizeLabel.setText(originW / ppwu + " x " + originH / ppwu); + if (ppwu < 1) { + worldSizeLabel.setText("World Unit cannot be < 1"); + } else { + worldSizeLabel.setText(originW / ppwu + " x " + originH / ppwu); + } } private class BtnClickListener extends ClickListener { diff --git a/src/main/java/games/rednblack/editor/view/ui/validator/FloatInputValidator.java b/src/main/java/games/rednblack/editor/view/ui/validator/FloatInputValidator.java deleted file mode 100644 index 1b0132b5..00000000 --- a/src/main/java/games/rednblack/editor/view/ui/validator/FloatInputValidator.java +++ /dev/null @@ -1,15 +0,0 @@ -package games.rednblack.editor.view.ui.validator; - -import com.kotcrab.vis.ui.util.InputValidator; - -public class FloatInputValidator implements InputValidator { - @Override - public boolean validateInput(String input) { - try { - Float.parseFloat(input); - return true; - } catch (NumberFormatException ex) { - return false; - } - } -} \ No newline at end of file diff --git a/src/main/java/games/rednblack/editor/view/ui/validator/GreaterThanIntegerValidator.java b/src/main/java/games/rednblack/editor/view/ui/validator/GreaterThanIntegerValidator.java new file mode 100644 index 00000000..0fbfe4dc --- /dev/null +++ b/src/main/java/games/rednblack/editor/view/ui/validator/GreaterThanIntegerValidator.java @@ -0,0 +1,37 @@ +package games.rednblack.editor.view.ui.validator; + +import com.kotcrab.vis.ui.util.InputValidator; + +public class GreaterThanIntegerValidator implements InputValidator { + private int greaterThan; + private boolean useEquals; + + public GreaterThanIntegerValidator (int greaterThan) { + this.greaterThan = greaterThan; + } + + /** @param inputCanBeEqual if true >= comparison will be used, if false > will be used. */ + public GreaterThanIntegerValidator (int greaterThan, boolean inputCanBeEqual) { + this.greaterThan = greaterThan; + this.useEquals = inputCanBeEqual; + } + + @Override + public boolean validateInput (String input) { + try { + int value = Integer.parseInt(input); + return useEquals ? value >= greaterThan : value > greaterThan; + } catch (NumberFormatException ex) { + return false; + } + } + + /*** @param useEquals if true >= comparison will be used, if false > will be used. */ + public void setUseEquals (boolean useEquals) { + this.useEquals = useEquals; + } + + public void setGreaterThan (int greaterThan) { + this.greaterThan = greaterThan; + } +}