diff --git a/src/itdelatrisu/opsu/GameData.java b/src/itdelatrisu/opsu/GameData.java index c24e9256..af22019b 100644 --- a/src/itdelatrisu/opsu/GameData.java +++ b/src/itdelatrisu/opsu/GameData.java @@ -28,6 +28,7 @@ import itdelatrisu.opsu.downloads.Updater; import itdelatrisu.opsu.objects.curves.Curve; import itdelatrisu.opsu.replay.Replay; import itdelatrisu.opsu.replay.ReplayFrame; +import itdelatrisu.opsu.ui.Colors; import itdelatrisu.opsu.ui.animations.AnimationEquation; import java.io.File; @@ -620,7 +621,7 @@ public class GameData { ); } else { // lead-in time (yellow) - g.setColor(Utils.COLOR_YELLOW_ALPHA); + g.setColor(Colors.YELLOW_ALPHA); g.fillArc(circleX, symbolHeight, circleDiameter, circleDiameter, -90 + (int) (360f * trackPosition / firstObjectTime), -90 ); @@ -657,27 +658,27 @@ public class GameData { float hitErrorY = height / uiScale - margin - 10; float barY = (hitErrorY - 3) * uiScale, barHeight = 6 * uiScale; float tickY = (hitErrorY - 10) * uiScale, tickHeight = 20 * uiScale; - float oldAlphaBlack = Utils.COLOR_BLACK_ALPHA.a; - Utils.COLOR_BLACK_ALPHA.a = hitErrorAlpha; - g.setColor(Utils.COLOR_BLACK_ALPHA); + float oldAlphaBlack = Colors.BLACK_ALPHA.a; + Colors.BLACK_ALPHA.a = hitErrorAlpha; + g.setColor(Colors.BLACK_ALPHA); g.fillRect((hitErrorX - 3 - hitResultOffset[HIT_50]) * uiScale, tickY, (hitResultOffset[HIT_50] * 2) * uiScale, tickHeight); - Utils.COLOR_BLACK_ALPHA.a = oldAlphaBlack; - Utils.COLOR_LIGHT_ORANGE.a = hitErrorAlpha; - g.setColor(Utils.COLOR_LIGHT_ORANGE); + Colors.BLACK_ALPHA.a = oldAlphaBlack; + Colors.LIGHT_ORANGE.a = hitErrorAlpha; + g.setColor(Colors.LIGHT_ORANGE); g.fillRect((hitErrorX - 3 - hitResultOffset[HIT_50]) * uiScale, barY, (hitResultOffset[HIT_50] * 2) * uiScale, barHeight); - Utils.COLOR_LIGHT_ORANGE.a = 1f; - Utils.COLOR_LIGHT_GREEN.a = hitErrorAlpha; - g.setColor(Utils.COLOR_LIGHT_GREEN); + Colors.LIGHT_ORANGE.a = 1f; + Colors.LIGHT_GREEN.a = hitErrorAlpha; + g.setColor(Colors.LIGHT_GREEN); g.fillRect((hitErrorX - 3 - hitResultOffset[HIT_100]) * uiScale, barY, (hitResultOffset[HIT_100] * 2) * uiScale, barHeight); - Utils.COLOR_LIGHT_GREEN.a = 1f; - Utils.COLOR_LIGHT_BLUE.a = hitErrorAlpha; - g.setColor(Utils.COLOR_LIGHT_BLUE); + Colors.LIGHT_GREEN.a = 1f; + Colors.LIGHT_BLUE.a = hitErrorAlpha; + g.setColor(Colors.LIGHT_BLUE); g.fillRect((hitErrorX - 3 - hitResultOffset[HIT_300]) * uiScale, barY, (hitResultOffset[HIT_300] * 2) * uiScale, barHeight); - Utils.COLOR_LIGHT_BLUE.a = 1f; + Colors.LIGHT_BLUE.a = 1f; white.a = hitErrorAlpha; g.setColor(white); g.fillRect((hitErrorX - 1.5f) * uiScale, tickY, 3 * uiScale, tickHeight); @@ -836,7 +837,7 @@ public class GameData { // header Image rankingTitle = GameImage.RANKING_TITLE.getImage(); - g.setColor(Utils.COLOR_BLACK_ALPHA); + g.setColor(Colors.BLACK_ALPHA); g.fillRect(0, 0, width, 100 * uiScale); rankingTitle.draw((width * 0.97f) - rankingTitle.getWidth(), 0); float marginX = width * 0.01f, marginY = height * 0.002f; @@ -898,12 +899,12 @@ public class GameData { // slider curve if (hitResult.curve != null) { - float oldWhiteAlpha = Utils.COLOR_WHITE_FADE.a; + float oldWhiteAlpha = Colors.WHITE_FADE.a; float oldColorAlpha = hitResult.color.a; - Utils.COLOR_WHITE_FADE.a = alpha; + Colors.WHITE_FADE.a = alpha; hitResult.color.a = alpha; hitResult.curve.draw(hitResult.color); - Utils.COLOR_WHITE_FADE.a = oldWhiteAlpha; + Colors.WHITE_FADE.a = oldWhiteAlpha; hitResult.color.a = oldColorAlpha; } diff --git a/src/itdelatrisu/opsu/Utils.java b/src/itdelatrisu/opsu/Utils.java index e0f41197..09deb763 100644 --- a/src/itdelatrisu/opsu/Utils.java +++ b/src/itdelatrisu/opsu/Utils.java @@ -60,7 +60,6 @@ import org.lwjgl.BufferUtils; import org.lwjgl.opengl.Display; import org.lwjgl.opengl.GL11; import org.newdawn.slick.Animation; -import org.newdawn.slick.Color; import org.newdawn.slick.GameContainer; import org.newdawn.slick.Input; import org.newdawn.slick.SlickException; @@ -77,26 +76,6 @@ import com.sun.jna.platform.FileUtils; * Contains miscellaneous utilities. */ public class Utils { - /** Game colors. */ - public static final Color - COLOR_BLACK_ALPHA = new Color(0, 0, 0, 0.5f), - COLOR_WHITE_ALPHA = new Color(255, 255, 255, 0.5f), - COLOR_BLUE_DIVIDER = new Color(49, 94, 237), - COLOR_BLUE_BACKGROUND = new Color(74, 130, 255), - COLOR_BLUE_BUTTON = new Color(40, 129, 237), - COLOR_ORANGE_BUTTON = new Color(200, 90, 3), - COLOR_YELLOW_ALPHA = new Color(255, 255, 0, 0.4f), - COLOR_WHITE_FADE = new Color(255, 255, 255, 1f), - COLOR_RED_HOVER = new Color(255, 112, 112), - COLOR_GREEN = new Color(137, 201, 79), - COLOR_LIGHT_ORANGE = new Color(255,192,128), - COLOR_LIGHT_GREEN = new Color(128,255,128), - COLOR_LIGHT_BLUE = new Color(128,128,255), - COLOR_GREEN_SEARCH = new Color(173, 255, 47), - COLOR_DARK_GRAY = new Color(0.3f, 0.3f, 0.3f, 1f), - COLOR_RED_HIGHLIGHT = new Color(246, 154, 161), - COLOR_BLUE_HIGHLIGHT = new Color(173, 216, 230); - /** Game fonts. */ public static UnicodeFont FONT_DEFAULT, FONT_BOLD, diff --git a/src/itdelatrisu/opsu/beatmap/BeatmapSetNode.java b/src/itdelatrisu/opsu/beatmap/BeatmapSetNode.java index 6324d1c4..1272217f 100644 --- a/src/itdelatrisu/opsu/beatmap/BeatmapSetNode.java +++ b/src/itdelatrisu/opsu/beatmap/BeatmapSetNode.java @@ -22,6 +22,7 @@ import itdelatrisu.opsu.GameData.Grade; import itdelatrisu.opsu.GameImage; import itdelatrisu.opsu.Options; import itdelatrisu.opsu.Utils; +import itdelatrisu.opsu.ui.Colors; import org.newdawn.slick.Color; import org.newdawn.slick.Image; @@ -78,10 +79,10 @@ public class BeatmapSetNode { bgColor = Color.white; textColor = Options.getSkin().getSongSelectActiveTextColor(); } else - bgColor = Utils.COLOR_BLUE_BUTTON; + bgColor = Colors.BLUE_BUTTON; beatmap = beatmapSet.get(beatmapIndex); } else { - bgColor = Utils.COLOR_ORANGE_BUTTON; + bgColor = Colors.ORANGE_BUTTON; beatmap = beatmapSet.get(0); } bg.draw(x, y, bgColor); diff --git a/src/itdelatrisu/opsu/downloads/DownloadNode.java b/src/itdelatrisu/opsu/downloads/DownloadNode.java index 302b740e..40f3838d 100644 --- a/src/itdelatrisu/opsu/downloads/DownloadNode.java +++ b/src/itdelatrisu/opsu/downloads/DownloadNode.java @@ -26,6 +26,7 @@ import itdelatrisu.opsu.beatmap.BeatmapSetList; import itdelatrisu.opsu.downloads.Download.DownloadListener; import itdelatrisu.opsu.downloads.Download.Status; import itdelatrisu.opsu.downloads.servers.DownloadServer; +import itdelatrisu.opsu.ui.Colors; import itdelatrisu.opsu.ui.UI; import java.io.File; @@ -329,7 +330,7 @@ public class DownloadNode { // map is already loaded if (BeatmapSetList.get().containsBeatmapSetID(beatmapSetID)) { - g.setColor(Utils.COLOR_BLUE_BUTTON); + g.setColor(Colors.BLUE_BUTTON); g.fillRect(buttonBaseX, y, buttonWidth, buttonHeight); } @@ -337,7 +338,7 @@ public class DownloadNode { if (dl != null) { float progress = dl.getProgress(); if (progress > 0f) { - g.setColor(Utils.COLOR_GREEN); + g.setColor(Colors.GREEN); g.fillRect(buttonBaseX, y, buttonWidth * progress / 100f, buttonHeight); } } diff --git a/src/itdelatrisu/opsu/objects/Circle.java b/src/itdelatrisu/opsu/objects/Circle.java index 9c9320fd..7818ba58 100644 --- a/src/itdelatrisu/opsu/objects/Circle.java +++ b/src/itdelatrisu/opsu/objects/Circle.java @@ -26,6 +26,7 @@ import itdelatrisu.opsu.Options; import itdelatrisu.opsu.Utils; import itdelatrisu.opsu.beatmap.HitObject; import itdelatrisu.opsu.states.Game; +import itdelatrisu.opsu.ui.Colors; import org.newdawn.slick.Color; import org.newdawn.slick.GameContainer; @@ -104,21 +105,21 @@ public class Circle implements GameObject { alpha = Math.min(alpha, fadeOutAlpha); } - float oldAlpha = Utils.COLOR_WHITE_FADE.a; - Utils.COLOR_WHITE_FADE.a = color.a = alpha; + float oldAlpha = Colors.WHITE_FADE.a; + Colors.WHITE_FADE.a = color.a = alpha; if (timeDiff >= 0 && !GameMod.HIDDEN.isActive()) GameImage.APPROACHCIRCLE.getImage().getScaledCopy(approachScale).drawCentered(x, y, color); GameImage.HITCIRCLE.getImage().drawCentered(x, y, color); boolean overlayAboveNumber = Options.getSkin().isHitCircleOverlayAboveNumber(); if (!overlayAboveNumber) - GameImage.HITCIRCLE_OVERLAY.getImage().drawCentered(x, y, Utils.COLOR_WHITE_FADE); + GameImage.HITCIRCLE_OVERLAY.getImage().drawCentered(x, y, Colors.WHITE_FADE); data.drawSymbolNumber(hitObject.getComboNumber(), x, y, GameImage.HITCIRCLE.getImage().getWidth() * 0.40f / data.getDefaultSymbolImage(0).getHeight(), alpha); if (overlayAboveNumber) - GameImage.HITCIRCLE_OVERLAY.getImage().drawCentered(x, y, Utils.COLOR_WHITE_FADE); + GameImage.HITCIRCLE_OVERLAY.getImage().drawCentered(x, y, Colors.WHITE_FADE); - Utils.COLOR_WHITE_FADE.a = oldAlpha; + Colors.WHITE_FADE.a = oldAlpha; } /** diff --git a/src/itdelatrisu/opsu/objects/Slider.java b/src/itdelatrisu/opsu/objects/Slider.java index f022fda6..2fe24b73 100644 --- a/src/itdelatrisu/opsu/objects/Slider.java +++ b/src/itdelatrisu/opsu/objects/Slider.java @@ -31,6 +31,7 @@ import itdelatrisu.opsu.objects.curves.CircumscribedCircle; import itdelatrisu.opsu.objects.curves.Curve; import itdelatrisu.opsu.objects.curves.LinearBezier; import itdelatrisu.opsu.states.Game; +import itdelatrisu.opsu.ui.Colors; import org.newdawn.slick.Color; import org.newdawn.slick.GameContainer; @@ -184,8 +185,8 @@ public class Slider implements GameObject { float alpha = Utils.clamp(1 - fadeinScale, 0, 1); boolean overlayAboveNumber = Options.getSkin().isHitCircleOverlayAboveNumber(); - float oldAlpha = Utils.COLOR_WHITE_FADE.a; - Utils.COLOR_WHITE_FADE.a = color.a = alpha; + float oldAlpha = Colors.WHITE_FADE.a; + Colors.WHITE_FADE.a = color.a = alpha; Image hitCircleOverlay = GameImage.HITCIRCLE_OVERLAY.getImage(); Image hitCircle = GameImage.HITCIRCLE.getImage(); float[] endPos = curve.pointAt(1); @@ -195,19 +196,19 @@ public class Slider implements GameObject { // end circle hitCircle.drawCentered(endPos[0], endPos[1], color); - hitCircleOverlay.drawCentered(endPos[0], endPos[1], Utils.COLOR_WHITE_FADE); + hitCircleOverlay.drawCentered(endPos[0], endPos[1], Colors.WHITE_FADE); // start circle hitCircle.drawCentered(x, y, color); if (!overlayAboveNumber) - hitCircleOverlay.drawCentered(x, y, Utils.COLOR_WHITE_FADE); + hitCircleOverlay.drawCentered(x, y, Colors.WHITE_FADE); // ticks if (ticksT != null) { Image tick = GameImage.SLIDER_TICK.getImage(); for (int i = 0; i < ticksT.length; i++) { float[] c = curve.pointAt(ticksT[i]); - tick.drawCentered(c[0], c[1], Utils.COLOR_WHITE_FADE); + tick.drawCentered(c[0], c[1], Colors.WHITE_FADE); } } if (GameMod.HIDDEN.isActive()) { @@ -221,7 +222,7 @@ public class Slider implements GameObject { data.drawSymbolNumber(hitObject.getComboNumber(), x, y, hitCircle.getWidth() * 0.40f / data.getDefaultSymbolImage(0).getHeight(), alpha); if (overlayAboveNumber) - hitCircleOverlay.drawCentered(x, y, Utils.COLOR_WHITE_FADE); + hitCircleOverlay.drawCentered(x, y, Colors.WHITE_FADE); // repeats for (int tcurRepeat = currentRepeats; tcurRepeat <= currentRepeats + 1; tcurRepeat++) { @@ -273,16 +274,16 @@ public class Slider implements GameObject { // "flashlight" mod: dim the screen if (GameMod.FLASHLIGHT.isActive()) { - float oldAlphaBlack = Utils.COLOR_BLACK_ALPHA.a; - Utils.COLOR_BLACK_ALPHA.a = 0.75f; - g.setColor(Utils.COLOR_BLACK_ALPHA); + float oldAlphaBlack = Colors.BLACK_ALPHA.a; + Colors.BLACK_ALPHA.a = 0.75f; + g.setColor(Colors.BLACK_ALPHA); g.fillRect(0, 0, containerWidth, containerHeight); - Utils.COLOR_BLACK_ALPHA.a = oldAlphaBlack; + Colors.BLACK_ALPHA.a = oldAlphaBlack; } } } - Utils.COLOR_WHITE_FADE.a = oldAlpha; + Colors.WHITE_FADE.a = oldAlpha; } /** diff --git a/src/itdelatrisu/opsu/objects/Spinner.java b/src/itdelatrisu/opsu/objects/Spinner.java index 1677381e..53d67639 100644 --- a/src/itdelatrisu/opsu/objects/Spinner.java +++ b/src/itdelatrisu/opsu/objects/Spinner.java @@ -28,6 +28,7 @@ import itdelatrisu.opsu.audio.SoundController; import itdelatrisu.opsu.audio.SoundEffect; import itdelatrisu.opsu.beatmap.HitObject; import itdelatrisu.opsu.states.Game; +import itdelatrisu.opsu.ui.Colors; import org.newdawn.slick.Color; import org.newdawn.slick.GameContainer; @@ -183,12 +184,12 @@ public class Spinner implements GameObject { // darken screen if (Options.getSkin().isSpinnerFadePlayfield()) { - float oldAlpha = Utils.COLOR_BLACK_ALPHA.a; + float oldAlpha = Colors.BLACK_ALPHA.a; if (timeDiff > 0) - Utils.COLOR_BLACK_ALPHA.a *= alpha; - g.setColor(Utils.COLOR_BLACK_ALPHA); + Colors.BLACK_ALPHA.a *= alpha; + g.setColor(Colors.BLACK_ALPHA); g.fillRect(0, 0, width, height); - Utils.COLOR_BLACK_ALPHA.a = oldAlpha; + Colors.BLACK_ALPHA.a = oldAlpha; } // rpm diff --git a/src/itdelatrisu/opsu/objects/curves/Curve.java b/src/itdelatrisu/opsu/objects/curves/Curve.java index ad79353a..fad50877 100644 --- a/src/itdelatrisu/opsu/objects/curves/Curve.java +++ b/src/itdelatrisu/opsu/objects/curves/Curve.java @@ -20,10 +20,10 @@ package itdelatrisu.opsu.objects.curves; import itdelatrisu.opsu.GameImage; import itdelatrisu.opsu.Options; -import itdelatrisu.opsu.Utils; import itdelatrisu.opsu.beatmap.HitObject; import itdelatrisu.opsu.render.CurveRenderState; import itdelatrisu.opsu.skins.Skin; +import itdelatrisu.opsu.ui.Colors; import org.lwjgl.opengl.ContextCapabilities; import org.lwjgl.opengl.GLContext; @@ -116,7 +116,7 @@ public abstract class Curve { Image hitCircle = GameImage.HITCIRCLE.getImage(); Image hitCircleOverlay = GameImage.HITCIRCLE_OVERLAY.getImage(); for (int i = 0; i < curve.length; i++) - hitCircleOverlay.drawCentered(curve[i].x, curve[i].y, Utils.COLOR_WHITE_FADE); + hitCircleOverlay.drawCentered(curve[i].x, curve[i].y, Colors.WHITE_FADE); for (int i = 0; i < curve.length; i++) hitCircle.drawCentered(curve[i].x, curve[i].y, color); } diff --git a/src/itdelatrisu/opsu/render/CurveRenderState.java b/src/itdelatrisu/opsu/render/CurveRenderState.java index 99a6f384..3696a056 100644 --- a/src/itdelatrisu/opsu/render/CurveRenderState.java +++ b/src/itdelatrisu/opsu/render/CurveRenderState.java @@ -18,9 +18,9 @@ package itdelatrisu.opsu.render; import itdelatrisu.opsu.GameImage; -import itdelatrisu.opsu.Utils; import itdelatrisu.opsu.beatmap.HitObject; import itdelatrisu.opsu.objects.curves.Vec2f; +import itdelatrisu.opsu.ui.Colors; import java.nio.ByteBuffer; import java.nio.FloatBuffer; @@ -127,14 +127,14 @@ public class CurveRenderState { GL11.glViewport(0, 0, fbo.width, fbo.height); GL11.glClearColor(0.0f, 0.0f, 0.0f, 0.0f); GL11.glClear(GL11.GL_COLOR_BUFFER_BIT | GL11.GL_DEPTH_BUFFER_BIT); - Utils.COLOR_WHITE_FADE.a = 1.0f; + Colors.WHITE_FADE.a = 1.0f; this.draw_curve(color, borderColor, curve); color.a = 1f; GL11.glBindTexture(GL11.GL_TEXTURE_2D, oldTex); EXTFramebufferObject.glBindFramebufferEXT(EXTFramebufferObject.GL_FRAMEBUFFER_EXT, oldFb); GL11.glViewport(oldViewport.get(0), oldViewport.get(1), oldViewport.get(2), oldViewport.get(3)); - Utils.COLOR_WHITE_FADE.a = alpha; + Colors.WHITE_FADE.a = alpha; } // draw a fullscreen quad with the texture that contains the curve diff --git a/src/itdelatrisu/opsu/states/DownloadsMenu.java b/src/itdelatrisu/opsu/states/DownloadsMenu.java index a92e548b..cc7cf779 100644 --- a/src/itdelatrisu/opsu/states/DownloadsMenu.java +++ b/src/itdelatrisu/opsu/states/DownloadsMenu.java @@ -37,6 +37,7 @@ import itdelatrisu.opsu.downloads.servers.DownloadServer; import itdelatrisu.opsu.downloads.servers.HexideServer; import itdelatrisu.opsu.downloads.servers.MnetworkServer; import itdelatrisu.opsu.downloads.servers.YaSOnlineServer; +import itdelatrisu.opsu.ui.Colors; import itdelatrisu.opsu.ui.MenuButton; import itdelatrisu.opsu.ui.UI; @@ -424,7 +425,7 @@ public class DownloadsMenu extends BasicGameState { // importing beatmaps if (importThread != null) { // darken the screen - g.setColor(Utils.COLOR_BLACK_ALPHA); + g.setColor(Colors.BLACK_ALPHA); g.fillRect(0, 0, width, height); UI.drawLoadingProgress(g); diff --git a/src/itdelatrisu/opsu/states/Game.java b/src/itdelatrisu/opsu/states/Game.java index 73a88901..d89102fa 100644 --- a/src/itdelatrisu/opsu/states/Game.java +++ b/src/itdelatrisu/opsu/states/Game.java @@ -46,6 +46,7 @@ import itdelatrisu.opsu.render.FrameBufferCache; import itdelatrisu.opsu.replay.PlaybackSpeed; import itdelatrisu.opsu.replay.Replay; import itdelatrisu.opsu.replay.ReplayFrame; +import itdelatrisu.opsu.ui.Colors; import itdelatrisu.opsu.ui.MenuButton; import itdelatrisu.opsu.ui.UI; import itdelatrisu.opsu.ui.animations.AnimationEquation; @@ -475,15 +476,15 @@ public class Game extends BasicGameState { GameImage.SCOREBAR_BG.getImage().getHeight(), GameImage.SCOREBAR_KI.getImage().getHeight() ); - float oldAlpha = Utils.COLOR_WHITE_FADE.a; + float oldAlpha = Colors.WHITE_FADE.a; if (timeDiff < -500) - Utils.COLOR_WHITE_FADE.a = (1000 + timeDiff) / 500f; + Colors.WHITE_FADE.a = (1000 + timeDiff) / 500f; Utils.FONT_MEDIUM.drawString( 2 + (width / 100), retryHeight, String.format("%d retries and counting...", retries), - Utils.COLOR_WHITE_FADE + Colors.WHITE_FADE ); - Utils.COLOR_WHITE_FADE.a = oldAlpha; + Colors.WHITE_FADE.a = oldAlpha; } if (isLeadIn()) @@ -560,7 +561,7 @@ public class Game extends BasicGameState { // returning from pause screen if (pauseTime > -1 && pausedMouseX > -1 && pausedMouseY > -1) { // darken the screen - g.setColor(Utils.COLOR_BLACK_ALPHA); + g.setColor(Colors.BLACK_ALPHA); g.fillRect(0, 0, width, height); // draw glowing hit select circle and pulse effect diff --git a/src/itdelatrisu/opsu/states/MainMenu.java b/src/itdelatrisu/opsu/states/MainMenu.java index e8f186a6..34f51b79 100644 --- a/src/itdelatrisu/opsu/states/MainMenu.java +++ b/src/itdelatrisu/opsu/states/MainMenu.java @@ -31,6 +31,7 @@ import itdelatrisu.opsu.beatmap.BeatmapSetList; import itdelatrisu.opsu.beatmap.BeatmapSetNode; import itdelatrisu.opsu.downloads.Updater; import itdelatrisu.opsu.states.ButtonMenu.MenuState; +import itdelatrisu.opsu.ui.Colors; import itdelatrisu.opsu.ui.MenuButton; import itdelatrisu.opsu.ui.MenuButton.Expand; import itdelatrisu.opsu.ui.UI; @@ -246,12 +247,12 @@ public class MainMenu extends BasicGameState { } // top/bottom horizontal bars - float oldAlpha = Utils.COLOR_BLACK_ALPHA.a; - Utils.COLOR_BLACK_ALPHA.a = 0.2f; - g.setColor(Utils.COLOR_BLACK_ALPHA); + float oldAlpha = Colors.BLACK_ALPHA.a; + Colors.BLACK_ALPHA.a = 0.2f; + g.setColor(Colors.BLACK_ALPHA); g.fillRect(0, 0, width, height / 9f); g.fillRect(0, height * 8 / 9f, width, height / 9f); - Utils.COLOR_BLACK_ALPHA.a = oldAlpha; + Colors.BLACK_ALPHA.a = oldAlpha; // draw downloads button downloadsButton.draw(); diff --git a/src/itdelatrisu/opsu/states/OptionsMenu.java b/src/itdelatrisu/opsu/states/OptionsMenu.java index 2e8df7d1..e45d076b 100644 --- a/src/itdelatrisu/opsu/states/OptionsMenu.java +++ b/src/itdelatrisu/opsu/states/OptionsMenu.java @@ -26,6 +26,7 @@ import itdelatrisu.opsu.Utils; import itdelatrisu.opsu.audio.MusicController; import itdelatrisu.opsu.audio.SoundController; import itdelatrisu.opsu.audio.SoundEffect; +import itdelatrisu.opsu.ui.Colors; import itdelatrisu.opsu.ui.MenuButton; import itdelatrisu.opsu.ui.UI; @@ -248,7 +249,7 @@ public class OptionsMenu extends BasicGameState { // key entry state if (keyEntryLeft || keyEntryRight) { - g.setColor(Utils.COLOR_BLACK_ALPHA); + g.setColor(Colors.BLACK_ALPHA); g.fillRect(0, 0, width, height); g.setColor(Color.white); String prompt = (keyEntryLeft) ? @@ -420,7 +421,7 @@ public class OptionsMenu extends BasicGameState { Utils.FONT_LARGE.drawString(width / 30, y, option.getName(), color); Utils.FONT_LARGE.drawString(width / 2, y, option.getValueString(), color); Utils.FONT_SMALL.drawString(width / 30, y + textHeight, option.getDescription(), color); - g.setColor(Utils.COLOR_WHITE_ALPHA); + g.setColor(Colors.WHITE_ALPHA); g.drawLine(0, y + textHeight, width, y + textHeight); } diff --git a/src/itdelatrisu/opsu/states/SongMenu.java b/src/itdelatrisu/opsu/states/SongMenu.java index 681035d6..7d63a70a 100644 --- a/src/itdelatrisu/opsu/states/SongMenu.java +++ b/src/itdelatrisu/opsu/states/SongMenu.java @@ -39,6 +39,7 @@ import itdelatrisu.opsu.beatmap.BeatmapSortOrder; import itdelatrisu.opsu.db.BeatmapDB; import itdelatrisu.opsu.db.ScoreDB; import itdelatrisu.opsu.states.ButtonMenu.MenuState; +import itdelatrisu.opsu.ui.Colors; import itdelatrisu.opsu.ui.MenuButton; import itdelatrisu.opsu.ui.UI; import itdelatrisu.opsu.ui.animations.AnimatedValue; @@ -317,10 +318,10 @@ public class SongMenu extends BasicGameState { g.clearClip(); // top/bottom bars - g.setColor(Utils.COLOR_BLACK_ALPHA); + g.setColor(Colors.BLACK_ALPHA); g.fillRect(0, 0, width, headerY); g.fillRect(0, footerY, width, height - footerY); - g.setColor(Utils.COLOR_BLUE_DIVIDER); + g.setColor(Colors.BLUE_DIVIDER); g.setLineWidth(DIVIDER_LINE_WIDTH); g.drawLine(0, headerY, width, headerY); g.drawLine(0, footerY, width, footerY); @@ -353,14 +354,14 @@ public class SongMenu extends BasicGameState { headerTextY += Utils.FONT_DEFAULT.getLineHeight() - 2; float speedModifier = GameMod.getSpeedMultiplier(); Color color2 = (speedModifier == 1f) ? Color.white : - (speedModifier > 1f) ? Utils.COLOR_RED_HIGHLIGHT : Utils.COLOR_BLUE_HIGHLIGHT; + (speedModifier > 1f) ? Colors.RED_HIGHLIGHT : Colors.BLUE_HIGHLIGHT; Utils.FONT_BOLD.drawString(marginX, headerTextY, songInfo[2], color2); headerTextY += Utils.FONT_BOLD.getLineHeight() - 4; Utils.FONT_DEFAULT.drawString(marginX, headerTextY, songInfo[3], Color.white); headerTextY += Utils.FONT_DEFAULT.getLineHeight() - 4; float multiplier = GameMod.getDifficultyMultiplier(); Color color4 = (multiplier == 1f) ? Color.white : - (multiplier > 1f) ? Utils.COLOR_RED_HIGHLIGHT : Utils.COLOR_BLUE_HIGHLIGHT; + (multiplier > 1f) ? Colors.RED_HIGHLIGHT : Colors.BLUE_HIGHLIGHT; Utils.FONT_SMALL.drawString(marginX, headerTextY, songInfo[4], color4); } @@ -413,18 +414,18 @@ public class SongMenu extends BasicGameState { float searchExtraHeight = Utils.FONT_DEFAULT.getLineHeight() * 0.7f; float searchProgress = (searchTransitionTimer < SEARCH_TRANSITION_TIME) ? ((float) searchTransitionTimer / SEARCH_TRANSITION_TIME) : 1f; - float oldAlpha = Utils.COLOR_BLACK_ALPHA.a; + float oldAlpha = Colors.BLACK_ALPHA.a; if (searchEmpty) { searchRectHeight += (1f - searchProgress) * searchExtraHeight; - Utils.COLOR_BLACK_ALPHA.a = 0.5f - searchProgress * 0.3f; + Colors.BLACK_ALPHA.a = 0.5f - searchProgress * 0.3f; } else { searchRectHeight += searchProgress * searchExtraHeight; - Utils.COLOR_BLACK_ALPHA.a = 0.2f + searchProgress * 0.3f; + Colors.BLACK_ALPHA.a = 0.2f + searchProgress * 0.3f; } - g.setColor(Utils.COLOR_BLACK_ALPHA); + g.setColor(Colors.BLACK_ALPHA); g.fillRect(searchBaseX, headerY + DIVIDER_LINE_WIDTH / 2, width - searchBaseX, searchRectHeight); - Utils.COLOR_BLACK_ALPHA.a = oldAlpha; - Utils.FONT_BOLD.drawString(searchTextX, searchY, "Search:", Utils.COLOR_GREEN_SEARCH); + Colors.BLACK_ALPHA.a = oldAlpha; + Utils.FONT_BOLD.drawString(searchTextX, searchY, "Search:", Colors.GREEN_SEARCH); if (searchEmpty) Utils.FONT_BOLD.drawString(searchX, searchY, "Type to search!", Color.white); else { @@ -449,14 +450,14 @@ public class SongMenu extends BasicGameState { startIndex += startNode.beatmapIndex; 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); + Colors.BLACK_ALPHA, Color.white, true); } } // reloading beatmaps if (reloadThread != null) { // darken the screen - g.setColor(Utils.COLOR_BLACK_ALPHA); + g.setColor(Colors.BLACK_ALPHA); g.fillRect(0, 0, width, height); UI.drawLoadingProgress(g); diff --git a/src/itdelatrisu/opsu/ui/Colors.java b/src/itdelatrisu/opsu/ui/Colors.java new file mode 100644 index 00000000..8e87f1d3 --- /dev/null +++ b/src/itdelatrisu/opsu/ui/Colors.java @@ -0,0 +1,49 @@ +/* + * opsu! - an open-source osu! client + * Copyright (C) 2014, 2015 Jeffrey Han + * + * opsu! is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * opsu! is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with opsu!. If not, see . + */ + +package itdelatrisu.opsu.ui; + +import org.newdawn.slick.Color; + +/** + * Colors used for drawing. + */ +public class Colors { + /** Game colors. */ + public static final Color + BLACK_ALPHA = new Color(0, 0, 0, 0.5f), + WHITE_ALPHA = new Color(255, 255, 255, 0.5f), + BLUE_DIVIDER = new Color(49, 94, 237), + BLUE_BACKGROUND = new Color(74, 130, 255), + BLUE_BUTTON = new Color(40, 129, 237), + ORANGE_BUTTON = new Color(200, 90, 3), + YELLOW_ALPHA = new Color(255, 255, 0, 0.4f), + WHITE_FADE = new Color(255, 255, 255, 1f), + RED_HOVER = new Color(255, 112, 112), + GREEN = new Color(137, 201, 79), + LIGHT_ORANGE = new Color(255,192,128), + LIGHT_GREEN = new Color(128,255,128), + LIGHT_BLUE = new Color(128,128,255), + GREEN_SEARCH = new Color(173, 255, 47), + DARK_GRAY = new Color(0.3f, 0.3f, 0.3f, 1f), + RED_HIGHLIGHT = new Color(246, 154, 161), + BLUE_HIGHLIGHT = new Color(173, 216, 230); + + // This class should not be instantiated. + private Colors() {} +} diff --git a/src/itdelatrisu/opsu/ui/UI.java b/src/itdelatrisu/opsu/ui/UI.java index 34bd316f..c4785c65 100644 --- a/src/itdelatrisu/opsu/ui/UI.java +++ b/src/itdelatrisu/opsu/ui/UI.java @@ -185,7 +185,7 @@ public class UI { filter = Color.white; textColor = Color.black; } else { - filter = (isHover) ? Utils.COLOR_RED_HOVER : Color.red; + filter = (isHover) ? Colors.RED_HOVER : Color.red; textColor = Color.white; } tabImage.drawCentered(x, y, filter); @@ -404,21 +404,21 @@ public class UI { // draw tooltip text inside a filled rectangle float alpha = tooltipAlpha.getValue(); - float oldAlpha = Utils.COLOR_BLACK_ALPHA.a; - Utils.COLOR_BLACK_ALPHA.a = alpha; - g.setColor(Utils.COLOR_BLACK_ALPHA); - Utils.COLOR_BLACK_ALPHA.a = oldAlpha; + float oldAlpha = Colors.BLACK_ALPHA.a; + Colors.BLACK_ALPHA.a = alpha; + g.setColor(Colors.BLACK_ALPHA); + Colors.BLACK_ALPHA.a = oldAlpha; g.fillRect(x, y, textWidth, textHeight); - oldAlpha = Utils.COLOR_DARK_GRAY.a; - Utils.COLOR_DARK_GRAY.a = alpha; - g.setColor(Utils.COLOR_DARK_GRAY); + oldAlpha = Colors.DARK_GRAY.a; + Colors.DARK_GRAY.a = alpha; + g.setColor(Colors.DARK_GRAY); g.setLineWidth(1); g.drawRect(x, y, textWidth, textHeight); - Utils.COLOR_DARK_GRAY.a = oldAlpha; - oldAlpha = Utils.COLOR_WHITE_ALPHA.a; - Utils.COLOR_WHITE_ALPHA.a = alpha; - Utils.FONT_SMALL.drawString(x + textMarginX, y, tooltip, Utils.COLOR_WHITE_ALPHA); - Utils.COLOR_WHITE_ALPHA.a = oldAlpha; + Colors.DARK_GRAY.a = oldAlpha; + oldAlpha = Colors.WHITE_ALPHA.a; + Colors.WHITE_ALPHA.a = alpha; + Utils.FONT_SMALL.drawString(x + textMarginX, y, tooltip, Colors.WHITE_ALPHA); + Colors.WHITE_ALPHA.a = oldAlpha; } /** @@ -474,17 +474,17 @@ public class UI { alpha -= 1 - ((BAR_NOTIFICATION_TIME - barNotifTimer) / (BAR_NOTIFICATION_TIME * 0.1f)); int midX = container.getWidth() / 2, midY = container.getHeight() / 2; float barHeight = Utils.FONT_LARGE.getLineHeight() * (1f + 0.6f * Math.min(barNotifTimer * 15f / BAR_NOTIFICATION_TIME, 1f)); - float oldAlphaB = Utils.COLOR_BLACK_ALPHA.a, oldAlphaW = Utils.COLOR_WHITE_ALPHA.a; - Utils.COLOR_BLACK_ALPHA.a *= alpha; - Utils.COLOR_WHITE_ALPHA.a = alpha; - g.setColor(Utils.COLOR_BLACK_ALPHA); + float oldAlphaB = Colors.BLACK_ALPHA.a, oldAlphaW = Colors.WHITE_ALPHA.a; + Colors.BLACK_ALPHA.a *= alpha; + Colors.WHITE_ALPHA.a = alpha; + g.setColor(Colors.BLACK_ALPHA); g.fillRect(0, midY - barHeight / 2f, container.getWidth(), barHeight); Utils.FONT_LARGE.drawString( midX - Utils.FONT_LARGE.getWidth(barNotif) / 2f, midY - Utils.FONT_LARGE.getLineHeight() / 2.2f, - barNotif, Utils.COLOR_WHITE_ALPHA); - Utils.COLOR_BLACK_ALPHA.a = oldAlphaB; - Utils.COLOR_WHITE_ALPHA.a = oldAlphaW; + barNotif, Colors.WHITE_ALPHA); + Colors.BLACK_ALPHA.a = oldAlphaB; + Colors.WHITE_ALPHA.a = oldAlphaW; } /**