From c974374d673742a9db509fd6f4db8dec10b46f1b Mon Sep 17 00:00:00 2001 From: yugecin Date: Sun, 18 Dec 2016 21:03:19 +0100 Subject: [PATCH] Add option to color main menu logo based on the cursor color (close #82) --- src/itdelatrisu/opsu/Options.java | 7 +++++++ src/itdelatrisu/opsu/states/MainMenu.java | 16 +++++++++------- src/itdelatrisu/opsu/states/OptionsMenu.java | 3 ++- src/itdelatrisu/opsu/ui/Cursor.java | 3 ++- 4 files changed, 20 insertions(+), 9 deletions(-) diff --git a/src/itdelatrisu/opsu/Options.java b/src/itdelatrisu/opsu/Options.java index fdeee860..e30be1ab 100644 --- a/src/itdelatrisu/opsu/Options.java +++ b/src/itdelatrisu/opsu/Options.java @@ -445,6 +445,7 @@ public class Options { }, DYNAMIC_BACKGROUND ("Enable Dynamic Backgrounds", "DynamicBackground", "The song background will be used as the main menu background.", true), LOAD_VERBOSE ("Show Detailed Loading Progress", "LoadVerbose", "Display more specific loading information in the splash screen.", false), + COLOR_MAIN_MENU_LOGO ("Use cursor color as main menu logo tint", "ColorMainMenuLogo", "Colorful main menu logo", false), MASTER_VOLUME ("Master Volume", "VolumeUniversal", "Global volume level.", 35, 0, 100) { @Override public void setValue(int value) { @@ -1545,6 +1546,12 @@ public class Options { */ public static boolean isLoadVerbose() { return GameOption.LOAD_VERBOSE.getBooleanValue(); } + /** + * Returns whether or not to color the main menu logo. + * @return true if enabled + */ + public static boolean isColorMainMenuLogo() { return GameOption.COLOR_MAIN_MENU_LOGO.getBooleanValue(); } + /** * Returns the track checkpoint time. * @return the checkpoint time (in ms) diff --git a/src/itdelatrisu/opsu/states/MainMenu.java b/src/itdelatrisu/opsu/states/MainMenu.java index d2469e58..ceab5d16 100644 --- a/src/itdelatrisu/opsu/states/MainMenu.java +++ b/src/itdelatrisu/opsu/states/MainMenu.java @@ -32,11 +32,8 @@ import itdelatrisu.opsu.beatmap.BeatmapSetNode; import itdelatrisu.opsu.beatmap.TimingPoint; import itdelatrisu.opsu.downloads.Updater; import itdelatrisu.opsu.states.ButtonMenu.MenuState; -import itdelatrisu.opsu.ui.Colors; -import itdelatrisu.opsu.ui.Fonts; -import itdelatrisu.opsu.ui.MenuButton; +import itdelatrisu.opsu.ui.*; import itdelatrisu.opsu.ui.MenuButton.Expand; -import itdelatrisu.opsu.ui.UI; import itdelatrisu.opsu.ui.animations.AnimatedValue; import itdelatrisu.opsu.ui.animations.AnimationEquation; @@ -126,6 +123,9 @@ public class MainMenu extends BasicGameState { private Input input; private final int state; + private float hue = 0; + private boolean huedone = false; + public MainMenu(int state) { this.state = state; } @@ -273,14 +273,16 @@ public class MainMenu extends BasicGameState { Double position = MusicController.getBeatProgress(); + // logo + Color color = Options.isColorMainMenuLogo() ? Cursor.lastCursorColor : Color.white; if (position != null) { double scale = 1 - (0 - position) * 0.05; - logo.draw(Color.white, (float) scale); + logo.draw(color, (float) scale); Image piece = GameImage.MENU_LOGO_PIECE.getImage().getScaledCopy(logo.getCurrentScale()); float scaleposmodx = piece.getWidth() / 2; float scaleposmody = piece.getHeight() / 2; piece.rotate((float)(position * 360)); - piece.draw(logo.getX() - scaleposmodx, logo.getY() - scaleposmody); + piece.draw(logo.getX() - scaleposmodx, logo.getY() - scaleposmody, color); Image logoCopy = GameImage.MENU_LOGO.getImage().getScaledCopy(logo.getCurrentScale() / (float) scale * 1.05f); scaleposmodx = logoCopy.getWidth() / 2; scaleposmody = logoCopy.getHeight() / 2; @@ -289,7 +291,7 @@ public class MainMenu extends BasicGameState { logoCopy.draw(logo.getX() - scaleposmodx, logo.getY() - scaleposmody, Colors.GHOST_LOGO); Colors.GHOST_LOGO.a = a; } else { - logo.draw(); + logo.draw(color); } // draw music buttons diff --git a/src/itdelatrisu/opsu/states/OptionsMenu.java b/src/itdelatrisu/opsu/states/OptionsMenu.java index c60f3a1c..cc172bde 100644 --- a/src/itdelatrisu/opsu/states/OptionsMenu.java +++ b/src/itdelatrisu/opsu/states/OptionsMenu.java @@ -58,7 +58,8 @@ public class OptionsMenu extends BasicGameState implements OptionsOverlay.Parent GameOption.SCREENSHOT_FORMAT, GameOption.DYNAMIC_BACKGROUND, GameOption.LOAD_HD_IMAGES, - GameOption.LOAD_VERBOSE + GameOption.LOAD_VERBOSE, + GameOption.COLOR_MAIN_MENU_LOGO, }), new OptionTab("Music", new GameOption[] { GameOption.MASTER_VOLUME, diff --git a/src/itdelatrisu/opsu/ui/Cursor.java b/src/itdelatrisu/opsu/ui/Cursor.java index 60ecbcb5..98c01e53 100644 --- a/src/itdelatrisu/opsu/ui/Cursor.java +++ b/src/itdelatrisu/opsu/ui/Cursor.java @@ -76,6 +76,7 @@ public class Cursor { public static Color lastMirroredObjColor = Color.white; public static Color nextObjColor = Color.white; public static Color nextMirroredObjColor = Color.white; + public static Color lastCursorColor = Color.white; private boolean isMirrored; @@ -177,7 +178,7 @@ public class Cursor { if (isMirrored) { filter = Dancer.cursorColorMirrorOverride.getMirrorColor(); } else { - filter = Dancer.cursorColorOverride.getColor(); + lastCursorColor = filter = Dancer.cursorColorOverride.getColor(); } // draw a fading trail