From 0b00d6fb0a7260d66940beb1690c5c2ce8e951d8 Mon Sep 17 00:00:00 2001 From: fgnm Date: Sat, 29 Jun 2024 10:28:31 +0200 Subject: [PATCH] Add scroll velocity editor config, close #93 --- hyperlap2d-common-api | 2 +- .../editor/view/stage/SandboxMediator.java | 8 +++- .../view/ui/settings/SandboxSettings.java | 40 ++++++++++++++++--- 3 files changed, 43 insertions(+), 7 deletions(-) diff --git a/hyperlap2d-common-api b/hyperlap2d-common-api index 288141e3..e7814c6e 160000 --- a/hyperlap2d-common-api +++ b/hyperlap2d-common-api @@ -1 +1 @@ -Subproject commit 288141e3f9da3405fc8afb802b425c1e892c3b9f +Subproject commit e7814c6ef576e7e578201e82a67dee7e047e09ce diff --git a/src/main/java/games/rednblack/editor/view/stage/SandboxMediator.java b/src/main/java/games/rednblack/editor/view/stage/SandboxMediator.java index efd3fac5..39017ade 100644 --- a/src/main/java/games/rednblack/editor/view/stage/SandboxMediator.java +++ b/src/main/java/games/rednblack/editor/view/stage/SandboxMediator.java @@ -31,6 +31,7 @@ import games.rednblack.editor.controller.commands.AddComponentToItemCommand; import games.rednblack.editor.controller.commands.CompositeCameraChangeCommand; import games.rednblack.editor.controller.commands.RemoveComponentFromItemCommand; import games.rednblack.editor.proxy.CommandManager; +import games.rednblack.editor.proxy.SettingsManager; import games.rednblack.editor.renderer.components.NodeComponent; import games.rednblack.editor.utils.KeyBindingsLayout; import games.rednblack.editor.utils.runtime.SandboxComponentRetriever; @@ -69,6 +70,8 @@ public class SandboxMediator extends Mediator { private static final Vector3 temp = new Vector3(); private static final Vector2 tmp = new Vector2(); + private SettingsManager settingsManager; + public SandboxMediator() { super(NAME, Sandbox.getInstance()); } @@ -81,6 +84,8 @@ public class SandboxMediator extends Mediator { getViewComponent().addListener(stageListener); initTools(); + + settingsManager = facade.retrieveProxy(SettingsManager.NAME); } private void initTools() { @@ -443,7 +448,8 @@ public class SandboxMediator extends Mediator { } else { if (currentSelectedTool != null && !currentSelectedTool.stageMouseScrolled(amountX, amountY)) { - float scale = 30f / sandbox.getPixelPerWU(); + + float scale = settingsManager.editorConfigVO.scrollVelocity / sandbox.getPixelPerWU(); viewComponent.panSceneBy(amountX * scale, -amountY * scale); } } diff --git a/src/main/java/games/rednblack/editor/view/ui/settings/SandboxSettings.java b/src/main/java/games/rednblack/editor/view/ui/settings/SandboxSettings.java index 16a50b6a..fa43ded1 100644 --- a/src/main/java/games/rednblack/editor/view/ui/settings/SandboxSettings.java +++ b/src/main/java/games/rednblack/editor/view/ui/settings/SandboxSettings.java @@ -1,12 +1,14 @@ package games.rednblack.editor.view.ui.settings; import com.badlogic.gdx.graphics.Color; +import com.badlogic.gdx.scenes.scene2d.Actor; import com.badlogic.gdx.scenes.scene2d.InputEvent; +import com.badlogic.gdx.scenes.scene2d.utils.ChangeListener; import com.badlogic.gdx.scenes.scene2d.utils.ClickListener; -import com.kotcrab.vis.ui.widget.VisCheckBox; -import com.kotcrab.vis.ui.widget.VisTable; -import com.kotcrab.vis.ui.widget.VisTextButton; +import com.badlogic.gdx.utils.Align; +import com.kotcrab.vis.ui.widget.*; import com.kotcrab.vis.ui.widget.color.ColorPickerAdapter; +import games.rednblack.editor.utils.RoundUtils; import games.rednblack.editor.view.stage.Sandbox; import games.rednblack.h2d.common.MsgAPI; import games.rednblack.h2d.common.view.SettingsNodeValue; @@ -20,16 +22,19 @@ public class SandboxSettings extends SettingsNodeValue { private final VisCheckBox disableAmbientComposite, showBoundBoxes; private final TintButton tintButton; + private VisSlider scrollVelocity; public SandboxSettings() { super("Sandbox", Facade.getInstance()); - getContentTable().add("Composites").left().row(); + getContentTable().add("Behavior").left().row(); getContentTable().addSeparator(); disableAmbientComposite = StandardWidgetsFactory.createCheckBox("Disable Ambient light when viewing Composites"); getContentTable().add(disableAmbientComposite).left().padTop(5).padLeft(8).row(); - getContentTable().add("Debug").left().row(); + getContentTable().add(getScrollVelocityTable()).left().padTop(10).row(); + + getContentTable().add("Debug").left().padTop(10).row(); getContentTable().addSeparator(); showBoundBoxes = StandardWidgetsFactory.createCheckBox("Show bounding boxes outline"); getContentTable().add(showBoundBoxes).left().padTop(5).padLeft(8).row(); @@ -83,17 +88,42 @@ public class SandboxSettings extends SettingsNodeValue { getContentTable().add(tintTable).padLeft(8).left().row(); } + private Actor getScrollVelocityTable() { + VisTable scaleTable = new VisTable(); + + scaleTable.add("Scroll Velocity:").padLeft(8); + scrollVelocity = StandardWidgetsFactory.createSlider(30, 400, 1); + scaleTable.add(scrollVelocity).padLeft(8); + VisLabel labelFactor = StandardWidgetsFactory.createLabel("", "default", Align.left); + scaleTable.add(labelFactor).padLeft(8); + labelFactor.setText(String.valueOf(getScrollVelocity())); + scrollVelocity.addListener(new ChangeListener() { + @Override + public void changed(ChangeEvent event, Actor actor) { + labelFactor.setText(String.valueOf(getScrollVelocity())); + } + }); + + return scaleTable; + } + + private float getScrollVelocity() { + return RoundUtils.round(scrollVelocity.getValue(), 0); + } + @Override public void translateSettingsToView() { disableAmbientComposite.setChecked(getSettings().disableAmbientComposite); showBoundBoxes.setChecked(getSettings().showBoundingBoxes); tintButton.setColorValue(getSettings().backgroundColor); + scrollVelocity.setValue(getSettings().scrollVelocity); } @Override public void translateViewToSettings() { getSettings().disableAmbientComposite = disableAmbientComposite.isChecked(); getSettings().showBoundingBoxes = showBoundBoxes.isChecked(); + getSettings().scrollVelocity = getScrollVelocity(); facade.sendNotification(MsgAPI.SAVE_EDITOR_CONFIG); }