/* * opsu!dance - fork of opsu! with cursordance auto * Copyright (C) 2016 yugecin * * opsu!dance 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!dance 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!dance. If not, see . */ package yugecin.opsudance; import org.newdawn.slick.Color; import static yugecin.opsudance.options.Options.*; public enum ObjectColorOverrides { NONE ("Do not override", 0) { @Override public Color getColor(int comboColorIndex) { return comboColors[comboColorIndex]; } }, COMBO1 ("Combo1", 1), COMBO2 ("Combo2", 2), COMBO3 ("Combo3", 3), COMBO4 ("Combo4", 4), COMBO5 ("Combo5", 5), COMBO6 ("Combo6", 6), COMBO7 ("Combo7", 7), COMBO8 ("Combo8", 8), OPPOSITECOMBOCOLOR ("Opposite combo color", 9) { @Override public Color getColor(int comboColorIndex) { return comboColors[(comboColorIndex + comboColors.length / 2) % comboColors.length]; } }, RAINBOW ("Rainbow", 10) { @Override public Color getColor(int comboColorIndex) { return nextRainbowColor(); } }, RAINBOWSHIFT ("Rainbow + 180° hue shift", 11) { @Override public Color getColor(int comboColorIndex) { return nextMirrorRainbowColor(); } }, BLACK ("Black", 12) { @Override public Color getColor(int comboColorIndex) { return Color.black; } }, WHITE ("White", 13) { @Override public Color getColor(int comboColorIndex) { return white; } }; private static Color white = new Color(255, 255, 255); public int nr; private String displayText; public static Color[] comboColors; public static float hue; ObjectColorOverrides(String displayText, int nr) { this.displayText = displayText; this.nr = nr; } public static void reset(int mapID) { hue = mapID % 360; } @Override public String toString() { return displayText; } public Color getColor(int comboColorIndex) { return comboColors[nr % comboColors.length]; } private static Color nextRainbowColor() { hue += OPTION_DANCE_RGB_OBJECT_INC.val / 10f; return new Color(java.awt.Color.getHSBColor(hue / 360f, 1.0f, 1.0f).getRGB()); } private static Color nextMirrorRainbowColor() { return new Color(java.awt.Color.getHSBColor((hue + 180f) / 360f, 1.0f, 1.0f).getRGB()); } }