Extracted UI components from Utils into a separate UI class.

Added draw(), update(), and enter() methods in UI to do all the necessary calls (instead of letting the states handle them).

Signed-off-by: Jeffrey Han <itdelatrisu@gmail.com>
This commit is contained in:
Jeffrey Han
2015-03-05 13:27:45 -05:00
parent fb5515efb8
commit 235adc539e
16 changed files with 656 additions and 577 deletions

View File

@@ -25,6 +25,7 @@ import itdelatrisu.opsu.Opsu;
import itdelatrisu.opsu.OsuGroupList;
import itdelatrisu.opsu.OsuGroupNode;
import itdelatrisu.opsu.ScoreData;
import itdelatrisu.opsu.UI;
import itdelatrisu.opsu.Utils;
import itdelatrisu.opsu.audio.SoundController;
import itdelatrisu.opsu.audio.SoundEffect;
@@ -183,7 +184,7 @@ public class ButtonMenu extends BasicGameState {
// tooltips
if (hoverMod != null && hoverMod.isImplemented())
Utils.drawTooltip(g, hoverMod.getDescription(), true);
UI.drawTooltip(g, hoverMod.getDescription(), true);
}
@Override
@@ -291,9 +292,7 @@ public class ButtonMenu extends BasicGameState {
for (int i = 0; i < buttons.length; i++)
menuButtons[i].draw(buttons[i].getColor());
Utils.drawVolume(g);
Utils.drawFPS();
Utils.drawCursor();
UI.draw(g);
}
/**
@@ -583,8 +582,7 @@ public class ButtonMenu extends BasicGameState {
@Override
public void update(GameContainer container, StateBasedGame game, int delta)
throws SlickException {
Utils.updateCursor(delta);
Utils.updateVolumeDisplay(delta);
UI.update(delta);
if (menuState != null)
menuState.update(container, delta, input.getMouseX(), input.getMouseY());
}
@@ -622,6 +620,7 @@ public class ButtonMenu extends BasicGameState {
@Override
public void enter(GameContainer container, StateBasedGame game)
throws SlickException {
UI.enter();
if (menuState != null)
menuState.enter(container, game);
}

View File

@@ -26,6 +26,7 @@ import itdelatrisu.opsu.OsuGroupList;
import itdelatrisu.opsu.OsuGroupNode;
import itdelatrisu.opsu.OsuParser;
import itdelatrisu.opsu.OszUnpacker;
import itdelatrisu.opsu.UI;
import itdelatrisu.opsu.Utils;
import itdelatrisu.opsu.audio.SoundController;
import itdelatrisu.opsu.audio.SoundEffect;
@@ -302,25 +303,22 @@ public class DownloadsMenu extends BasicGameState {
g.setColor(Utils.COLOR_BLACK_ALPHA);
g.fillRect(0, 0, width, height);
Utils.drawLoadingProgress(g);
UI.drawLoadingProgress(g);
}
// back button
else
Utils.getBackButton().draw();
UI.getBackButton().draw();
Utils.drawVolume(g);
Utils.drawFPS();
Utils.drawCursor();
UI.draw(g);
}
@Override
public void update(GameContainer container, StateBasedGame game, int delta)
throws SlickException {
Utils.updateCursor(delta);
Utils.updateVolumeDisplay(delta);
UI.update(delta);
int mouseX = input.getMouseX(), mouseY = input.getMouseY();
Utils.getBackButton().hoverUpdate(delta, mouseX, mouseY);
UI.getBackButton().hoverUpdate(delta, mouseX, mouseY);
prevPage.hoverUpdate(delta, mouseX, mouseY);
nextPage.hoverUpdate(delta, mouseX, mouseY);
clearButton.hoverUpdate(delta, mouseX, mouseY);
@@ -422,7 +420,7 @@ public class DownloadsMenu extends BasicGameState {
return;
// back
if (Utils.getBackButton().contains(x, y)) {
if (UI.getBackButton().contains(x, y)) {
SoundController.playSound(SoundEffect.MENUBACK);
((MainMenu) game.getState(Opsu.STATE_MAINMENU)).reset();
game.enterState(Opsu.STATE_MAINMENU, new FadeOutTransition(Color.black), new FadeInTransition(Color.black));
@@ -654,7 +652,7 @@ public class DownloadsMenu extends BasicGameState {
@Override
public void enter(GameContainer container, StateBasedGame game)
throws SlickException {
Utils.getBackButton().resetHover();
UI.enter();
prevPage.resetHover();
nextPage.resetHover();
clearButton.resetHover();

View File

@@ -29,6 +29,7 @@ import itdelatrisu.opsu.OsuFile;
import itdelatrisu.opsu.OsuHitObject;
import itdelatrisu.opsu.OsuTimingPoint;
import itdelatrisu.opsu.ScoreData;
import itdelatrisu.opsu.UI;
import itdelatrisu.opsu.Utils;
import itdelatrisu.opsu.audio.HitSound;
import itdelatrisu.opsu.audio.MusicController;
@@ -258,8 +259,7 @@ public class Game extends BasicGameState {
if (GameMod.AUTO.isActive())
GameImage.UNRANKED.getImage().drawCentered(width / 2, height * 0.077f);
Utils.drawFPS();
Utils.drawCursor();
UI.draw(g);
return;
}
}
@@ -365,16 +365,13 @@ public class Game extends BasicGameState {
cursorCirclePulse.drawCentered(pausedMouseX, pausedMouseY);
}
Utils.drawVolume(g);
Utils.drawFPS();
Utils.drawCursor();
UI.draw(g);
}
@Override
public void update(GameContainer container, StateBasedGame game, int delta)
throws SlickException {
Utils.updateCursor(delta);
Utils.updateVolumeDisplay(delta);
UI.update(delta);
int mouseX = input.getMouseX(), mouseY = input.getMouseY();
skipButton.hoverUpdate(delta, mouseX, mouseY);
@@ -613,10 +610,10 @@ public class Game extends BasicGameState {
}
break;
case Input.KEY_UP:
Utils.changeVolume(1);
UI.changeVolume(1);
break;
case Input.KEY_DOWN:
Utils.changeVolume(-1);
UI.changeVolume(-1);
break;
case Input.KEY_F12:
Utils.takeScreenShot();
@@ -697,12 +694,13 @@ public class Game extends BasicGameState {
if (Options.isMouseWheelDisabled() || Options.isMouseDisabled())
return;
Utils.changeVolume((newValue < 0) ? -1 : 1);
UI.changeVolume((newValue < 0) ? -1 : 1);
}
@Override
public void enter(GameContainer container, StateBasedGame game)
throws SlickException {
UI.enter();
if (restart == Restart.NEW)
osu = MusicController.getOsuFile();

View File

@@ -22,6 +22,7 @@ import itdelatrisu.opsu.GameImage;
import itdelatrisu.opsu.MenuButton;
import itdelatrisu.opsu.Opsu;
import itdelatrisu.opsu.Options;
import itdelatrisu.opsu.UI;
import itdelatrisu.opsu.Utils;
import itdelatrisu.opsu.audio.MusicController;
import itdelatrisu.opsu.audio.SoundController;
@@ -99,16 +100,13 @@ public class GamePauseMenu extends BasicGameState {
retryButton.draw();
backButton.draw();
Utils.drawVolume(g);
Utils.drawFPS();
Utils.drawCursor();
UI.draw(g);
}
@Override
public void update(GameContainer container, StateBasedGame game, int delta)
throws SlickException {
Utils.updateCursor(delta);
Utils.updateVolumeDisplay(delta);
UI.update(delta);
int mouseX = input.getMouseX(), mouseY = input.getMouseY();
continueButton.hoverUpdate(delta, mouseX, mouseY);
retryButton.hoverUpdate(delta, mouseX, mouseY);
@@ -135,7 +133,7 @@ public class GamePauseMenu extends BasicGameState {
SoundController.playSound(SoundEffect.MENUBACK);
((SongMenu) game.getState(Opsu.STATE_SONGMENU)).resetGameDataOnLoad();
MusicController.playAt(MusicController.getOsuFile().previewTime, true);
Utils.resetCursor();
UI.resetCursor();
game.enterState(Opsu.STATE_SONGMENU, new FadeOutTransition(Color.black), new FadeInTransition(Color.black));
} else {
SoundController.playSound(SoundEffect.MENUBACK);
@@ -182,7 +180,7 @@ public class GamePauseMenu extends BasicGameState {
MusicController.playAt(MusicController.getOsuFile().previewTime, true);
else
MusicController.resume();
Utils.resetCursor();
UI.resetCursor();
game.enterState(Opsu.STATE_SONGMENU, new FadeOutTransition(Color.black), new FadeInTransition(Color.black));
}
}
@@ -190,6 +188,7 @@ public class GamePauseMenu extends BasicGameState {
@Override
public void enter(GameContainer container, StateBasedGame game)
throws SlickException {
UI.enter();
pauseStartTime = System.currentTimeMillis();
if (gameState.getRestart() == Game.Restart.LOSE) {
MusicController.fadeOut(FADEOUT_TIME);

View File

@@ -23,6 +23,7 @@ import itdelatrisu.opsu.GameImage;
import itdelatrisu.opsu.MenuButton;
import itdelatrisu.opsu.Opsu;
import itdelatrisu.opsu.OsuFile;
import itdelatrisu.opsu.UI;
import itdelatrisu.opsu.Utils;
import itdelatrisu.opsu.audio.MusicController;
import itdelatrisu.opsu.audio.SoundController;
@@ -108,24 +109,21 @@ public class GameRanking extends BasicGameState {
retryButton.draw();
exitButton.draw();
}
Utils.getBackButton().draw();
UI.getBackButton().draw();
Utils.drawVolume(g);
Utils.drawFPS();
Utils.drawCursor();
UI.draw(g);
}
@Override
public void update(GameContainer container, StateBasedGame game, int delta)
throws SlickException {
Utils.updateCursor(delta);
Utils.updateVolumeDisplay(delta);
UI.update(delta);
int mouseX = input.getMouseX(), mouseY = input.getMouseY();
if (data.isGameplay()) {
retryButton.hoverUpdate(delta, mouseX, mouseY);
exitButton.hoverUpdate(delta, mouseX, mouseY);
}
Utils.getBackButton().hoverUpdate(delta, mouseX, mouseY);
UI.getBackButton().hoverUpdate(delta, mouseX, mouseY);
}
@Override
@@ -161,12 +159,12 @@ public class GameRanking extends BasicGameState {
SoundController.playSound(SoundEffect.MENUBACK);
((MainMenu) game.getState(Opsu.STATE_MAINMENU)).reset();
((SongMenu) game.getState(Opsu.STATE_SONGMENU)).resetGameDataOnLoad();
Utils.resetCursor();
UI.resetCursor();
game.enterState(Opsu.STATE_MAINMENU, new FadeOutTransition(Color.black), new FadeInTransition(Color.black));
return;
}
}
if (Utils.getBackButton().contains(x, y)) {
if (UI.getBackButton().contains(x, y)) {
returnToSongMenu();
return;
}
@@ -175,8 +173,8 @@ public class GameRanking extends BasicGameState {
@Override
public void enter(GameContainer container, StateBasedGame game)
throws SlickException {
UI.enter();
Display.setTitle(game.getTitle());
Utils.getBackButton().resetHover();
if (!data.isGameplay()) {
if (!MusicController.isTrackDimmed())
MusicController.toggleTrackDimmed(0.5f);
@@ -203,7 +201,7 @@ public class GameRanking extends BasicGameState {
songMenu.resetGameDataOnLoad();
songMenu.resetTrackOnLoad();
}
Utils.resetCursor();
UI.resetCursor();
game.enterState(Opsu.STATE_SONGMENU, new FadeOutTransition(Color.black), new FadeInTransition(Color.black));
}

View File

@@ -27,6 +27,7 @@ import itdelatrisu.opsu.Options;
import itdelatrisu.opsu.OsuFile;
import itdelatrisu.opsu.OsuGroupList;
import itdelatrisu.opsu.OsuGroupNode;
import itdelatrisu.opsu.UI;
import itdelatrisu.opsu.Utils;
import itdelatrisu.opsu.audio.MusicController;
import itdelatrisu.opsu.audio.SoundController;
@@ -256,28 +257,23 @@ public class MainMenu extends BasicGameState {
new SimpleDateFormat("h:mm a").format(new Date())),
marginX, height - marginY - lineHeight);
Utils.drawBarNotification(g);
Utils.drawVolume(g);
Utils.drawFPS();
Utils.drawCursor();
UI.draw(g);
// tooltips
if (musicPositionBarContains(mouseX, mouseY))
Utils.drawTooltip(g, "Click to seek to a specific point in the song.", false);
UI.drawTooltip(g, "Click to seek to a specific point in the song.", false);
else if (musicPlay.contains(mouseX, mouseY))
Utils.drawTooltip(g, (MusicController.isPlaying()) ? "Pause" : "Play", false);
UI.drawTooltip(g, (MusicController.isPlaying()) ? "Pause" : "Play", false);
else if (musicNext.contains(mouseX, mouseY))
Utils.drawTooltip(g, "Next track", false);
UI.drawTooltip(g, "Next track", false);
else if (musicPrevious.contains(mouseX, mouseY))
Utils.drawTooltip(g, "Previous track", false);
UI.drawTooltip(g, "Previous track", false);
}
@Override
public void update(GameContainer container, StateBasedGame game, int delta)
throws SlickException {
Utils.updateCursor(delta);
Utils.updateVolumeDisplay(delta);
Utils.updateBarNotification(delta);
UI.update(delta);
int mouseX = input.getMouseX(), mouseY = input.getMouseY();
logo.hoverUpdate(delta, mouseX, mouseY, 0.25f);
playButton.hoverUpdate(delta, mouseX, mouseY, 0.25f);
@@ -350,6 +346,8 @@ public class MainMenu extends BasicGameState {
@Override
public void enter(GameContainer container, StateBasedGame game)
throws SlickException {
UI.enter();
// reset button hover states if mouse is not currently hovering over the button
int mouseX = input.getMouseX(), mouseY = input.getMouseY();
if (!logo.contains(mouseX, mouseY, 0.25f))
@@ -392,10 +390,10 @@ public class MainMenu extends BasicGameState {
if (musicPlay.contains(x, y)) {
if (MusicController.isPlaying()) {
MusicController.pause();
Utils.sendBarNotification("Pause");
UI.sendBarNotification("Pause");
} else if (!MusicController.isTrackLoading()) {
MusicController.resume();
Utils.sendBarNotification("Play");
UI.sendBarNotification("Play");
}
} else if (musicNext.contains(x, y)) {
boolean isTheme = MusicController.isThemePlaying();
@@ -409,7 +407,7 @@ public class MainMenu extends BasicGameState {
}
if (Options.isDynamicBackgroundEnabled() && !sameAudio && !MusicController.isThemePlaying())
bgAlpha = 0f;
Utils.sendBarNotification(">> Next");
UI.sendBarNotification(">> Next");
} else if (musicPrevious.contains(x, y)) {
if (!previous.isEmpty()) {
SongMenu menu = (SongMenu) game.getState(Opsu.STATE_SONGMENU);
@@ -418,7 +416,7 @@ public class MainMenu extends BasicGameState {
bgAlpha = 0f;
} else
MusicController.setPosition(0);
Utils.sendBarNotification("<< Previous");
UI.sendBarNotification("<< Previous");
}
// downloads button actions
@@ -459,7 +457,7 @@ public class MainMenu extends BasicGameState {
@Override
public void mouseWheelMoved(int newValue) {
Utils.changeVolume((newValue < 0) ? -1 : 1);
UI.changeVolume((newValue < 0) ? -1 : 1);
}
@Override
@@ -483,10 +481,10 @@ public class MainMenu extends BasicGameState {
}
break;
case Input.KEY_UP:
Utils.changeVolume(1);
UI.changeVolume(1);
break;
case Input.KEY_DOWN:
Utils.changeVolume(-1);
UI.changeVolume(-1);
break;
case Input.KEY_F12:
Utils.takeScreenShot();

View File

@@ -23,6 +23,7 @@ import itdelatrisu.opsu.MenuButton;
import itdelatrisu.opsu.Opsu;
import itdelatrisu.opsu.Options;
import itdelatrisu.opsu.Options.GameOption;
import itdelatrisu.opsu.UI;
import itdelatrisu.opsu.Utils;
import itdelatrisu.opsu.audio.SoundController;
import itdelatrisu.opsu.audio.SoundEffect;
@@ -224,10 +225,10 @@ public class OptionsMenu extends BasicGameState {
}
for (OptionTab tab : OptionTab.VALUES_REVERSED) {
if (tab != currentTab)
Utils.drawTab(tab.button.getX(), tab.button.getY(),
UI.drawTab(tab.button.getX(), tab.button.getY(),
tab.getName(), false, tab == hoverTab);
}
Utils.drawTab(currentTab.button.getX(), currentTab.button.getY(),
UI.drawTab(currentTab.button.getX(), currentTab.button.getY(),
currentTab.getName(), true, false);
g.setColor(Color.white);
g.setLineWidth(2f);
@@ -235,7 +236,7 @@ public class OptionsMenu extends BasicGameState {
g.drawLine(0, lineY, width, lineY);
g.resetLineWidth();
Utils.getBackButton().draw();
UI.getBackButton().draw();
// key entry state
if (keyEntryLeft || keyEntryRight) {
@@ -248,18 +249,15 @@ public class OptionsMenu extends BasicGameState {
);
}
Utils.drawVolume(g);
Utils.drawFPS();
Utils.drawCursor();
UI.draw(g);
}
@Override
public void update(GameContainer container, StateBasedGame game, int delta)
throws SlickException {
Utils.updateCursor(delta);
Utils.updateVolumeDisplay(delta);
UI.update(delta);
int mouseX = input.getMouseX(), mouseY = input.getMouseY();
Utils.getBackButton().hoverUpdate(delta, mouseX, mouseY);
UI.getBackButton().hoverUpdate(delta, mouseX, mouseY);
}
@Override
@@ -278,7 +276,7 @@ public class OptionsMenu extends BasicGameState {
return;
// back
if (Utils.getBackButton().contains(x, y)) {
if (UI.getBackButton().contains(x, y)) {
SoundController.playSound(SoundEffect.MENUBACK);
game.enterState(Opsu.STATE_SONGMENU, new EmptyTransition(), new FadeInTransition(Color.black));
return;
@@ -381,8 +379,8 @@ public class OptionsMenu extends BasicGameState {
@Override
public void enter(GameContainer container, StateBasedGame game)
throws SlickException {
UI.enter();
currentTab = OptionTab.DISPLAY;
Utils.getBackButton().resetHover();
}
/**

View File

@@ -32,6 +32,7 @@ import itdelatrisu.opsu.OsuParser;
import itdelatrisu.opsu.OszUnpacker;
import itdelatrisu.opsu.ScoreData;
import itdelatrisu.opsu.SongSort;
import itdelatrisu.opsu.UI;
import itdelatrisu.opsu.Utils;
import itdelatrisu.opsu.audio.HitSound;
import itdelatrisu.opsu.audio.MultiClip;
@@ -433,7 +434,7 @@ public class SongMenu extends BasicGameState {
startIndex += focusNodes;
else if (startNode.index == focusNode.index)
startIndex += startNode.osuFileIndex;
Utils.drawScrollbar(g, startIndex, totalNodes, MAX_SONG_BUTTONS,
UI.drawScrollbar(g, startIndex, totalNodes, MAX_SONG_BUTTONS,
width, headerY + DIVIDER_LINE_WIDTH / 2, 0, buttonOffset - DIVIDER_LINE_WIDTH * 1.5f, buttonOffset,
Utils.COLOR_BLACK_ALPHA, Color.white, true);
}
@@ -445,25 +446,22 @@ public class SongMenu extends BasicGameState {
g.setColor(Utils.COLOR_BLACK_ALPHA);
g.fillRect(0, 0, width, height);
Utils.drawLoadingProgress(g);
UI.drawLoadingProgress(g);
}
// back button
else
Utils.getBackButton().draw();
UI.getBackButton().draw();
Utils.drawVolume(g);
Utils.drawFPS();
Utils.drawCursor();
UI.draw(g);
}
@Override
public void update(GameContainer container, StateBasedGame game, int delta)
throws SlickException {
Utils.updateCursor(delta);
Utils.updateVolumeDisplay(delta);
UI.update(delta);
int mouseX = input.getMouseX(), mouseY = input.getMouseY();
Utils.getBackButton().hoverUpdate(delta, mouseX, mouseY);
UI.getBackButton().hoverUpdate(delta, mouseX, mouseY);
selectModsButton.hoverUpdate(delta, mouseX, mouseY);
selectRandomButton.hoverUpdate(delta, mouseX, mouseY);
selectMapOptionsButton.hoverUpdate(delta, mouseX, mouseY);
@@ -584,7 +582,7 @@ public class SongMenu extends BasicGameState {
return;
// back
if (Utils.getBackButton().contains(x, y)) {
if (UI.getBackButton().contains(x, y)) {
SoundController.playSound(SoundEffect.MENUBACK);
((MainMenu) game.getState(Opsu.STATE_MAINMENU)).reset();
game.enterState(Opsu.STATE_MAINMENU, new FadeOutTransition(Color.black), new FadeInTransition(Color.black));
@@ -881,8 +879,8 @@ public class SongMenu extends BasicGameState {
@Override
public void enter(GameContainer container, StateBasedGame game)
throws SlickException {
UI.enter();
Display.setTitle(game.getTitle());
Utils.getBackButton().resetHover();
selectModsButton.resetHover();
selectRandomButton.resetHover();
selectMapOptionsButton.resetHover();

View File

@@ -24,6 +24,7 @@ import itdelatrisu.opsu.Options;
import itdelatrisu.opsu.OsuGroupList;
import itdelatrisu.opsu.OsuParser;
import itdelatrisu.opsu.OszUnpacker;
import itdelatrisu.opsu.UI;
import itdelatrisu.opsu.Utils;
import itdelatrisu.opsu.audio.MusicController;
import itdelatrisu.opsu.audio.SoundController;
@@ -79,7 +80,7 @@ public class Splash extends BasicGameState {
throws SlickException {
g.setBackground(Color.black);
GameImage.MENU_LOGO.getImage().drawCentered(container.getWidth() / 2, container.getHeight() / 2);
Utils.drawLoadingProgress(g);
UI.drawLoadingProgress(g);
}
@Override