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:
@@ -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);
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user