From 2ed8e66bbfe34eb596e64287f086ef5a36ea60ca Mon Sep 17 00:00:00 2001 From: Jeffrey Han Date: Tue, 8 Jul 2014 19:03:43 -0400 Subject: [PATCH] Minor search feature fixes. - Search textfield now properly retains focus in song selection menu. - Clearing an invalid search no longer changes the current song. Other changes: - Fixed skip image not being resized correctly. - Added menuclick sounds when selecting a new song. Signed-off-by: Jeffrey Han --- src/itdelatrisu/opsu/states/Game.java | 1 + src/itdelatrisu/opsu/states/SongMenu.java | 21 ++++++++++++++++++--- 2 files changed, 19 insertions(+), 3 deletions(-) diff --git a/src/itdelatrisu/opsu/states/Game.java b/src/itdelatrisu/opsu/states/Game.java index 00973623..5b9a31e9 100644 --- a/src/itdelatrisu/opsu/states/Game.java +++ b/src/itdelatrisu/opsu/states/Game.java @@ -760,6 +760,7 @@ public class Game extends BasicGameState { if (!GameImage.SKIP.isScaled()) { float skipScale = (height * 0.1f) / skip.getHeight(); skip = skip.getScaledCopy(skipScale); + GameImage.SKIP.setImage(skip); GameImage.SKIP.setScaled(); } skipButton = new GUIMenuButton(skip, diff --git a/src/itdelatrisu/opsu/states/SongMenu.java b/src/itdelatrisu/opsu/states/SongMenu.java index 58ee5a8d..6339d1cd 100644 --- a/src/itdelatrisu/opsu/states/SongMenu.java +++ b/src/itdelatrisu/opsu/states/SongMenu.java @@ -70,6 +70,16 @@ public class SongMenu extends BasicGameState { */ private OsuGroupNode focusNode; + /** + * The base node of the previous focus node. + */ + private OsuGroupNode oldFocusNode = null; + + /** + * The file index of the previous focus node. + */ + private int oldFileIndex = -1; + /** * Button coordinate values. */ @@ -277,13 +287,12 @@ public class SongMenu extends BasicGameState { Utils.updateCursor(delta); // search + search.setFocus(true); searchTimer += delta; if (searchTimer >= SEARCH_DELAY) { searchTimer = 0; // store the start/focus nodes - OsuGroupNode oldFocusNode = null; - int oldFileIndex = -1; if (focusNode != null) { oldFocusNode = Opsu.groups.getBaseNode(focusNode.index); oldFileIndex = focusNode.osuFileIndex; @@ -308,6 +317,8 @@ public class SongMenu extends BasicGameState { searchResultString = String.format("%d matches found!", Opsu.groups.size()); setFocus(Opsu.groups.getRandomNode(), -1, true); } + oldFocusNode = null; + oldFileIndex = -1; } else if (!search.getText().isEmpty()) searchResultString = "No matches found. Hit 'esc' to reset."; } @@ -387,6 +398,7 @@ public class SongMenu extends BasicGameState { startNode = Opsu.groups.getBaseNode(max); // if group button clicked, undo expansion + SoundController.playSound(SoundController.SOUND_MENUCLICK); Opsu.groups.expand(node.index); } else if (node.osuFileIndex == focusNode.osuFileIndex) { @@ -395,6 +407,7 @@ public class SongMenu extends BasicGameState { } else { // focus the node + SoundController.playSound(SoundController.SOUND_MENUCLICK); setFocus(node, 0, false); } break; @@ -409,6 +422,7 @@ public class SongMenu extends BasicGameState { else startNode = Opsu.groups.getBaseNode(startNode.index); } + SoundController.playSound(SoundController.SOUND_MENUCLICK); setFocus(node, -1, false); break; @@ -452,6 +466,7 @@ public class SongMenu extends BasicGameState { break; OsuGroupNode next = focusNode.next; if (next != null) { + SoundController.playSound(SoundController.SOUND_MENUCLICK); setFocus(next, (next.index == focusNode.index) ? 0 : 1, false); changeIndex(1); } @@ -461,6 +476,7 @@ public class SongMenu extends BasicGameState { break; OsuGroupNode prev = focusNode.prev; if (prev != null) { + SoundController.playSound(SoundController.SOUND_MENUCLICK); if (prev.index == focusNode.index && prev.osuFileIndex < 0) { // skip the group node prev = prev.prev; @@ -519,7 +535,6 @@ public class SongMenu extends BasicGameState { public void enter(GameContainer container, StateBasedGame game) throws SlickException { Display.setTitle(game.getTitle()); - search.setFocus(true); } @Override