more more easier access

This commit is contained in:
yugecin 2018-07-08 09:52:03 +02:00
parent 0fc2008f2a
commit 65017364bd
No known key found for this signature in database
GPG Key ID: 2C5AC035A7068E44
10 changed files with 60 additions and 36 deletions

View File

@ -858,7 +858,7 @@ public class GameData {
if (comboMax == fullObjectCount) { if (comboMax == fullObjectCount) {
GameImage.RANKING_PERFECT.getImage().draw( GameImage.RANKING_PERFECT.getImage().draw(
width * 0.08f, width * 0.08f,
(height * 0.99f) - GameImage.RANKING_PERFECT.getImage().getHeight() (height * 0.99f) - GameImage.RANKING_PERFECT.getHeight()
); );
} }

View File

@ -338,13 +338,13 @@ public enum GameImage {
STAR ("star", "png", false, false) { STAR ("star", "png", false, false) {
@Override @Override
protected Image process_sub(Image img, int w, int h) { 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) { STAR2 ("star2", "png", false, false) {
@Override @Override
protected Image process_sub(Image img, int w, int h) { 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(); setDefaultImage();
return (skinImage != null) ? skinImage : defaultImage; 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. * Returns the image associated with this resource, with a scale applied.
@ -670,6 +678,14 @@ public enum GameImage {
return this.getImage().getScaledCopy(scale); 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. * Returns an Animation based on the image array.
* If no image array exists, returns the single image as an animation. * If no image array exists, returns the single image as an animation.

View File

@ -100,7 +100,7 @@ public enum GameMod {
*/ */
public void init(int width, int height) { public void init(int width, int height) {
float multY = Fonts.LARGE.getLineHeight() * 2 + height * 0.06f; 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.x = width / 30f;
this.y = multY + Fonts.LARGE.getLineHeight() * 3f + offsetY * index; this.y = multY + Fonts.LARGE.getLineHeight() * 3f + offsetY * index;
} }
@ -193,7 +193,7 @@ public enum GameMod {
// create buttons // create buttons
float baseX = Category.EASY.getX() + Fonts.LARGE.getWidth(Category.EASY.getName()) * 1.25f; 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()) { for (GameMod mod : GameMod.values()) {
Image img = mod.image.getImage(); Image img = mod.image.getImage();
mod.button = new MenuButton(img, mod.button = new MenuButton(img,

View File

@ -101,7 +101,7 @@ public class ScoreData implements Comparable<ScoreData> {
baseX = containerWidth * 0.01f; baseX = containerWidth * 0.01f;
baseY = topY; baseY = topY;
buttonWidth = containerWidth * 0.4f; 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); buttonHeight = Math.max(gradeHeight, Fonts.DEFAULT.getLineHeight() * 3.03f);
buttonOffset = buttonHeight + gradeHeight / 10f; buttonOffset = buttonHeight + gradeHeight / 10f;
buttonAreaHeight = (SongMenu.MAX_SCORE_BUTTONS - 1) * buttonOffset + buttonHeight; buttonAreaHeight = (SongMenu.MAX_SCORE_BUTTONS - 1) * buttonOffset + buttonHeight;

View File

@ -131,7 +131,7 @@ public class DownloadNode {
* @param index the index (to offset the button from the topmost button) * @param index the index (to offset the button from the topmost button)
*/ */
public static boolean resultIconContains(float cx, float cy, int index) { 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 x = buttonBaseX + buttonWidth * 0.001f;
float y = buttonBaseY + (index * buttonOffset) + buttonHeight / 2f; float y = buttonBaseY + (index * buttonOffset) + buttonHeight / 2f;
return ((cx > x && cx < x + iconWidth) && 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) * @param index the index (to offset the button from the topmost button)
*/ */
public static boolean downloadIconContains(float cx, float cy, int index) { 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 edgeX = infoBaseX + infoWidth * 0.985f;
float y = infoBaseY + (index * infoHeight); float y = infoBaseY + (index * infoHeight);
float marginY = infoHeight * 0.04f; float marginY = infoHeight * 0.04f;

View File

@ -66,6 +66,7 @@ import yugecin.opsudance.ui.OptionsOverlay;
import yugecin.opsudance.ui.StoryboardOverlay; import yugecin.opsudance.ui.StoryboardOverlay;
import yugecin.opsudance.utils.GLHelper; import yugecin.opsudance.utils.GLHelper;
import static itdelatrisu.opsu.GameImage.*;
import static itdelatrisu.opsu.ui.Colors.*; import static itdelatrisu.opsu.ui.Colors.*;
import static org.lwjgl.input.Keyboard.*; import static org.lwjgl.input.Keyboard.*;
import static yugecin.opsudance.options.Options.*; import static yugecin.opsudance.options.Options.*;
@ -551,8 +552,8 @@ public class Game extends ComplexOpsuState {
// show retries // show retries
if (retries >= 2 && timeDiff >= -1000) { if (retries >= 2 && timeDiff >= -1000) {
int retryHeight = Math.max( int retryHeight = Math.max(
GameImage.SCOREBAR_BG.getImage().getHeight(), GameImage.SCOREBAR_BG.getHeight(),
GameImage.SCOREBAR_KI.getImage().getHeight() GameImage.SCOREBAR_KI.getHeight()
); );
float oldAlpha = Colors.WHITE_FADE.a; float oldAlpha = Colors.WHITE_FADE.a;
if (timeDiff < -500) if (timeDiff < -500)
@ -588,7 +589,7 @@ public class Game extends ComplexOpsuState {
} }
} }
if (timeDiff < 1500 * speedModifier) { 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) { if (!countdown2Sound) {
SoundController.playSound(SoundEffect.COUNT2); SoundController.playSound(SoundEffect.COUNT2);
countdown2Sound = true; countdown2Sound = true;
@ -692,8 +693,8 @@ public class Game extends ComplexOpsuState {
g.fillRect(0, 0, width, height); g.fillRect(0, 0, width, height);
// draw glowing hit select circle and pulse effect // draw glowing hit select circle and pulse effect
int circleDiameter = GameImage.HITCIRCLE.getImage().getWidth(); int circleDiameter = HITCIRCLE.getWidth();
Image cursorCircle = GameImage.HITCIRCLE_SELECT.getImage().getScaledCopy(circleDiameter, circleDiameter); Image cursorCircle = HITCIRCLE_SELECT.getScaledImage(circleDiameter, circleDiameter);
cursorCircle.setAlpha(1.0f); cursorCircle.setAlpha(1.0f);
cursorCircle.drawCentered(pausedMousePosition.x, pausedMousePosition.y); cursorCircle.drawCentered(pausedMousePosition.x, pausedMousePosition.y);
Image cursorCirclePulse = cursorCircle.getScaledCopy(1f + pausePulse); Image cursorCirclePulse = cursorCircle.getScaledCopy(1f + pausePulse);
@ -1312,7 +1313,7 @@ public class Game extends ComplexOpsuState {
// returning from pause screen // returning from pause screen
if (pauseTime > -1) { if (pauseTime > -1) {
double distance = Math.hypot(pausedMousePosition.x - x, pausedMousePosition.y - y); 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) { if (distance < circleRadius) {
// unpause the game // unpause the game
pauseTime = -1; pauseTime = -1;
@ -1776,7 +1777,7 @@ public class Game extends ComplexOpsuState {
float xDiff = endPoint.x - startPoint.x; float xDiff = endPoint.x - startPoint.x;
float yDiff = endPoint.y - startPoint.y; float yDiff = endPoint.y - startPoint.y;
float dist = (float) Math.hypot(xDiff, yDiff); 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) { if (numPoints > 0) {
// set the image angle // set the image angle
Image followPoint = GameImage.FOLLOWPOINT.getImage(); Image followPoint = GameImage.FOLLOWPOINT.getImage();

View File

@ -180,7 +180,7 @@ public class MainMenu extends BaseOpsuState {
// initialize music buttons // initialize music buttons
final int musicSize = (int) (this.textLineHeight * 0.8f); 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) final int musicSpacing = (int) (musicSize * 0.8f) + musicSize; // (center to center)
int x = width - this.textMarginX - musicSize / 2; int x = width - this.textMarginX - musicSize / 2;
int y = this.textLineHeight * 2 + this.textLineHeight / 2; int y = this.textLineHeight * 2 + this.textLineHeight / 2;
@ -247,19 +247,19 @@ public class MainMenu extends BaseOpsuState {
// logo & buttons // logo & buttons
this.logo = new ImagePosition(MENU_LOGO.getImage()); 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); logoPosition = new AnimatedValue(1, 0, 1, AnimationEquation.OUT_QUAD);
logoButtonAlpha = new AnimatedValue(200, 0f, 1f, AnimationEquation.LINEAR); 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[0] = new ImagePosition(MENU_PLAY.getImage());
this.buttonPositions[1] = new ImagePosition(MENU_OPTIONS.getImage()); this.buttonPositions[1] = new ImagePosition(MENU_OPTIONS.getImage());
this.buttonPositions[2] = new ImagePosition(MENU_EXIT.getImage()); this.buttonPositions[2] = new ImagePosition(MENU_EXIT.getImage());
final int basey = height2 - MENU_OPTIONS.getImage().getHeight() / 2; final int basey = height2 - MENU_OPTIONS.getHeight() / 2;
final float yoffset = MENU_LOGO.getImage().getHeight() * 0.196378f; final float yoffset = MENU_LOGO.getHeight() * 0.196378f;
for (int i = 0; i < 3; i++) { 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].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 // draw buttons
final float buttonProgress = this.buttonAnimation.getValue(); final float buttonProgress = this.buttonAnimation.getValue();
if (this.logoState != LogoState.DEFAULT && buttonProgress > 0f) { if (this.logoState != LogoState.DEFAULT && buttonProgress > 0f) {
final int btnwidth = MENU_OPTIONS.getImage().getWidth(); final int btnwidth = MENU_OPTIONS.getWidth();
final float btnhalfheight = MENU_OPTIONS.getImage().getHeight() / 2f; final float btnhalfheight = MENU_OPTIONS.getHeight() / 2f;
final int basey = height2; final int basey = height2;
final int x = (int) (this.buttonsX + btnwidth * 0.375f * buttonProgress); final int x = (int) (this.buttonsX + btnwidth * 0.375f * buttonProgress);
final Color col = new Color(logoColor); final Color col = new Color(logoColor);
@ -341,8 +341,8 @@ public class MainMenu extends BaseOpsuState {
MENU_OPTIONS.getImage(), MENU_OPTIONS.getImage(),
MENU_EXIT.getImage() MENU_EXIT.getImage()
}; };
final float circleradius = MENU_LOGO.getImage().getHeight() * 0.44498f; final float circleradius = MENU_LOGO.getHeight() * 0.44498f;
final float yoffset = MENU_LOGO.getImage().getHeight() * 0.196378f; final float yoffset = MENU_LOGO.getHeight() * 0.196378f;
final float cr = circleradius * totalLogoScale; final float cr = circleradius * totalLogoScale;
for (int i = 0; i < 3; i++) { for (int i = 0; i < 3; i++) {
final float hoverprogress = this.buttonAnimations[i].getValue(); final float hoverprogress = this.buttonAnimations[i].getValue();
@ -421,16 +421,21 @@ public class MainMenu extends BaseOpsuState {
if (repoButton != null) { if (repoButton != null) {
String text; String text;
int fheight, fwidth; int fheight, fwidth;
float x, y;
repoButton.draw(); repoButton.draw();
text = "opsu!"; text = "opsu!";
fheight = Fonts.SMALL.getLineHeight(); fheight = Fonts.SMALL.getLineHeight();
fwidth = Fonts.SMALL.getWidth(text); 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(); danceRepoButton.draw();
text = "opsu!dance"; text = "opsu!dance";
fheight = Fonts.SMALL.getLineHeight(); fheight = Fonts.SMALL.getLineHeight();
fwidth = Fonts.SMALL.getWidth(text); 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 // draw update button
@ -516,8 +521,8 @@ public class MainMenu extends BaseOpsuState {
} }
// buttons // buttons
this.logo.width = MENU_LOGO.getImage().getWidth(); this.logo.width = MENU_LOGO.getWidth();
this.logo.height = MENU_LOGO.getImage().getHeight(); this.logo.height = MENU_LOGO.getHeight();
this.logo.x = width2 - this.logo.width / 2; this.logo.x = width2 - this.logo.width / 2;
this.logo.y = height2 - this.logo.height / 2; this.logo.y = height2 - this.logo.height / 2;
if (this.logoState != LogoState.DEFAULT) { if (this.logoState != LogoState.DEFAULT) {

View File

@ -325,10 +325,10 @@ public class SongMenu extends ComplexOpsuState {
components.clear(); components.clear();
// header/footer coordinates // 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.BOLD.getLineHeight() + Fonts.DEFAULT.getLineHeight() +
Fonts.SMALL.getLineHeight(); Fonts.SMALL.getLineHeight();
footerY = height - GameImage.SELECTION_MODS.getImage().getHeight(); footerY = height - GameImage.SELECTION_MODS.getHeight();
// footer logo coordinates // footer logo coordinates
float footerHeight = height - footerY; float footerHeight = height - footerY;
@ -342,7 +342,7 @@ public class SongMenu extends ComplexOpsuState {
// initialize sorts // initialize sorts
int sortWidth = (int) (width * 0.12f); int sortWidth = (int) (width * 0.12f);
int posX = (int) (width * 0.87f); 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>(BeatmapSortOrder.values(), posX, posY, sortWidth) { sortMenu = new DropdownMenu<BeatmapSortOrder>(BeatmapSortOrder.values(), posX, posY, sortWidth) {
@Override @Override
public void itemSelected(int index, BeatmapSortOrder item) { public void itemSelected(int index, BeatmapSortOrder item) {
@ -430,7 +430,7 @@ public class SongMenu extends ComplexOpsuState {
selectOptionsButton.setHoverFade(0f); selectOptionsButton.setHoverFade(0f);
// loader // loader
int loaderDim = GameImage.MENU_MUSICNOTE.getImage().getWidth(); int loaderDim = GameImage.MENU_MUSICNOTE.getWidth();
SpriteSheet spr = new SpriteSheet(GameImage.MENU_LOADER.getImage(), loaderDim, loaderDim); SpriteSheet spr = new SpriteSheet(GameImage.MENU_LOADER.getImage(), loaderDim, loaderDim);
loader = new Animation(spr, 50); loader = new Animation(spr, 50);

View File

@ -262,7 +262,7 @@ public class UI {
return; return;
int margin = width / 100, textMarginX = 2; 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 lineHeight = Fonts.SMALL.getLineHeight();
int textWidth = textMarginX * 2, textHeight = lineHeight; int textWidth = textMarginX * 2, textHeight = lineHeight;
if (tooltipNewlines) { if (tooltipNewlines) {

View File

@ -28,6 +28,7 @@ import org.newdawn.slick.Color;
import org.newdawn.slick.Image; import org.newdawn.slick.Image;
import yugecin.opsudance.skinning.SkinService; import yugecin.opsudance.skinning.SkinService;
import static itdelatrisu.opsu.GameImage.*;
import static yugecin.opsudance.options.Options.*; import static yugecin.opsudance.options.Options.*;
public class GameObjectRenderer { public class GameObjectRenderer {
@ -88,7 +89,8 @@ public class GameObjectRenderer {
public void renderComboNumberOnly(float x, float y, int number, float alpha) { public void renderComboNumberOnly(float x, float y, int number, float alpha) {
if (number > 0) { 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);
} }
} }