diff --git a/src/yugecin/opsudance/ui/SBOverlay.java b/src/yugecin/opsudance/ui/SBOverlay.java index ec6c647a..5a361a29 100644 --- a/src/yugecin/opsudance/ui/SBOverlay.java +++ b/src/yugecin/opsudance/ui/SBOverlay.java @@ -29,6 +29,7 @@ import org.newdawn.slick.Input; import org.newdawn.slick.state.StateBasedGame; import yugecin.opsudance.ObjectColorOverrides; +import java.util.ArrayList; import java.util.HashMap; import java.util.Map; @@ -77,18 +78,20 @@ public class SBOverlay { Fonts.SMALL.drawString(10, height - 50 - lh, "Menu: N", Color.cyan); Fonts.SMALL.drawString(10, height - 50 - lh * 2, "HIDE: H", Color.cyan); Fonts.SMALL.drawString(10, height - 50 - lh * 3, "obj: J " + index + " K", Color.cyan); + g.setColor(Color.red); if (index < optionsMap.length && optionsMap[index] != null) { int i = 0; for (Object o : optionsMap[index].entrySet()) { Map.Entry option = (Map.Entry) o; - Fonts.SMALL.drawString(10, 50 + i++ * lh, option.getKey().getDisplayName(), Color.cyan); + Fonts.SMALL.drawString(10, 50 + i * lh, option.getKey().getDisplayName(), Color.cyan); + g.fillRect(0, 50 + i * lh + lh / 4, 10, 10); + i++; } } if (gameObjects.length > 0) { int start = gameObjects[0].getTime(); int end = gameObjects[gameObjects.length - 1].getEndTime(); float curtime = (float) (MusicController.getPosition() - start) / (end - start); - g.setColor(Color.red); g.fillRect(curtime * width, height - 10f, 10f, 10f); } if (menu) { @@ -175,6 +178,11 @@ public class SBOverlay { public void setGameObjects(GameObject[] gameObjects) { if (this.gameObjects.length != gameObjects.length) { optionsMap = new HashMap[gameObjects.length]; + // copy all current settings in first obj map + optionsMap[0] = new HashMap<>(); + for (Options.GameOption o : options.getSavedOptionList()) { + optionsMap[0].put(o, o.write()); + } } this.gameObjects = gameObjects; } @@ -211,7 +219,25 @@ public class SBOverlay { } public boolean mouseReleased(int button, int x, int y) { - return menu && options.mouseReleased(button, x, y); + if (menu) { + return options.mouseReleased(button, x, y); + } + if (x > 10 || index >= optionsMap.length || optionsMap[index] == null) { + return false; + } + int lh = Fonts.SMALL.getLineHeight(); + int ypos = 50 + lh / 4; + for (Object o : optionsMap[index].entrySet()) { + if (y >= ypos && y <= ypos + 10) { + optionsMap[index].remove(((Map.Entry) o).getKey()); + if (optionsMap[index].size() == 0) { + optionsMap[index] = null; + } + return true; + } + ypos += lh; + } + return false; } public boolean mouseWheelMoved(int newValue) {