Expand menu buttons when hovering.

Added hovering capabilities to GUIMenuButton.  The max scale and direction to expand the image can be modified per object.

Signed-off-by: Jeffrey Han <itdelatrisu@gmail.com>
This commit is contained in:
Jeffrey Han
2014-12-23 23:41:37 -05:00
parent ce8ae40f79
commit 33f5df030c
8 changed files with 174 additions and 20 deletions

View File

@@ -101,6 +101,10 @@ public class GamePauseMenu extends BasicGameState {
public void update(GameContainer container, StateBasedGame game, int delta)
throws SlickException {
Utils.updateCursor(delta);
int mouseX = input.getMouseX(), mouseY = input.getMouseY();
continueButton.hoverUpdate(delta, mouseX, mouseY);
retryButton.hoverUpdate(delta, mouseX, mouseY);
backButton.hoverUpdate(delta, mouseX, mouseY);
}
@Override
@@ -165,6 +169,9 @@ public class GamePauseMenu extends BasicGameState {
SoundController.playSound(SoundController.SOUND_FAIL);
} else
MusicController.pause();
continueButton.setScale(1f);
retryButton.setScale(1f);
backButton.setScale(1f);
}
/**

View File

@@ -61,6 +61,7 @@ public class GameRanking extends BasicGameState {
// game-related variables
private StateBasedGame game;
private int state;
private Input input;
public GameRanking(int state) {
this.state = state;
@@ -70,6 +71,7 @@ public class GameRanking extends BasicGameState {
public void init(GameContainer container, StateBasedGame game)
throws SlickException {
this.game = game;
this.input = container.getInput();
score = Game.getGameScore();
@@ -138,6 +140,8 @@ public class GameRanking extends BasicGameState {
public void update(GameContainer container, StateBasedGame game, int delta)
throws SlickException {
Utils.updateCursor(delta);
int mouseX = input.getMouseX(), mouseY = input.getMouseY();
Utils.getBackButton().hoverUpdate(delta, mouseX, mouseY);
}
@Override
@@ -185,6 +189,7 @@ public class GameRanking extends BasicGameState {
public void enter(GameContainer container, StateBasedGame game)
throws SlickException {
Display.setTitle(game.getTitle());
Utils.getBackButton().setScale(1f);
SoundController.playSound(SoundController.SOUND_APPLAUSE);
}
}

View File

@@ -103,6 +103,7 @@ public class MainMenu extends BasicGameState {
// game-related variables
private GameContainer container;
private StateBasedGame game;
private Input input;
private int state;
public MainMenu(int state) {
@@ -114,6 +115,7 @@ public class MainMenu extends BasicGameState {
throws SlickException {
this.container = container;
this.game = game;
this.input = container.getInput();
osuStartTime = System.currentTimeMillis();
previous = new Stack<Integer>();
@@ -126,6 +128,7 @@ public class MainMenu extends BasicGameState {
float buttonScale = (height / 1.2f) / logoImg.getHeight();
Image logoImgScaled = logoImg.getScaledCopy(buttonScale);
logo = new GUIMenuButton(logoImgScaled, width / 2f, height / 2f);
logo.setHoverScale(1.05f);
Image playImg = new Image("menu-play.png");
Image exitImg = new Image("menu-exit.png");
@@ -138,6 +141,8 @@ public class MainMenu extends BasicGameState {
exitButton = new GUIMenuButton(exitImg.getScaledCopy(buttonScale),
width * 0.75f - exitOffset, (height / 2) + (exitImg.getHeight() / 2f)
);
playButton.setHoverScale(1.05f);
exitButton.setHoverScale(1.05f);
// initialize music buttons
int musicWidth = 48;
@@ -146,6 +151,10 @@ public class MainMenu extends BasicGameState {
musicPause = new GUIMenuButton(new Image("music-pause.png"), width - (2 * musicWidth), musicHeight);
musicNext = new GUIMenuButton(new Image("music-next.png"), width - musicWidth, musicHeight);
musicPrevious = new GUIMenuButton(new Image("music-previous.png"), width - (3 * musicWidth), musicHeight);
musicPlay.setHoverScale(1.5f);
musicPause.setHoverScale(1.5f);
musicNext.setHoverScale(1.5f);
musicPrevious.setHoverScale(1.5f);
// menu background
try {
@@ -226,6 +235,14 @@ public class MainMenu extends BasicGameState {
public void update(GameContainer container, StateBasedGame game, int delta)
throws SlickException {
Utils.updateCursor(delta);
int mouseX = input.getMouseX(), mouseY = input.getMouseY();
logo.hoverUpdate(delta, mouseX, mouseY);
playButton.hoverUpdate(delta, mouseX, mouseY);
exitButton.hoverUpdate(delta, mouseX, mouseY);
musicPlay.hoverUpdate(delta, mouseX, mouseY);
musicPause.hoverUpdate(delta, mouseX, mouseY);
musicNext.hoverUpdate(delta, mouseX, mouseY);
musicPrevious.hoverUpdate(delta, mouseX, mouseY);
// fade in background
if (bgAlpha < 0.9f) {
@@ -280,6 +297,13 @@ public class MainMenu extends BasicGameState {
logoClicked = false;
logoTimer = 0;
logo.setX(container.getWidth() / 2);
logo.setScale(1f);
playButton.setScale(1f);
exitButton.setScale(1f);
musicPlay.setScale(1f);
musicPause.setScale(1f);
musicNext.setScale(1f);
musicPrevious.setScale(1f);
}
@Override

View File

@@ -525,6 +525,10 @@ public class Options extends BasicGameState {
public void update(GameContainer container, StateBasedGame game, int delta)
throws SlickException {
Utils.updateCursor(delta);
int mouseX = input.getMouseX(), mouseY = input.getMouseY();
Utils.getBackButton().hoverUpdate(delta, mouseX, mouseY);
for (GameMod mod : GameMod.values())
mod.hoverUpdate(delta, mouseX, mouseY);
}
@Override
@@ -782,6 +786,9 @@ public class Options extends BasicGameState {
public void enter(GameContainer container, StateBasedGame game)
throws SlickException {
currentTab = TAB_DISPLAY;
Utils.getBackButton().setScale(1f);
for (GameMod mod : GameMod.values())
mod.setScale(1f);
}
/**

View File

@@ -180,6 +180,7 @@ public class SongMenu extends BasicGameState {
// options button
Image optionsIcon = new Image("options.png").getScaledCopy(iconScale);
optionsButton = new GUIMenuButton(optionsIcon, search.getX() - (optionsIcon.getWidth() * 1.5f), search.getY());
optionsButton.setHoverScale(1.75f);
// music note
int musicNoteDim = (int) (Utils.FONT_LARGE.getLineHeight() * 0.75f + Utils.FONT_DEFAULT.getLineHeight());
@@ -281,6 +282,9 @@ public class SongMenu extends BasicGameState {
public void update(GameContainer container, StateBasedGame game, int delta)
throws SlickException {
Utils.updateCursor(delta);
int mouseX = input.getMouseX(), mouseY = input.getMouseY();
Utils.getBackButton().hoverUpdate(delta, mouseX, mouseY);
optionsButton.hoverUpdate(delta, mouseX, mouseY);
// search
search.setFocus(true);
@@ -501,6 +505,8 @@ public class SongMenu extends BasicGameState {
public void enter(GameContainer container, StateBasedGame game)
throws SlickException {
Display.setTitle(game.getTitle());
Utils.getBackButton().setScale(1f);
optionsButton.setScale(1f);
// stop playing the theme song
if (MusicController.isThemePlaying() && focusNode != null)