diff --git a/core/src/me/retrodaredevil/game/trackshooter/entity/enemies/snake/SnakePart.java b/core/src/me/retrodaredevil/game/trackshooter/entity/enemies/snake/SnakePart.java index bd1e70c..c14b0fb 100644 --- a/core/src/me/retrodaredevil/game/trackshooter/entity/enemies/snake/SnakePart.java +++ b/core/src/me/retrodaredevil/game/trackshooter/entity/enemies/snake/SnakePart.java @@ -18,6 +18,7 @@ import me.retrodaredevil.game.trackshooter.entity.movement.SmoothOppositePositionTarget; import me.retrodaredevil.game.trackshooter.entity.movement.SmoothTravelMoveComponent; import me.retrodaredevil.game.trackshooter.entity.player.Player; +import me.retrodaredevil.game.trackshooter.level.CanLevelEnd; import me.retrodaredevil.game.trackshooter.level.LevelEndState; import me.retrodaredevil.game.trackshooter.render.components.ImageRenderComponent; import me.retrodaredevil.game.trackshooter.world.World; diff --git a/core/src/me/retrodaredevil/game/trackshooter/input/GameInputs.java b/core/src/me/retrodaredevil/game/trackshooter/input/GameInputs.java index c77fe26..0fc7532 100644 --- a/core/src/me/retrodaredevil/game/trackshooter/input/GameInputs.java +++ b/core/src/me/retrodaredevil/game/trackshooter/input/GameInputs.java @@ -61,8 +61,8 @@ private static ControlOption createRotationMultiplier(OptionTracker options, boo } private static double getDefaultMouseMultiplier(boolean mobile){ if(mobile) { - double def = 1.5 / (Gdx.graphics.getDensity() + .3); - return Math.round(def * 10.0) / 10.0; + double def = 2.75 / (Gdx.graphics.getDensity() + .3); + return Math.round(def * 10.0) / 10.0; // round to nearest 10% } return 1; } diff --git a/core/src/me/retrodaredevil/game/trackshooter/level/SimpleLevel.java b/core/src/me/retrodaredevil/game/trackshooter/level/SimpleLevel.java index fc58908..c93b027 100644 --- a/core/src/me/retrodaredevil/game/trackshooter/level/SimpleLevel.java +++ b/core/src/me/retrodaredevil/game/trackshooter/level/SimpleLevel.java @@ -78,8 +78,8 @@ public void update(float delta, World world) { * @return true if this level is able to end, false otherwise */ private boolean shouldLevelEnd(World world){ - Collection endCheckCollection = new ArrayList<>(); - endCheckCollection.addAll(world.getEntities()); + Collection endCheckCollection = new HashSet<>(); + endCheckCollection.addAll(world.getAllEntities()); endCheckCollection.addAll(functions); LevelEndState highest = LevelEndState.CAN_END; diff --git a/core/src/me/retrodaredevil/game/trackshooter/render/parts/OptionMenu.java b/core/src/me/retrodaredevil/game/trackshooter/render/parts/OptionMenu.java index 3f1e1dc..d915fb0 100644 --- a/core/src/me/retrodaredevil/game/trackshooter/render/parts/OptionMenu.java +++ b/core/src/me/retrodaredevil/game/trackshooter/render/parts/OptionMenu.java @@ -17,9 +17,8 @@ import me.retrodaredevil.game.trackshooter.render.components.RenderComponent; import me.retrodaredevil.game.trackshooter.render.selection.options.ButtonExitMenuSingleOption; import me.retrodaredevil.game.trackshooter.render.selection.options.ButtonSingleOption; -import me.retrodaredevil.game.trackshooter.render.selection.options.PlainActorSingleOption; import me.retrodaredevil.game.trackshooter.render.selection.SelectionMenuRenderComponent; -import me.retrodaredevil.game.trackshooter.render.selection.options.HorizontalSelectionSingleOption; +import me.retrodaredevil.game.trackshooter.render.selection.options.GroupedSelectionSingleOption; import me.retrodaredevil.game.trackshooter.render.selection.options.providers.BasicOptionProvider; import me.retrodaredevil.game.trackshooter.render.selection.options.providers.ConfigurableObjectOptionProvider; import me.retrodaredevil.game.trackshooter.render.selection.options.providers.PageControlOptionVisibility; @@ -64,29 +63,42 @@ public void setToController(int configControllerPlayerIndex, ConfigurableControl renderComponent = null; return; } + /* + If you get an index out of bounds exception, it probably has something to do with the scroll pane + */ final PageControlOptionVisibility pageControlOptionVisibility = new PageControlOptionVisibility(); final Size topSize = Constants.OPTIONS_MENU_TOP_BUTTONS_SIZE; final Size size = Constants.OPTIONS_MENU_BOTTOM_BUTTONS_SIZE; renderComponent = new SelectionMenuRenderComponent(renderObject, menuControllerPlayerIndex, menuController, new DialogTable("Options", renderObject), - Arrays.asList( - new BasicOptionProvider(new HorizontalSelectionSingleOption(Size.widthOnly(400), Arrays.asList(new BasicOptionProvider( - new ButtonSingleOption(new TextButton("Main", renderObject.getUISkin(), "small"), topSize, + Collections.singletonList(new BasicOptionProvider( + new GroupedSelectionSingleOption(Size.widthOnly(400), true, Arrays.asList(new BasicOptionProvider( + new ButtonSingleOption(new TextButton("main", renderObject.getUISkin(), "small"), topSize, requestingActions -> pageControlOptionVisibility.setPage(PageControlOptionVisibility.Page.MAIN)), - new ButtonSingleOption(new TextButton("Move", renderObject.getUISkin(), "small"), topSize, + new ButtonSingleOption(new TextButton("move", renderObject.getUISkin(), "small"), topSize, requestingActions -> pageControlOptionVisibility.setPage(PageControlOptionVisibility.Page.MOVEMENT)), - new ButtonSingleOption(new TextButton("Rotate", renderObject.getUISkin(), "small"), topSize, + new ButtonSingleOption(new TextButton("rotate", renderObject.getUISkin(), "small"), topSize, requestingActions -> pageControlOptionVisibility.setPage(PageControlOptionVisibility.Page.ROTATION)), - new ButtonSingleOption(new TextButton("Shoot", renderObject.getUISkin(), "small"), topSize, + new ButtonSingleOption(new TextButton("shoot", renderObject.getUISkin(), "small"), topSize, requestingActions -> pageControlOptionVisibility.setPage(PageControlOptionVisibility.Page.SHOOTING)), - new ButtonSingleOption(new TextButton("Misc", renderObject.getUISkin(), "small"), topSize, - requestingActions -> pageControlOptionVisibility.setPage(PageControlOptionVisibility.Page.MISC)) - )))), - new ConfigurableObjectOptionProvider(Size.widthOnly(400), configControllerPlayerIndex, menuController, renderObject, saveObject, pageControlOptionVisibility), - new BasicOptionProvider(new HorizontalSelectionSingleOption(Size.widthOnly(400), Arrays.asList(new BasicOptionProvider( - new ButtonExitMenuSingleOption(new TextButton("back", renderObject.getUISkin(), "small"), size) - )))) - ), + new ButtonSingleOption(new TextButton("misc", renderObject.getUISkin(), "small"), topSize, + requestingActions -> pageControlOptionVisibility.setPage(PageControlOptionVisibility.Page.MISC)), + new ButtonSingleOption(new TextButton("all", renderObject.getUISkin(), "small"), topSize, + requestingActions -> pageControlOptionVisibility.setPage(PageControlOptionVisibility.Page.ALL)) + ))), + new GroupedSelectionSingleOption(Size.NONE, false, Arrays.asList( + new ConfigurableObjectOptionProvider(Size.widthOnly(400), configControllerPlayerIndex, menuController, renderObject, saveObject, pageControlOptionVisibility)) + ), + new GroupedSelectionSingleOption(Size.widthOnly(400), true, Arrays.asList(new BasicOptionProvider( + new ButtonExitMenuSingleOption(new TextButton("back", renderObject.getUISkin(), "small"), size), + new ButtonSingleOption(new TextButton("reset", renderObject.getUISkin(), "small"), size, + requestingActions -> { + if(renderComponent != null) { + renderComponent.resetAll(); + } + }) + ))) + )), this::closeMenu); currentController = menuController; // TODO I believe I originally set this up to check for errors, but this may be unnecessary } diff --git a/core/src/me/retrodaredevil/game/trackshooter/render/selection/ContainerSingleOption.java b/core/src/me/retrodaredevil/game/trackshooter/render/selection/ContainerSingleOption.java index 0f3bcf9..994ae1d 100644 --- a/core/src/me/retrodaredevil/game/trackshooter/render/selection/ContainerSingleOption.java +++ b/core/src/me/retrodaredevil/game/trackshooter/render/selection/ContainerSingleOption.java @@ -14,7 +14,6 @@ public abstract class ContainerSingleOption implements SingleOption { protected final Table container = new Table(); private final Size size; - private Cell containerCell = null; private boolean initialized = false; @@ -42,7 +41,7 @@ public void renderUpdate(ContentTableProvider contentTableProvider, Collection optionProviders){ @@ -33,11 +33,12 @@ public int getSelectedOptionIndex(){ return selectedOptionIndex; } public void setSelectedOptionIndex(int selectedOptionIndex){ - if(!optionPairs.isEmpty()) { - this.selectedOptionIndex = MathUtil.mod(selectedOptionIndex, optionPairs.size()); - } else { - this.selectedOptionIndex = selectedOptionIndex; - } +// if(!optionPairs.isEmpty()) { +// this.selectedOptionIndex = MathUtil.mod(selectedOptionIndex, optionPairs.size()); +// } else { +// this.selectedOptionIndex = selectedOptionIndex; +// } + this.selectedOptionIndex = Math.max(0, Math.min(selectedOptionIndex, optionPairs.size() - 1)); } public void setActive(boolean active){ this.active = active; @@ -94,7 +95,7 @@ public void updateOptions(Collection requestingActions){ * @param requestingActions The actions that are requesting to be completed. This is allowed to be mutated */ public void updateSelection(float delta, JoystickPart selectJoystick, - InputPart selectButton, InputPart backButton, Collection requestingActions){ + InputPart selectButton, InputPart backButton, Set requestingActions){ final boolean hasController = selectJoystick != null && selectButton != null && backButton != null; { diff --git a/core/src/me/retrodaredevil/game/trackshooter/render/selection/SelectionMenuRenderComponent.java b/core/src/me/retrodaredevil/game/trackshooter/render/selection/SelectionMenuRenderComponent.java index fd9ce6f..c577f26 100644 --- a/core/src/me/retrodaredevil/game/trackshooter/render/selection/SelectionMenuRenderComponent.java +++ b/core/src/me/retrodaredevil/game/trackshooter/render/selection/SelectionMenuRenderComponent.java @@ -2,11 +2,10 @@ import com.badlogic.gdx.scenes.scene2d.Stage; -import java.util.ArrayList; import java.util.Collection; import java.util.EnumSet; -import java.util.HashSet; import java.util.Objects; +import java.util.Set; import me.retrodaredevil.controller.input.InputPart; import me.retrodaredevil.controller.input.JoystickPart; @@ -29,12 +28,12 @@ public class SelectionMenuRenderComponent implements RenderComponent { /** * - * @param renderObject - * @param playerIndex - * @param menuController + * @param renderObject The render object + * @param playerIndex The player index + * @param menuController The controller that will control this menu * @param contentTableProvider The content table provider. This will automatically be disposed of - * @param optionProviders - * @param exitRequestListener + * @param optionProviders The option providers + * @param exitRequestListener Will be called when the back button is pressed */ public SelectionMenuRenderComponent(RenderObject renderObject, Integer playerIndex, GameInput menuController, ContentTableProvider contentTableProvider, @@ -56,13 +55,19 @@ public void clearTable(){ optionHolder.getContentTableProvider().resetTable(); } + public void resetAll(){ + for(OptionPair optionPair : optionHolder.getOptionPairs()){ + optionPair.getSingleOption().resetOption(); + } + } + @Override public void render(float delta, Stage stage) { final JoystickPart selectJoystick = menuController == null ? null : Objects.requireNonNull(menuController.getSelectorJoystick()); final InputPart selectButton = menuController == null ? null : Objects.requireNonNull(menuController.getEnterButton()); final InputPart backButton = menuController == null ? null : Objects.requireNonNull(menuController.getBackButton()); - final Collection requestingActions = EnumSet.noneOf(SelectAction.class); + final Set requestingActions = EnumSet.noneOf(SelectAction.class); boolean active = optionHolder.isActive(); int newOptionIndex = optionHolder.getSelectedOptionIndex(); if(menuController != null) { diff --git a/core/src/me/retrodaredevil/game/trackshooter/render/selection/SingleOption.java b/core/src/me/retrodaredevil/game/trackshooter/render/selection/SingleOption.java index 99574f2..746dc83 100644 --- a/core/src/me/retrodaredevil/game/trackshooter/render/selection/SingleOption.java +++ b/core/src/me/retrodaredevil/game/trackshooter/render/selection/SingleOption.java @@ -1,6 +1,7 @@ package me.retrodaredevil.game.trackshooter.render.selection; import java.util.Collection; +import java.util.Set; import me.retrodaredevil.controller.input.InputPart; import me.retrodaredevil.controller.input.JoystickPart; @@ -28,7 +29,7 @@ public interface SingleOption { /** * Should reset the control option to its original state */ - void reset(); + void resetOption(); /** * Should remove whatever was added to the table in {@link #renderUpdate(ContentTableProvider, Collection)} @@ -43,7 +44,7 @@ public interface SingleOption { * @param back The back button * @param requestedActions A collection of actions that the caller would like to do. The implementation should remove actions that are not desired */ - void selectUpdate(float delta, JoystickPart selector, InputPart select, InputPart back, Collection requestedActions); + void selectUpdate(float delta, JoystickPart selector, InputPart select, InputPart back, Set requestedActions); /** * Called when this option should be deselected diff --git a/core/src/me/retrodaredevil/game/trackshooter/render/selection/options/ButtonSingleOption.java b/core/src/me/retrodaredevil/game/trackshooter/render/selection/options/ButtonSingleOption.java index 91f8abe..acabf06 100644 --- a/core/src/me/retrodaredevil/game/trackshooter/render/selection/options/ButtonSingleOption.java +++ b/core/src/me/retrodaredevil/game/trackshooter/render/selection/options/ButtonSingleOption.java @@ -3,6 +3,7 @@ import com.badlogic.gdx.scenes.scene2d.ui.Button; import java.util.Collection; +import java.util.Set; import me.retrodaredevil.controller.input.InputPart; import me.retrodaredevil.controller.input.JoystickPart; @@ -31,7 +32,7 @@ protected void onRequestActions(Collection requestedAction } @Override - public void selectUpdate(float delta, JoystickPart selector, InputPart select, InputPart back, Collection requestedActions) { + public void selectUpdate(float delta, JoystickPart selector, InputPart select, InputPart back, Set requestedActions) { super.selectUpdate(delta, selector, select, back, requestedActions); if(select.isPressed()){ onButtonPress.onButtonPress(requestedActions); diff --git a/core/src/me/retrodaredevil/game/trackshooter/render/selection/options/CheckBoxSingleOption.java b/core/src/me/retrodaredevil/game/trackshooter/render/selection/options/CheckBoxSingleOption.java index e778095..ed7e5c5 100644 --- a/core/src/me/retrodaredevil/game/trackshooter/render/selection/options/CheckBoxSingleOption.java +++ b/core/src/me/retrodaredevil/game/trackshooter/render/selection/options/CheckBoxSingleOption.java @@ -4,7 +4,7 @@ import com.badlogic.gdx.scenes.scene2d.ui.CheckBox; import com.badlogic.gdx.utils.Align; -import java.util.Collection; +import java.util.Set; import me.retrodaredevil.controller.input.InputPart; import me.retrodaredevil.controller.input.JoystickPart; @@ -35,6 +35,11 @@ protected double getSetValue() { return checkBox.isChecked() ? 1 : 0; } + @Override + protected void setValueTo(double value) { + checkBox.setChecked( value >= .5); + } + @Override protected void onInit() { super.onInit(); @@ -52,7 +57,7 @@ protected void onUpdate() { } @Override - public void selectUpdate(float delta, JoystickPart selector, InputPart select, InputPart back, Collection requestedActions) { + public void selectUpdate(float delta, JoystickPart selector, InputPart select, InputPart back, Set requestedActions) { ActorUtil.fireInputEvents(checkBox, InputEvent.Type.enter); if(select.isPressed()){ checkBox.toggle(); diff --git a/core/src/me/retrodaredevil/game/trackshooter/render/selection/options/DropDownSingleOption.java b/core/src/me/retrodaredevil/game/trackshooter/render/selection/options/DropDownSingleOption.java index eac5f9a..1c70191 100644 --- a/core/src/me/retrodaredevil/game/trackshooter/render/selection/options/DropDownSingleOption.java +++ b/core/src/me/retrodaredevil/game/trackshooter/render/selection/options/DropDownSingleOption.java @@ -5,6 +5,7 @@ import com.badlogic.gdx.utils.Array; import java.util.Collection; +import java.util.Set; import me.retrodaredevil.controller.input.InputPart; import me.retrodaredevil.controller.input.JoystickPart; @@ -46,6 +47,12 @@ protected boolean canSave() { protected double getSetValue() { return selectBox.getSelectedIndex(); } + + @Override + protected void setValueTo(double value) { + selectBox.setSelectedIndex((int) value); + } + private void updateItems(){ itemsArray.clear(); Collection options = controlOption.getOptionValue().getRadioOptions(); @@ -80,7 +87,7 @@ private void hide(){ } @Override - public void selectUpdate(float delta, JoystickPart selector, InputPart select, InputPart back, Collection requestedActions) { + public void selectUpdate(float delta, JoystickPart selector, InputPart select, InputPart back, Set requestedActions) { ActorUtil.fireInputEvents(selectBox, InputEvent.Type.enter); // The reason we have the use the 'isShown' variable, is that in a SelectBox, pressing escape // (sometimes mapped to the back button) closes the drop down (IT'S FREAKING HARD CODED) diff --git a/core/src/me/retrodaredevil/game/trackshooter/render/selection/options/HorizontalSelectionSingleOption.java b/core/src/me/retrodaredevil/game/trackshooter/render/selection/options/GroupedSelectionSingleOption.java similarity index 66% rename from core/src/me/retrodaredevil/game/trackshooter/render/selection/options/HorizontalSelectionSingleOption.java rename to core/src/me/retrodaredevil/game/trackshooter/render/selection/options/GroupedSelectionSingleOption.java index ebe83ac..7fb46cd 100644 --- a/core/src/me/retrodaredevil/game/trackshooter/render/selection/options/HorizontalSelectionSingleOption.java +++ b/core/src/me/retrodaredevil/game/trackshooter/render/selection/options/GroupedSelectionSingleOption.java @@ -4,23 +4,26 @@ import com.badlogic.gdx.scenes.scene2d.ui.Table; import java.util.Collection; -import java.util.Collections; +import java.util.Set; import me.retrodaredevil.controller.input.InputPart; import me.retrodaredevil.controller.input.JoystickPart; import me.retrodaredevil.game.trackshooter.render.selection.ContainerSingleOption; import me.retrodaredevil.game.trackshooter.render.selection.ContentTableProvider; import me.retrodaredevil.game.trackshooter.render.selection.OptionHolder; +import me.retrodaredevil.game.trackshooter.render.selection.OptionPair; import me.retrodaredevil.game.trackshooter.render.selection.SelectAction; import me.retrodaredevil.game.trackshooter.render.selection.SingleOptionProvider; import me.retrodaredevil.game.trackshooter.util.Size; -public class HorizontalSelectionSingleOption extends ContainerSingleOption { +public class GroupedSelectionSingleOption extends ContainerSingleOption { + private final boolean horizontal; private final OptionHolder optionHolder; - public HorizontalSelectionSingleOption(Size size, Collection optionProviders){ + public GroupedSelectionSingleOption(Size size, boolean horizontal, Collection optionProviders){ super(size); + this.horizontal = horizontal; this.optionHolder = new OptionHolder(0, new ContainerContentTableProvider(), optionProviders); } @@ -31,14 +34,23 @@ protected void onRequestActions(Collection requestedAction } @Override - public void selectUpdate(float delta, JoystickPart selector, InputPart select, InputPart back, Collection requestedActions) { + public void selectUpdate(float delta, JoystickPart selector, InputPart select, InputPart back, Set requestedActions) { optionHolder.setActive(true); int index = optionHolder.getSelectedOptionIndex(); - final InputPart xAxis = selector.getXAxis(); - if(xAxis.isPressed()){ - index += xAxis.getDigitalPosition(); - requestedActions.add(SelectAction.CHANGE_OPTION); + if(horizontal) { + final InputPart xAxis = selector.getXAxis(); + if (xAxis.isPressed()) { + index += xAxis.getDigitalPosition(); + requestedActions.add(SelectAction.CHANGE_OPTION); + } + } else { + final InputPart yAxis = selector.getYAxis(); + if (yAxis.isPressed()) { + index -= yAxis.getDigitalPosition(); + requestedActions.add(SelectAction.CHANGE_OPTION); + index = Math.max(0, Math.min(index, optionHolder.getOptionPairs().size() - 1)); + } } optionHolder.updateSelection(delta, selector, select, back, requestedActions); if(requestedActions.contains(SelectAction.CHANGE_OPTION) && index != optionHolder.getSelectedOptionIndex()){ @@ -50,6 +62,14 @@ public void selectUpdate(float delta, JoystickPart selector, InputPart select, I } } + @Override + public void resetOption() { + super.resetOption(); + for(OptionPair optionPair : optionHolder.getOptionPairs()){ + optionPair.getSingleOption().resetOption(); + } + } + @Override public void deselect() { optionHolder.deselectCurrent(); @@ -79,7 +99,7 @@ public void dispose() { @Override public boolean isHorizontal() { - return true; + return horizontal; } } } diff --git a/core/src/me/retrodaredevil/game/trackshooter/render/selection/options/PlainActorSingleOption.java b/core/src/me/retrodaredevil/game/trackshooter/render/selection/options/PlainActorSingleOption.java index bf7c862..86d3296 100644 --- a/core/src/me/retrodaredevil/game/trackshooter/render/selection/options/PlainActorSingleOption.java +++ b/core/src/me/retrodaredevil/game/trackshooter/render/selection/options/PlainActorSingleOption.java @@ -4,7 +4,7 @@ import com.badlogic.gdx.scenes.scene2d.InputEvent; import com.badlogic.gdx.scenes.scene2d.ui.Cell; -import java.util.Collection; +import java.util.Set; import me.retrodaredevil.controller.input.InputPart; import me.retrodaredevil.controller.input.JoystickPart; @@ -29,7 +29,7 @@ protected void onInit() { } @Override - public void selectUpdate(float delta, JoystickPart selector, InputPart select, InputPart back, Collection requestedActions) { + public void selectUpdate(float delta, JoystickPart selector, InputPart select, InputPart back, Set requestedActions) { ActorUtil.fireInputEvents(actor, InputEvent.Type.enter); if(select.isPressed()){ ActorUtil.fireInputEvents(actor, InputEvent.Type.touchDown, InputEvent.Type.touchUp); diff --git a/core/src/me/retrodaredevil/game/trackshooter/render/selection/options/SimpleControlOptionSingleOption.java b/core/src/me/retrodaredevil/game/trackshooter/render/selection/options/SimpleControlOptionSingleOption.java index a78783f..ced70d9 100644 --- a/core/src/me/retrodaredevil/game/trackshooter/render/selection/options/SimpleControlOptionSingleOption.java +++ b/core/src/me/retrodaredevil/game/trackshooter/render/selection/options/SimpleControlOptionSingleOption.java @@ -35,6 +35,8 @@ public ControlOption getControlOption() { */ protected abstract double getSetValue(); + protected abstract void setValueTo(double value); + @Override protected void onInit() { super.onInit(); @@ -61,9 +63,12 @@ protected void onUpdate() { @Override - public void reset() { - super.reset(); - controlOption.getOptionValue().setToDefaultOptionValue(); + public void resetOption() { + super.resetOption(); + OptionValue option = controlOption.getOptionValue(); + option.setToDefaultOptionValue(); + setValueTo(option.getOptionValue()); + optionSaver.saveControlOption(playerIndex, controlOption); } } diff --git a/core/src/me/retrodaredevil/game/trackshooter/render/selection/options/SliderSingleOption.java b/core/src/me/retrodaredevil/game/trackshooter/render/selection/options/SliderSingleOption.java index dcf3ac5..6df7fd6 100644 --- a/core/src/me/retrodaredevil/game/trackshooter/render/selection/options/SliderSingleOption.java +++ b/core/src/me/retrodaredevil/game/trackshooter/render/selection/options/SliderSingleOption.java @@ -8,7 +8,7 @@ import com.badlogic.gdx.scenes.scene2d.utils.Drawable; import com.badlogic.gdx.utils.Align; -import java.util.Collection; +import java.util.Set; import me.retrodaredevil.controller.input.InputPart; import me.retrodaredevil.controller.input.JoystickPart; @@ -99,6 +99,11 @@ protected double getSetValue() { return slider.getValue(); } + @Override + protected void setValueTo(double value) { + slider.setValue((float) value); + } + private String getNumberText(double number){ OptionValue value = controlOption.getOptionValue(); if(value.isOptionAnalog()){ @@ -112,7 +117,7 @@ protected boolean canSave(){ } @Override - public void selectUpdate(float delta, JoystickPart selector, InputPart select, InputPart back, Collection requestedActions) { + public void selectUpdate(float delta, JoystickPart selector, InputPart select, InputPart back, Set requestedActions) { ActorUtil.fireInputEvents(slider, InputEvent.Type.enter); if(selector.getXAxis().isDown()) { if (sliderPercent == null) { diff --git a/core/src/me/retrodaredevil/game/trackshooter/render/selection/options/providers/PageControlOptionVisibility.java b/core/src/me/retrodaredevil/game/trackshooter/render/selection/options/providers/PageControlOptionVisibility.java index 357182e..2b7c66a 100644 --- a/core/src/me/retrodaredevil/game/trackshooter/render/selection/options/providers/PageControlOptionVisibility.java +++ b/core/src/me/retrodaredevil/game/trackshooter/render/selection/options/providers/PageControlOptionVisibility.java @@ -11,6 +11,9 @@ public void setPage(Page page){ @Override public boolean shouldShow(ControlOption controlOption) { + if(currentPage == Page.ALL){ + return true; + } String[] split = controlOption.getCategory().split("\\."); if(split.length < 2){ return currentPage == Page.MISC; @@ -18,7 +21,7 @@ public boolean shouldShow(ControlOption controlOption) { return Page.getPage(split[1]) == currentPage; } public enum Page { - MAIN("main"), MOVEMENT("movement"), ROTATION("rotation"), SHOOTING("shooting"), MISC("misc"); + MAIN("main"), MOVEMENT("movement"), ROTATION("rotation"), SHOOTING("shooting"), MISC("misc"), ALL("*"); private final String name; Page(String name){ diff --git a/core/src/me/retrodaredevil/game/trackshooter/world/World.java b/core/src/me/retrodaredevil/game/trackshooter/world/World.java index a5b6668..0c026a8 100644 --- a/core/src/me/retrodaredevil/game/trackshooter/world/World.java +++ b/core/src/me/retrodaredevil/game/trackshooter/world/World.java @@ -108,6 +108,15 @@ public Collection getEntities(){ return entities; } + /** + * @return All entities in {@link #getEntities()} and the entities that will be added next frame + */ + public Collection getAllEntities(){ + List r = new ArrayList<>(entities); + r.addAll(entitiesToAdd); + return r; + } + /** * NOTE: This does not add it to the Collection returned in getEntities() immediately because it needs to add it next frame * so it is initialized correctly