From 65017364bd4b48d085d2c813aa0ee3b1e3432f41 Mon Sep 17 00:00:00 2001 From: yugecin Date: Sun, 8 Jul 2018 09:52:03 +0200 Subject: [PATCH] more more easier access --- src/itdelatrisu/opsu/GameData.java | 2 +- src/itdelatrisu/opsu/GameImage.java | 20 +++++++++-- src/itdelatrisu/opsu/GameMod.java | 4 +-- src/itdelatrisu/opsu/ScoreData.java | 2 +- .../opsu/downloads/DownloadNode.java | 4 +-- src/itdelatrisu/opsu/states/Game.java | 15 ++++---- src/itdelatrisu/opsu/states/MainMenu.java | 35 +++++++++++-------- src/itdelatrisu/opsu/states/SongMenu.java | 8 ++--- src/itdelatrisu/opsu/ui/UI.java | 2 +- .../opsudance/render/GameObjectRenderer.java | 4 ++- 10 files changed, 60 insertions(+), 36 deletions(-) diff --git a/src/itdelatrisu/opsu/GameData.java b/src/itdelatrisu/opsu/GameData.java index 5b5a9fdc..a588ca4f 100644 --- a/src/itdelatrisu/opsu/GameData.java +++ b/src/itdelatrisu/opsu/GameData.java @@ -858,7 +858,7 @@ public class GameData { if (comboMax == fullObjectCount) { GameImage.RANKING_PERFECT.getImage().draw( width * 0.08f, - (height * 0.99f) - GameImage.RANKING_PERFECT.getImage().getHeight() + (height * 0.99f) - GameImage.RANKING_PERFECT.getHeight() ); } diff --git a/src/itdelatrisu/opsu/GameImage.java b/src/itdelatrisu/opsu/GameImage.java index 66ee12df..36466e10 100644 --- a/src/itdelatrisu/opsu/GameImage.java +++ b/src/itdelatrisu/opsu/GameImage.java @@ -338,13 +338,13 @@ public enum GameImage { STAR ("star", "png", false, false) { @Override protected Image process_sub(Image img, int w, int h) { - return img.getScaledCopy((MENU_BUTTON_BG.getImage().getHeight() * 0.16f) / img.getHeight()); + return img.getScaledCopy((MENU_BUTTON_BG.getHeight() * 0.16f) / img.getHeight()); } }, STAR2 ("star2", "png", false, false) { @Override protected Image process_sub(Image img, int w, int h) { - return img.getScaledCopy((MENU_BUTTON_BG.getImage().getHeight() * 0.33f) / img.getHeight()); + return img.getScaledCopy((MENU_BUTTON_BG.getHeight() * 0.33f) / img.getHeight()); } }, @@ -661,6 +661,14 @@ public enum GameImage { setDefaultImage(); return (skinImage != null) ? skinImage : defaultImage; } + + public int getHeight() { + return getImage().getHeight(); + } + + public int getWidth() { + return getImage().getWidth(); + } /** * Returns the image associated with this resource, with a scale applied. @@ -670,6 +678,14 @@ public enum GameImage { return this.getImage().getScaledCopy(scale); } + /** + * Returns the image associated with this resource, with a scale applied. + * The beatmap skin image takes priority over the default image. + */ + public Image getScaledImage(int width, int height) { + return this.getImage().getScaledCopy(width, height); + } + /** * Returns an Animation based on the image array. * If no image array exists, returns the single image as an animation. diff --git a/src/itdelatrisu/opsu/GameMod.java b/src/itdelatrisu/opsu/GameMod.java index 8449db60..7a0ed8e5 100644 --- a/src/itdelatrisu/opsu/GameMod.java +++ b/src/itdelatrisu/opsu/GameMod.java @@ -100,7 +100,7 @@ public enum GameMod { */ public void init(int width, int height) { float multY = Fonts.LARGE.getLineHeight() * 2 + height * 0.06f; - float offsetY = GameImage.MOD_EASY.getImage().getHeight() * 1.5f; + float offsetY = GameImage.MOD_EASY.getHeight() * 1.5f; this.x = width / 30f; this.y = multY + Fonts.LARGE.getLineHeight() * 3f + offsetY * index; } @@ -193,7 +193,7 @@ public enum GameMod { // create buttons float baseX = Category.EASY.getX() + Fonts.LARGE.getWidth(Category.EASY.getName()) * 1.25f; - float offsetX = GameImage.MOD_EASY.getImage().getWidth() * 2.1f; + float offsetX = GameImage.MOD_EASY.getWidth() * 2.1f; for (GameMod mod : GameMod.values()) { Image img = mod.image.getImage(); mod.button = new MenuButton(img, diff --git a/src/itdelatrisu/opsu/ScoreData.java b/src/itdelatrisu/opsu/ScoreData.java index b873672f..28ed044e 100644 --- a/src/itdelatrisu/opsu/ScoreData.java +++ b/src/itdelatrisu/opsu/ScoreData.java @@ -101,7 +101,7 @@ public class ScoreData implements Comparable { baseX = containerWidth * 0.01f; baseY = topY; buttonWidth = containerWidth * 0.4f; - float gradeHeight = GameImage.MENU_BUTTON_BG.getImage().getHeight() * 0.45f; + float gradeHeight = GameImage.MENU_BUTTON_BG.getHeight() * 0.45f; buttonHeight = Math.max(gradeHeight, Fonts.DEFAULT.getLineHeight() * 3.03f); buttonOffset = buttonHeight + gradeHeight / 10f; buttonAreaHeight = (SongMenu.MAX_SCORE_BUTTONS - 1) * buttonOffset + buttonHeight; diff --git a/src/itdelatrisu/opsu/downloads/DownloadNode.java b/src/itdelatrisu/opsu/downloads/DownloadNode.java index a90b3eff..e5899642 100644 --- a/src/itdelatrisu/opsu/downloads/DownloadNode.java +++ b/src/itdelatrisu/opsu/downloads/DownloadNode.java @@ -131,7 +131,7 @@ public class DownloadNode { * @param index the index (to offset the button from the topmost button) */ public static boolean resultIconContains(float cx, float cy, int index) { - int iconWidth = GameImage.MUSIC_PLAY.getImage().getWidth(); + int iconWidth = GameImage.MUSIC_PLAY.getWidth(); float x = buttonBaseX + buttonWidth * 0.001f; float y = buttonBaseY + (index * buttonOffset) + buttonHeight / 2f; return ((cx > x && cx < x + iconWidth) && @@ -186,7 +186,7 @@ public class DownloadNode { * @param index the index (to offset the button from the topmost button) */ public static boolean downloadIconContains(float cx, float cy, int index) { - int iconWidth = GameImage.DELETE.getImage().getWidth(); + int iconWidth = GameImage.DELETE.getWidth(); float edgeX = infoBaseX + infoWidth * 0.985f; float y = infoBaseY + (index * infoHeight); float marginY = infoHeight * 0.04f; diff --git a/src/itdelatrisu/opsu/states/Game.java b/src/itdelatrisu/opsu/states/Game.java index 4855bbcb..cf324d46 100644 --- a/src/itdelatrisu/opsu/states/Game.java +++ b/src/itdelatrisu/opsu/states/Game.java @@ -66,6 +66,7 @@ import yugecin.opsudance.ui.OptionsOverlay; import yugecin.opsudance.ui.StoryboardOverlay; import yugecin.opsudance.utils.GLHelper; +import static itdelatrisu.opsu.GameImage.*; import static itdelatrisu.opsu.ui.Colors.*; import static org.lwjgl.input.Keyboard.*; import static yugecin.opsudance.options.Options.*; @@ -551,8 +552,8 @@ public class Game extends ComplexOpsuState { // show retries if (retries >= 2 && timeDiff >= -1000) { int retryHeight = Math.max( - GameImage.SCOREBAR_BG.getImage().getHeight(), - GameImage.SCOREBAR_KI.getImage().getHeight() + GameImage.SCOREBAR_BG.getHeight(), + GameImage.SCOREBAR_KI.getHeight() ); float oldAlpha = Colors.WHITE_FADE.a; if (timeDiff < -500) @@ -588,7 +589,7 @@ public class Game extends ComplexOpsuState { } } if (timeDiff < 1500 * speedModifier) { - GameImage.COUNTDOWN_2.getImage().draw(width - GameImage.COUNTDOWN_2.getImage().getWidth(), 0); + COUNTDOWN_2.getImage().draw(width - COUNTDOWN_2.getWidth(), 0); if (!countdown2Sound) { SoundController.playSound(SoundEffect.COUNT2); countdown2Sound = true; @@ -692,8 +693,8 @@ public class Game extends ComplexOpsuState { g.fillRect(0, 0, width, height); // draw glowing hit select circle and pulse effect - int circleDiameter = GameImage.HITCIRCLE.getImage().getWidth(); - Image cursorCircle = GameImage.HITCIRCLE_SELECT.getImage().getScaledCopy(circleDiameter, circleDiameter); + int circleDiameter = HITCIRCLE.getWidth(); + Image cursorCircle = HITCIRCLE_SELECT.getScaledImage(circleDiameter, circleDiameter); cursorCircle.setAlpha(1.0f); cursorCircle.drawCentered(pausedMousePosition.x, pausedMousePosition.y); Image cursorCirclePulse = cursorCircle.getScaledCopy(1f + pausePulse); @@ -1312,7 +1313,7 @@ public class Game extends ComplexOpsuState { // returning from pause screen if (pauseTime > -1) { double distance = Math.hypot(pausedMousePosition.x - x, pausedMousePosition.y - y); - int circleRadius = GameImage.HITCIRCLE.getImage().getWidth() / 2; + int circleRadius = GameImage.HITCIRCLE.getWidth() / 2; if (distance < circleRadius) { // unpause the game pauseTime = -1; @@ -1776,7 +1777,7 @@ public class Game extends ComplexOpsuState { float xDiff = endPoint.x - startPoint.x; float yDiff = endPoint.y - startPoint.y; float dist = (float) Math.hypot(xDiff, yDiff); - int numPoints = (int) ((dist - GameImage.HITCIRCLE.getImage().getWidth()) / followPointInterval); + int numPoints = (int) ((dist - GameImage.HITCIRCLE.getWidth()) / followPointInterval); if (numPoints > 0) { // set the image angle Image followPoint = GameImage.FOLLOWPOINT.getImage(); diff --git a/src/itdelatrisu/opsu/states/MainMenu.java b/src/itdelatrisu/opsu/states/MainMenu.java index d6222bfa..d1eefb39 100644 --- a/src/itdelatrisu/opsu/states/MainMenu.java +++ b/src/itdelatrisu/opsu/states/MainMenu.java @@ -180,7 +180,7 @@ public class MainMenu extends BaseOpsuState { // initialize music buttons final int musicSize = (int) (this.textLineHeight * 0.8f); - final float musicScale = (float) musicSize / MUSIC_STOP.getImage().getWidth(); + final float musicScale = (float) musicSize / MUSIC_STOP.getWidth(); final int musicSpacing = (int) (musicSize * 0.8f) + musicSize; // (center to center) int x = width - this.textMarginX - musicSize / 2; int y = this.textLineHeight * 2 + this.textLineHeight / 2; @@ -247,19 +247,19 @@ public class MainMenu extends BaseOpsuState { // logo & buttons this.logo = new ImagePosition(MENU_LOGO.getImage()); - logoPositionOffsetX = 0.35f * MENU_LOGO.getImage().getHeight(); + logoPositionOffsetX = 0.35f * MENU_LOGO.getHeight(); logoPosition = new AnimatedValue(1, 0, 1, AnimationEquation.OUT_QUAD); logoButtonAlpha = new AnimatedValue(200, 0f, 1f, AnimationEquation.LINEAR); - this.buttonsX = width2 - MENU_OPTIONS.getImage().getWidth() / 2; + this.buttonsX = width2 - MENU_OPTIONS.getWidth() / 2; this.buttonPositions[0] = new ImagePosition(MENU_PLAY.getImage()); this.buttonPositions[1] = new ImagePosition(MENU_OPTIONS.getImage()); this.buttonPositions[2] = new ImagePosition(MENU_EXIT.getImage()); - final int basey = height2 - MENU_OPTIONS.getImage().getHeight() / 2; - final float yoffset = MENU_LOGO.getImage().getHeight() * 0.196378f; + final int basey = height2 - MENU_OPTIONS.getHeight() / 2; + final float yoffset = MENU_LOGO.getHeight() * 0.196378f; for (int i = 0; i < 3; i++) { - this.buttonPositions[i].width = MENU_OPTIONS.getImage().getWidth(); + this.buttonPositions[i].width = MENU_OPTIONS.getWidth(); this.buttonPositions[i].y = (int) (basey + (i - 1f) * yoffset); - this.buttonPositions[i].height = MENU_OPTIONS.getImage().getHeight(); + this.buttonPositions[i].height = MENU_OPTIONS.getHeight(); } } @@ -331,8 +331,8 @@ public class MainMenu extends BaseOpsuState { // draw buttons final float buttonProgress = this.buttonAnimation.getValue(); if (this.logoState != LogoState.DEFAULT && buttonProgress > 0f) { - final int btnwidth = MENU_OPTIONS.getImage().getWidth(); - final float btnhalfheight = MENU_OPTIONS.getImage().getHeight() / 2f; + final int btnwidth = MENU_OPTIONS.getWidth(); + final float btnhalfheight = MENU_OPTIONS.getHeight() / 2f; final int basey = height2; final int x = (int) (this.buttonsX + btnwidth * 0.375f * buttonProgress); final Color col = new Color(logoColor); @@ -341,8 +341,8 @@ public class MainMenu extends BaseOpsuState { MENU_OPTIONS.getImage(), MENU_EXIT.getImage() }; - final float circleradius = MENU_LOGO.getImage().getHeight() * 0.44498f; - final float yoffset = MENU_LOGO.getImage().getHeight() * 0.196378f; + final float circleradius = MENU_LOGO.getHeight() * 0.44498f; + final float yoffset = MENU_LOGO.getHeight() * 0.196378f; final float cr = circleradius * totalLogoScale; for (int i = 0; i < 3; i++) { final float hoverprogress = this.buttonAnimations[i].getValue(); @@ -421,16 +421,21 @@ public class MainMenu extends BaseOpsuState { if (repoButton != null) { String text; int fheight, fwidth; + float x, y; repoButton.draw(); text = "opsu!"; fheight = Fonts.SMALL.getLineHeight(); fwidth = Fonts.SMALL.getWidth(text); - Fonts.SMALL.drawString(repoButton.getX() - fwidth / 2, repoButton.getY() - repoButton.getImage().getHeight() / 2 - fheight, text, Color.white); + x = repoButton.getX() - fwidth / 2; + y = repoButton.getY() - repoButton.getImage().getHeight() / 2 - fheight; + Fonts.SMALL.drawString(x, y, text, Color.white); danceRepoButton.draw(); text = "opsu!dance"; fheight = Fonts.SMALL.getLineHeight(); fwidth = Fonts.SMALL.getWidth(text); - Fonts.SMALL.drawString(danceRepoButton.getX() - fwidth / 2, repoButton.getY() - repoButton.getImage().getHeight() / 2 - fheight, text, Color.white); + x = danceRepoButton.getX() - fwidth / 2; + y = danceRepoButton.getY() - repoButton.getImage().getHeight() / 2 - fheight; + Fonts.SMALL.drawString(x, y, text, Color.white); } // draw update button @@ -516,8 +521,8 @@ public class MainMenu extends BaseOpsuState { } // buttons - this.logo.width = MENU_LOGO.getImage().getWidth(); - this.logo.height = MENU_LOGO.getImage().getHeight(); + this.logo.width = MENU_LOGO.getWidth(); + this.logo.height = MENU_LOGO.getHeight(); this.logo.x = width2 - this.logo.width / 2; this.logo.y = height2 - this.logo.height / 2; if (this.logoState != LogoState.DEFAULT) { diff --git a/src/itdelatrisu/opsu/states/SongMenu.java b/src/itdelatrisu/opsu/states/SongMenu.java index 7f284ce5..e5aa9a71 100644 --- a/src/itdelatrisu/opsu/states/SongMenu.java +++ b/src/itdelatrisu/opsu/states/SongMenu.java @@ -325,10 +325,10 @@ public class SongMenu extends ComplexOpsuState { components.clear(); // header/footer coordinates - headerY = height * 0.0075f + GameImage.MENU_MUSICNOTE.getImage().getHeight() + + headerY = height * 0.0075f + GameImage.MENU_MUSICNOTE.getHeight() + Fonts.BOLD.getLineHeight() + Fonts.DEFAULT.getLineHeight() + Fonts.SMALL.getLineHeight(); - footerY = height - GameImage.SELECTION_MODS.getImage().getHeight(); + footerY = height - GameImage.SELECTION_MODS.getHeight(); // footer logo coordinates float footerHeight = height - footerY; @@ -342,7 +342,7 @@ public class SongMenu extends ComplexOpsuState { // initialize sorts int sortWidth = (int) (width * 0.12f); int posX = (int) (width * 0.87f); - int posY = (int) (headerY - GameImage.MENU_TAB.getImage().getHeight() * 2.25f); + int posY = (int) (headerY - GameImage.MENU_TAB.getHeight() * 2.25f); sortMenu = new DropdownMenu(BeatmapSortOrder.values(), posX, posY, sortWidth) { @Override public void itemSelected(int index, BeatmapSortOrder item) { @@ -430,7 +430,7 @@ public class SongMenu extends ComplexOpsuState { selectOptionsButton.setHoverFade(0f); // loader - int loaderDim = GameImage.MENU_MUSICNOTE.getImage().getWidth(); + int loaderDim = GameImage.MENU_MUSICNOTE.getWidth(); SpriteSheet spr = new SpriteSheet(GameImage.MENU_LOADER.getImage(), loaderDim, loaderDim); loader = new Animation(spr, 50); diff --git a/src/itdelatrisu/opsu/ui/UI.java b/src/itdelatrisu/opsu/ui/UI.java index df470470..df4c5e55 100644 --- a/src/itdelatrisu/opsu/ui/UI.java +++ b/src/itdelatrisu/opsu/ui/UI.java @@ -262,7 +262,7 @@ public class UI { return; int margin = width / 100, textMarginX = 2; - int offset = GameImage.CURSOR_MIDDLE.getImage().getWidth() / 2; + int offset = GameImage.CURSOR_MIDDLE.getWidth() / 2; int lineHeight = Fonts.SMALL.getLineHeight(); int textWidth = textMarginX * 2, textHeight = lineHeight; if (tooltipNewlines) { diff --git a/src/yugecin/opsudance/render/GameObjectRenderer.java b/src/yugecin/opsudance/render/GameObjectRenderer.java index 04edeaa1..d07361bd 100644 --- a/src/yugecin/opsudance/render/GameObjectRenderer.java +++ b/src/yugecin/opsudance/render/GameObjectRenderer.java @@ -28,6 +28,7 @@ import org.newdawn.slick.Color; import org.newdawn.slick.Image; import yugecin.opsudance.skinning.SkinService; +import static itdelatrisu.opsu.GameImage.*; import static yugecin.opsudance.options.Options.*; public class GameObjectRenderer { @@ -88,7 +89,8 @@ public class GameObjectRenderer { public void renderComboNumberOnly(float x, float y, int number, float alpha) { if (number > 0) { - gameData.drawSymbolNumber(number, x, y, GameImage.HITCIRCLE.getImage().getWidth() * 0.40f / gameData.getDefaultSymbolImage(0).getHeight(), alpha); + float scale = HITCIRCLE.getWidth() * 0.40f / gameData.getDefaultSymbolImage(0).getHeight(); + gameData.drawSymbolNumber(number, x, y, scale, alpha); } }