Skin options: CursorRotate, CursorExpand, SpinnerFadePlayfield, CursorTrailRotate, ComboBurstRandom, Combo[1-8], SongSelect(Active|Inactive)Text.
Signed-off-by: Jeffrey Han <itdelatrisu@gmail.com>
This commit is contained in:
parent
40e4495030
commit
b804a4d154
|
@ -114,6 +114,9 @@ public class Container extends AppGameContainer {
|
|||
// save user options
|
||||
Options.saveOptions();
|
||||
|
||||
// reset cursor
|
||||
UI.resetCursor();
|
||||
|
||||
// destroy images
|
||||
InternalTextureLoader.get().clear();
|
||||
|
||||
|
|
|
@ -1124,10 +1124,14 @@ public class GameData {
|
|||
// combo bursts (at 30, 60, 100+50x)
|
||||
if (Options.isComboBurstEnabled() &&
|
||||
(combo == 30 || combo == 60 || (combo >= 100 && combo % 50 == 0))) {
|
||||
if (Options.getSkin().isComboBurstRandom())
|
||||
comboBurstIndex = (int) (Math.random() * comboBurstImages.length);
|
||||
else {
|
||||
if (combo == 30)
|
||||
comboBurstIndex = 0;
|
||||
else
|
||||
comboBurstIndex = (comboBurstIndex + 1) % comboBurstImages.length;
|
||||
}
|
||||
comboBurstAlpha = 0.8f;
|
||||
if ((comboBurstIndex % 2) == 0)
|
||||
comboBurstX = width;
|
||||
|
|
|
@ -529,8 +529,10 @@ public class OsuParser {
|
|||
line, file.getAbsolutePath()), e);
|
||||
}
|
||||
}
|
||||
if (!colors.isEmpty())
|
||||
if (!colors.isEmpty()) {
|
||||
beatmap.combo = colors.toArray(new Color[colors.size()]);
|
||||
beatmap.isDefaultCombo = false;
|
||||
}
|
||||
break;
|
||||
case "[HitObjects]":
|
||||
int type = 0;
|
||||
|
@ -585,8 +587,10 @@ public class OsuParser {
|
|||
return null;
|
||||
|
||||
// if no custom colors, use the default color scheme
|
||||
if (beatmap.combo == null)
|
||||
beatmap.combo = Utils.DEFAULT_COMBO;
|
||||
if (beatmap.combo == null) {
|
||||
beatmap.combo = Options.getSkin().getComboColors();
|
||||
beatmap.isDefaultCombo = true;
|
||||
}
|
||||
|
||||
// parse hit objects now?
|
||||
if (parseObjects)
|
||||
|
|
|
@ -19,6 +19,7 @@
|
|||
package itdelatrisu.opsu;
|
||||
|
||||
import itdelatrisu.opsu.audio.SoundController;
|
||||
import itdelatrisu.opsu.skins.Skin;
|
||||
|
||||
import java.nio.IntBuffer;
|
||||
import java.util.Iterator;
|
||||
|
@ -242,6 +243,7 @@ public class UI {
|
|||
|
||||
int removeCount = 0;
|
||||
int FPSmod = (Options.getTargetFPS() / 60);
|
||||
Skin skin = Options.getSkin();
|
||||
|
||||
// TODO: use an image buffer
|
||||
if (newStyle) {
|
||||
|
@ -275,6 +277,8 @@ public class UI {
|
|||
// draw a fading trail
|
||||
float alpha = 0f;
|
||||
float t = 2f / cursorX.size();
|
||||
if (skin.isCursorTrailRotated())
|
||||
cursorTrail.setRotation(cursorAngle);
|
||||
Iterator<Integer> iterX = cursorX.iterator();
|
||||
Iterator<Integer> iterY = cursorY.iterator();
|
||||
while (iterX.hasNext()) {
|
||||
|
@ -288,15 +292,15 @@ public class UI {
|
|||
cursorTrail.drawCentered(mouseX, mouseY);
|
||||
|
||||
// increase the cursor size if pressed
|
||||
if (mousePressed && skin.isCursorExpanded()) {
|
||||
final float scale = 1.25f;
|
||||
if (mousePressed) {
|
||||
cursor = cursor.getScaledCopy(scale);
|
||||
if (newStyle)
|
||||
cursorMiddle = cursorMiddle.getScaledCopy(scale);
|
||||
}
|
||||
|
||||
// draw the other components
|
||||
if (newStyle)
|
||||
if (newStyle && skin.isCursorRotated())
|
||||
cursor.setRotation(cursorAngle);
|
||||
cursor.drawCentered(mouseX, mouseY);
|
||||
if (newStyle)
|
||||
|
@ -373,6 +377,7 @@ public class UI {
|
|||
GameImage.CURSOR_TRAIL.destroySkinImage();
|
||||
cursorAngle = 0f;
|
||||
GameImage.CURSOR.getImage().setRotation(0f);
|
||||
GameImage.CURSOR_TRAIL.getImage().setRotation(0f);
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -84,10 +84,6 @@ public class Utils {
|
|||
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_GREEN_OBJECT = new Color(26, 207, 26),
|
||||
COLOR_BLUE_OBJECT = new Color(46, 136, 248),
|
||||
COLOR_RED_OBJECT = new Color(243, 48, 77),
|
||||
COLOR_ORANGE_OBJECT = new Color(255, 200, 32),
|
||||
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),
|
||||
|
@ -100,12 +96,6 @@ public class Utils {
|
|||
COLOR_RED_HIGHLIGHT = new Color(246, 154, 161),
|
||||
COLOR_BLUE_HIGHLIGHT = new Color(173, 216, 230);
|
||||
|
||||
/** The default map colors, used when a map does not provide custom colors. */
|
||||
public static final Color[] DEFAULT_COMBO = {
|
||||
COLOR_ORANGE_OBJECT, COLOR_GREEN_OBJECT,
|
||||
COLOR_BLUE_OBJECT, COLOR_RED_OBJECT,
|
||||
};
|
||||
|
||||
/** Game fonts. */
|
||||
public static UnicodeFont
|
||||
FONT_DEFAULT, FONT_BOLD,
|
||||
|
|
|
@ -19,7 +19,6 @@
|
|||
package itdelatrisu.opsu.beatmap;
|
||||
|
||||
import itdelatrisu.opsu.Options;
|
||||
import itdelatrisu.opsu.Utils;
|
||||
|
||||
import java.io.File;
|
||||
import java.util.ArrayList;
|
||||
|
@ -183,6 +182,9 @@ public class Beatmap implements Comparable<Beatmap> {
|
|||
/** Combo colors (max 8). */
|
||||
public Color[] combo;
|
||||
|
||||
/** Whether the combo is the default skin combo (true) or a beatmap combo (false). */
|
||||
public boolean isDefaultCombo = true;
|
||||
|
||||
/**
|
||||
* [HitObjects]
|
||||
*/
|
||||
|
@ -400,7 +402,7 @@ public class Beatmap implements Comparable<Beatmap> {
|
|||
* or null if the field is null or the default combo.
|
||||
*/
|
||||
public String comboToString() {
|
||||
if (combo == null || combo == Utils.DEFAULT_COMBO)
|
||||
if (combo == null || isDefaultCombo)
|
||||
return null;
|
||||
|
||||
StringBuilder sb = new StringBuilder();
|
||||
|
@ -423,7 +425,8 @@ public class Beatmap implements Comparable<Beatmap> {
|
|||
* @param s the string
|
||||
*/
|
||||
public void comboFromString(String s) {
|
||||
this.combo = Utils.DEFAULT_COMBO;
|
||||
this.combo = Options.getSkin().getComboColors();
|
||||
this.isDefaultCombo = true;
|
||||
if (s == null)
|
||||
return;
|
||||
|
||||
|
@ -433,7 +436,9 @@ public class Beatmap implements Comparable<Beatmap> {
|
|||
String[] rgb = tokens[i].split(",");
|
||||
colors.add(new Color(Integer.parseInt(rgb[0]), Integer.parseInt(rgb[1]), Integer.parseInt(rgb[2])));
|
||||
}
|
||||
if (!colors.isEmpty())
|
||||
if (!colors.isEmpty()) {
|
||||
this.combo = colors.toArray(new Color[colors.size()]);
|
||||
this.isDefaultCombo = false;
|
||||
}
|
||||
}
|
||||
}
|
|
@ -69,14 +69,14 @@ public class BeatmapSetNode {
|
|||
Beatmap beatmap;
|
||||
bg.setAlpha(0.9f);
|
||||
Color bgColor;
|
||||
Color textColor = Color.lightGray;
|
||||
Color textColor = Options.getSkin().getSongSelectInactiveTextColor();
|
||||
|
||||
// get drawing parameters
|
||||
if (expanded) {
|
||||
x -= bg.getWidth() / 10f;
|
||||
if (focus) {
|
||||
bgColor = Color.white;
|
||||
textColor = Color.white;
|
||||
textColor = Options.getSkin().getSongSelectActiveTextColor();
|
||||
} else
|
||||
bgColor = Utils.COLOR_BLUE_BUTTON;
|
||||
beatmap = beatmapSet.get(beatmapIndex);
|
||||
|
|
|
@ -22,6 +22,7 @@ import itdelatrisu.opsu.GameData;
|
|||
import itdelatrisu.opsu.GameData.HitObjectType;
|
||||
import itdelatrisu.opsu.GameImage;
|
||||
import itdelatrisu.opsu.GameMod;
|
||||
import itdelatrisu.opsu.Options;
|
||||
import itdelatrisu.opsu.Utils;
|
||||
import itdelatrisu.opsu.audio.SoundController;
|
||||
import itdelatrisu.opsu.audio.SoundEffect;
|
||||
|
@ -125,15 +126,17 @@ public class Spinner implements GameObject {
|
|||
return;
|
||||
|
||||
boolean spinnerComplete = (rotations >= rotationsNeeded);
|
||||
float alpha = Utils.clamp(1 - (float) timeDiff / FADE_IN_TIME, 0f, 1f);
|
||||
|
||||
// darken screen
|
||||
float alpha = Utils.clamp(1 - (float) timeDiff / FADE_IN_TIME, 0f, 1f);
|
||||
if (Options.getSkin().isSpinnerFadePlayfield()) {
|
||||
float oldAlpha = Utils.COLOR_BLACK_ALPHA.a;
|
||||
if (timeDiff > 0)
|
||||
Utils.COLOR_BLACK_ALPHA.a *= alpha;
|
||||
g.setColor(Utils.COLOR_BLACK_ALPHA);
|
||||
g.fillRect(0, 0, width, height);
|
||||
Utils.COLOR_BLACK_ALPHA.a = oldAlpha;
|
||||
}
|
||||
|
||||
// rpm
|
||||
int rpm = Math.abs(Math.round(sumVelocity / storedVelocities.length * 60));
|
||||
|
|
Loading…
Reference in New Issue
Block a user