Combo Color ordering
General Image scaling Score fixed size width Spinner centering (slick has bad centering) Broke Ranking Panel
This commit is contained in:
parent
4826798fba
commit
fff0080ddc
|
@ -457,6 +457,35 @@ public class GameData {
|
|||
}
|
||||
}
|
||||
}
|
||||
/**
|
||||
* Draws a string of scoreSymbols.
|
||||
* @param str the string to draw
|
||||
* @param x the starting x coordinate
|
||||
* @param y the y coordinate
|
||||
* @param scale the scale to apply
|
||||
* @param rightAlign align right (true) or left (false)
|
||||
*/
|
||||
private void drawFixedSizeSymbolString(String str, int x, int y, float scale, float fixedsize, boolean rightAlign) {
|
||||
char[] c = str.toCharArray();
|
||||
int cx = x;
|
||||
if (rightAlign) {
|
||||
for (int i = c.length - 1; i >= 0; i--) {
|
||||
Image digit = getScoreSymbolImage(c[i]);
|
||||
if (scale != 1.0f)
|
||||
digit = digit.getScaledCopy(scale);
|
||||
cx -= fixedsize;
|
||||
digit.draw(cx + (fixedsize-digit.getWidth())/2, y);
|
||||
}
|
||||
} else {
|
||||
for (int i = 0; i < c.length; i++) {
|
||||
Image digit = getScoreSymbolImage(c[i]);
|
||||
if (scale != 1.0f)
|
||||
digit = digit.getScaledCopy(scale);
|
||||
digit.draw(cx + (fixedsize-digit.getWidth())/2, y);
|
||||
cx += fixedsize;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Draws game elements:
|
||||
|
@ -470,28 +499,28 @@ public class GameData {
|
|||
int marginX = (int) (width * 0.008f);
|
||||
|
||||
// score
|
||||
drawSymbolString((scoreDisplay < 100000000) ? String.format("%08d", scoreDisplay) : Long.toString(scoreDisplay),
|
||||
width - marginX, 0, 1.0f, true);
|
||||
drawFixedSizeSymbolString((scoreDisplay < 100000000) ? String.format("%08d", scoreDisplay) : Long.toString(scoreDisplay),
|
||||
width - marginX, 0, 1.0f, getScoreSymbolImage('0').getWidth()-2, true);
|
||||
|
||||
// score percentage
|
||||
int symbolHeight = getScoreSymbolImage('0').getHeight();
|
||||
float scorePercent = getScorePercent();
|
||||
drawSymbolString(
|
||||
String.format((scorePercent < 10f) ? "0%.2f%%" : "%.2f%%", scorePercent),
|
||||
width - marginX, symbolHeight, 0.75f, true
|
||||
width - marginX, symbolHeight, 0.60f, true
|
||||
);
|
||||
|
||||
// map progress circle
|
||||
g.setAntiAlias(true);
|
||||
g.setLineWidth(2f);
|
||||
g.setColor(Color.white);
|
||||
int circleX = width - marginX - ( // max width: "100.00%"
|
||||
float circleDiameter = symbolHeight * 0.60f;
|
||||
int circleX = (int) (width - marginX - ( // max width: "100.00%"
|
||||
getScoreSymbolImage('1').getWidth() +
|
||||
getScoreSymbolImage('0').getWidth() * 4 +
|
||||
getScoreSymbolImage('.').getWidth() +
|
||||
getScoreSymbolImage('%').getWidth()
|
||||
);
|
||||
float circleDiameter = symbolHeight * 0.75f;
|
||||
) * 0.60f - circleDiameter);
|
||||
g.drawOval(circleX, symbolHeight, circleDiameter, circleDiameter);
|
||||
|
||||
OsuFile osu = MusicController.getOsuFile();
|
||||
|
@ -621,18 +650,16 @@ public class GameData {
|
|||
* @param osu the OsuFile
|
||||
*/
|
||||
public void drawRankingElements(Graphics g, OsuFile osu) {
|
||||
// grade
|
||||
Grade grade = getGrade();
|
||||
if (grade != Grade.NULL)
|
||||
grade.getLargeImage().draw(width * 0.985f - grade.getLargeImage().getWidth(), height * 0.09f);
|
||||
|
||||
|
||||
float marginX = width * 0.01f, marginY = height * 0.025f;
|
||||
// header & "Ranking" text
|
||||
Image rankingTitle = GameImage.RANKING_TITLE.getImage();
|
||||
float rankingHeight = (rankingTitle.getHeight() * 0.75f) + 3;
|
||||
|
||||
|
||||
g.setColor(Utils.COLOR_BLACK_ALPHA);
|
||||
g.fillRect(0, 0, width, rankingHeight);
|
||||
rankingTitle.draw((width * 0.97f) - rankingTitle.getWidth(), 0);
|
||||
float marginX = width * 0.01f, marginY = height * 0.01f;
|
||||
Utils.FONT_LARGE.drawString(marginX, marginY,
|
||||
String.format("%s - %s [%s]", osu.getArtist(), osu.getTitle(), osu.version), Color.white);
|
||||
Utils.FONT_MEDIUM.drawString(marginX, marginY + Utils.FONT_LARGE.getLineHeight() - 6,
|
||||
|
@ -645,19 +672,20 @@ public class GameData {
|
|||
Image rankingPanel = GameImage.RANKING_PANEL.getImage();
|
||||
int rankingPanelWidth = rankingPanel.getWidth();
|
||||
int rankingPanelHeight = rankingPanel.getHeight();
|
||||
rankingPanel.draw(0, rankingHeight - (rankingHeight / 10f));
|
||||
rankingPanel.draw(0, rankingHeight);//rankingHeight - (rankingHeight / 10f));
|
||||
|
||||
float symbolTextScale = (height / 15f) / getScoreSymbolImage('0').getHeight();
|
||||
float rankResultScale = (height * 0.03f) / hitResults[HIT_300].getHeight();
|
||||
float scoreTextScale = 1.2f; //(height / 15f) / getScoreSymbolImage('0').getHeight();
|
||||
float symbolTextScale = 1.2f; //(height / 15f) / getScoreSymbolImage('0').getHeight();
|
||||
float rankResultScale = 0.5f;//(height * 0.03f) / hitResults[HIT_300].getHeight();
|
||||
|
||||
// score
|
||||
drawSymbolString((score < 100000000) ? String.format("%08d", score) : Long.toString(score),
|
||||
(int) (width * 0.18f), height / 6, symbolTextScale, false);
|
||||
drawFixedSizeSymbolString((score < 100000000) ? String.format("%08d", score) : Long.toString(score),
|
||||
(int) (width * 0.18f), (int) (rankingHeight+50), scoreTextScale, getScoreSymbolImage('0').getWidth()*scoreTextScale-2, false);
|
||||
|
||||
// result counts
|
||||
float resultInitialX = rankingPanelWidth * 0.20f;
|
||||
float resultInitialY = rankingHeight + (rankingPanelHeight * 0.27f) + (rankingHeight / 10f);
|
||||
float resultHitInitialX = rankingPanelWidth * 0.05f;
|
||||
float resultInitialX = 150;// rankingPanelWidth * 0.20f;
|
||||
float resultInitialY = rankingHeight + (rankingPanelHeight * 0.20f) + (rankingHeight / 10f);
|
||||
float resultHitInitialX = 0;//rankingPanelWidth * 0.05f;
|
||||
float resultHitInitialY = resultInitialY + (getScoreSymbolImage('0').getHeight() * symbolTextScale);
|
||||
float resultOffsetX = rankingPanelWidth / 2f;
|
||||
float resultOffsetY = rankingPanelHeight * 0.2f;
|
||||
|
@ -700,6 +728,10 @@ public class GameData {
|
|||
(height * 0.99f) - GameImage.RANKING_PERFECT.getImage().getHeight()
|
||||
);
|
||||
}
|
||||
// grade
|
||||
Grade grade = getGrade();
|
||||
if (grade != Grade.NULL)
|
||||
grade.getLargeImage().draw(width * 0.985f - grade.getLargeImage().getWidth(), rankingHeight+marginY);
|
||||
|
||||
// mod icons
|
||||
int modWidth = GameMod.AUTO.getImage().getWidth();
|
||||
|
|
|
@ -35,31 +35,31 @@ public enum GameImage {
|
|||
CURSOR ("cursor", "png") {
|
||||
@Override
|
||||
protected Image process_sub(Image img, int w, int h) {
|
||||
return img.getScaledCopy(1 + ((h - 600) / 1000f));
|
||||
return img.getScaledCopy(h / 768f);
|
||||
}
|
||||
},
|
||||
CURSOR_MIDDLE ("cursormiddle", "png") {
|
||||
@Override
|
||||
protected Image process_sub(Image img, int w, int h) {
|
||||
return img.getScaledCopy(1 + ((h - 600) / 1000f));
|
||||
return img.getScaledCopy(h / 768f);
|
||||
}
|
||||
},
|
||||
CURSOR_TRAIL ("cursortrail", "png") {
|
||||
@Override
|
||||
protected Image process_sub(Image img, int w, int h) {
|
||||
return img.getScaledCopy(1 + ((h - 600) / 1000f));
|
||||
return img.getScaledCopy(h / 768f);
|
||||
}
|
||||
},
|
||||
CURSOR_OLD ("cursor2", "png", false, false) {
|
||||
@Override
|
||||
protected Image process_sub(Image img, int w, int h) {
|
||||
return img.getScaledCopy(1 + ((h - 600) / 1000f));
|
||||
return img.getScaledCopy(h / 768f);
|
||||
}
|
||||
},
|
||||
CURSOR_TRAIL_OLD ("cursortrail2", "png", false, false) {
|
||||
@Override
|
||||
protected Image process_sub(Image img, int w, int h) {
|
||||
return img.getScaledCopy(1 + ((h - 600) / 1000f));
|
||||
return img.getScaledCopy(h / 768f);
|
||||
}
|
||||
},
|
||||
|
||||
|
@ -183,125 +183,280 @@ public enum GameImage {
|
|||
SCOREBAR_KI ("scorebar-ki", "png"),
|
||||
SCOREBAR_KI_DANGER ("scorebar-kidanger", "png"),
|
||||
SCOREBAR_KI_DANGER2 ("scorebar-kidanger2", "png"),
|
||||
HIT_MISS ("hit0", "png"),
|
||||
HIT_50 ("hit50", "png"),
|
||||
HIT_100 ("hit100", "png"),
|
||||
HIT_300 ("hit300", "png"),
|
||||
HIT_100K ("hit100k", "png"),
|
||||
HIT_300K ("hit300k", "png"),
|
||||
HIT_300G ("hit300g", "png"),
|
||||
HIT_MISS ("hit0", "png") {
|
||||
@Override
|
||||
protected Image process_sub(Image img, int w, int h) {
|
||||
return img.getScaledCopy(h / 768f);
|
||||
}
|
||||
},
|
||||
HIT_50 ("hit50", "png") {
|
||||
@Override
|
||||
protected Image process_sub(Image img, int w, int h) {
|
||||
return img.getScaledCopy(h / 768f);
|
||||
}
|
||||
},
|
||||
HIT_100 ("hit100", "png") {
|
||||
@Override
|
||||
protected Image process_sub(Image img, int w, int h) {
|
||||
return img.getScaledCopy(h / 768f);
|
||||
}
|
||||
},
|
||||
HIT_300 ("hit300", "png") {
|
||||
@Override
|
||||
protected Image process_sub(Image img, int w, int h) {
|
||||
return img.getScaledCopy(h / 768f);
|
||||
}
|
||||
},
|
||||
HIT_100K ("hit100k", "png") {
|
||||
@Override
|
||||
protected Image process_sub(Image img, int w, int h) {
|
||||
return img.getScaledCopy(h / 768f);
|
||||
}
|
||||
},
|
||||
HIT_300K ("hit300k", "png") {
|
||||
@Override
|
||||
protected Image process_sub(Image img, int w, int h) {
|
||||
return img.getScaledCopy(h / 768f);
|
||||
}
|
||||
},
|
||||
HIT_300G ("hit300g", "png") {
|
||||
@Override
|
||||
protected Image process_sub(Image img, int w, int h) {
|
||||
return img.getScaledCopy(h / 768f);
|
||||
}
|
||||
},
|
||||
HIT_SLIDER10 ("sliderpoint10", "png"),
|
||||
HIT_SLIDER30 ("sliderpoint30", "png"),
|
||||
RANKING_SS ("ranking-X", "png") {
|
||||
@Override
|
||||
protected Image process_sub(Image img, int w, int h) {
|
||||
return img.getScaledCopy((h / 2f) / img.getHeight());
|
||||
return img.getScaledCopy(h / 768f);
|
||||
}
|
||||
},
|
||||
RANKING_SS_SMALL ("ranking-X-small", "png"),
|
||||
RANKING_SSH ("ranking-XH", "png") {
|
||||
@Override
|
||||
protected Image process_sub(Image img, int w, int h) {
|
||||
return img.getScaledCopy((h / 2f) / img.getHeight());
|
||||
return img.getScaledCopy(h / 768f);
|
||||
}
|
||||
},
|
||||
RANKING_SSH_SMALL ("ranking-XH-small", "png"),
|
||||
RANKING_S ("ranking-S", "png") {
|
||||
@Override
|
||||
protected Image process_sub(Image img, int w, int h) {
|
||||
return img.getScaledCopy((h / 2f) / img.getHeight());
|
||||
return img.getScaledCopy(h / 768f);
|
||||
}
|
||||
},
|
||||
RANKING_S_SMALL ("ranking-S-small", "png"),
|
||||
RANKING_SH ("ranking-SH", "png") {
|
||||
@Override
|
||||
protected Image process_sub(Image img, int w, int h) {
|
||||
return img.getScaledCopy((h / 2f) / img.getHeight());
|
||||
return img.getScaledCopy(h / 768f);
|
||||
}
|
||||
},
|
||||
RANKING_SH_SMALL ("ranking-SH-small", "png"),
|
||||
RANKING_A ("ranking-A", "png") {
|
||||
@Override
|
||||
protected Image process_sub(Image img, int w, int h) {
|
||||
return img.getScaledCopy((h / 2f) / img.getHeight());
|
||||
return img.getScaledCopy(h / 768f);
|
||||
}
|
||||
},
|
||||
RANKING_A_SMALL ("ranking-A-small", "png"),
|
||||
RANKING_B ("ranking-B", "png") {
|
||||
@Override
|
||||
protected Image process_sub(Image img, int w, int h) {
|
||||
return img.getScaledCopy((h / 2f) / img.getHeight());
|
||||
return img.getScaledCopy(h / 768f);
|
||||
}
|
||||
},
|
||||
RANKING_B_SMALL ("ranking-B-small", "png"),
|
||||
RANKING_C ("ranking-C", "png") {
|
||||
@Override
|
||||
protected Image process_sub(Image img, int w, int h) {
|
||||
return img.getScaledCopy((h / 2f) / img.getHeight());
|
||||
return img.getScaledCopy(h / 768f);
|
||||
}
|
||||
},
|
||||
RANKING_C_SMALL ("ranking-C-small", "png"),
|
||||
RANKING_D ("ranking-D", "png") {
|
||||
@Override
|
||||
protected Image process_sub(Image img, int w, int h) {
|
||||
return img.getScaledCopy((h / 2f) / img.getHeight());
|
||||
return img.getScaledCopy(h / 768f);
|
||||
}
|
||||
},
|
||||
RANKING_D_SMALL ("ranking-D-small", "png"),
|
||||
RANKING_PANEL ("ranking-panel", "png") {
|
||||
@Override
|
||||
protected Image process_sub(Image img, int w, int h) {
|
||||
return img.getScaledCopy((h * 0.63f) / img.getHeight());
|
||||
return img.getScaledCopy(h / 768f);
|
||||
}
|
||||
},
|
||||
RANKING_PERFECT ("ranking-perfect", "png") {
|
||||
@Override
|
||||
protected Image process_sub(Image img, int w, int h) {
|
||||
return img.getScaledCopy((h * 0.16f) / img.getHeight());
|
||||
return img.getScaledCopy(h / 768f);
|
||||
}
|
||||
},
|
||||
RANKING_TITLE ("ranking-title", "png") {
|
||||
@Override
|
||||
protected Image process_sub(Image img, int w, int h) {
|
||||
return img.getScaledCopy((h * 0.15f) / img.getHeight());
|
||||
return img.getScaledCopy(h / 768f);
|
||||
}
|
||||
},
|
||||
RANKING_MAXCOMBO ("ranking-maxcombo", "png") {
|
||||
@Override
|
||||
protected Image process_sub(Image img, int w, int h) {
|
||||
return img.getScaledCopy((h * 0.05f) / img.getHeight());
|
||||
return img.getScaledCopy(h / 768f);
|
||||
}
|
||||
},
|
||||
RANKING_ACCURACY ("ranking-accuracy", "png") {
|
||||
@Override
|
||||
protected Image process_sub(Image img, int w, int h) {
|
||||
return img.getScaledCopy((h * 0.05f) / img.getHeight());
|
||||
return img.getScaledCopy(h / 768f);
|
||||
}
|
||||
},
|
||||
DEFAULT_0 ("default-0", "png") {
|
||||
@Override
|
||||
protected Image process_sub(Image img, int w, int h) {
|
||||
return img.getScaledCopy(h / 768f);
|
||||
}
|
||||
},
|
||||
DEFAULT_1 ("default-1", "png") {
|
||||
@Override
|
||||
protected Image process_sub(Image img, int w, int h) {
|
||||
return img.getScaledCopy(h / 768f);
|
||||
}
|
||||
},
|
||||
DEFAULT_2 ("default-2", "png") {
|
||||
@Override
|
||||
protected Image process_sub(Image img, int w, int h) {
|
||||
return img.getScaledCopy(h / 768f);
|
||||
}
|
||||
},
|
||||
DEFAULT_3 ("default-3", "png") {
|
||||
@Override
|
||||
protected Image process_sub(Image img, int w, int h) {
|
||||
return img.getScaledCopy(h / 768f);
|
||||
}
|
||||
},
|
||||
DEFAULT_4 ("default-4", "png") {
|
||||
@Override
|
||||
protected Image process_sub(Image img, int w, int h) {
|
||||
return img.getScaledCopy(h / 768f);
|
||||
}
|
||||
},
|
||||
DEFAULT_5 ("default-5", "png") {
|
||||
@Override
|
||||
protected Image process_sub(Image img, int w, int h) {
|
||||
return img.getScaledCopy(h / 768f);
|
||||
}
|
||||
},
|
||||
DEFAULT_6 ("default-6", "png") {
|
||||
@Override
|
||||
protected Image process_sub(Image img, int w, int h) {
|
||||
return img.getScaledCopy(h / 768f);
|
||||
}
|
||||
},
|
||||
DEFAULT_7 ("default-7", "png") {
|
||||
@Override
|
||||
protected Image process_sub(Image img, int w, int h) {
|
||||
return img.getScaledCopy(h / 768f);
|
||||
}
|
||||
},
|
||||
DEFAULT_8 ("default-8", "png") {
|
||||
@Override
|
||||
protected Image process_sub(Image img, int w, int h) {
|
||||
return img.getScaledCopy(h / 768f);
|
||||
}
|
||||
},
|
||||
DEFAULT_9 ("default-9", "png") {
|
||||
@Override
|
||||
protected Image process_sub(Image img, int w, int h) {
|
||||
return img.getScaledCopy(h / 768f);
|
||||
}
|
||||
},
|
||||
SCORE_0 ("score-0", "png") {
|
||||
@Override
|
||||
protected Image process_sub(Image img, int w, int h) {
|
||||
return img.getScaledCopy(h / 768f);
|
||||
}
|
||||
},
|
||||
SCORE_1 ("score-1", "png") {
|
||||
@Override
|
||||
protected Image process_sub(Image img, int w, int h) {
|
||||
return img.getScaledCopy(h / 768f);
|
||||
}
|
||||
},
|
||||
SCORE_2 ("score-2", "png") {
|
||||
@Override
|
||||
protected Image process_sub(Image img, int w, int h) {
|
||||
return img.getScaledCopy(h / 768f);
|
||||
}
|
||||
},
|
||||
SCORE_3 ("score-3", "png") {
|
||||
@Override
|
||||
protected Image process_sub(Image img, int w, int h) {
|
||||
return img.getScaledCopy(h / 768f);
|
||||
}
|
||||
},
|
||||
SCORE_4 ("score-4", "png") {
|
||||
@Override
|
||||
protected Image process_sub(Image img, int w, int h) {
|
||||
return img.getScaledCopy(h / 768f);
|
||||
}
|
||||
},
|
||||
SCORE_5 ("score-5", "png") {
|
||||
@Override
|
||||
protected Image process_sub(Image img, int w, int h) {
|
||||
return img.getScaledCopy(h / 768f);
|
||||
}
|
||||
},
|
||||
SCORE_6 ("score-6", "png") {
|
||||
@Override
|
||||
protected Image process_sub(Image img, int w, int h) {
|
||||
return img.getScaledCopy(h / 768f);
|
||||
}
|
||||
},
|
||||
SCORE_7 ("score-7", "png") {
|
||||
@Override
|
||||
protected Image process_sub(Image img, int w, int h) {
|
||||
return img.getScaledCopy(h / 768f);
|
||||
}
|
||||
},
|
||||
SCORE_8 ("score-8", "png") {
|
||||
@Override
|
||||
protected Image process_sub(Image img, int w, int h) {
|
||||
return img.getScaledCopy(h / 768f);
|
||||
}
|
||||
},
|
||||
SCORE_9 ("score-9", "png") {
|
||||
@Override
|
||||
protected Image process_sub(Image img, int w, int h) {
|
||||
return img.getScaledCopy(h / 768f);
|
||||
}
|
||||
},
|
||||
SCORE_COMMA ("score-comma", "png") {
|
||||
@Override
|
||||
protected Image process_sub(Image img, int w, int h) {
|
||||
return img.getScaledCopy(h / 768f);
|
||||
}
|
||||
},
|
||||
SCORE_DOT ("score-dot", "png") {
|
||||
@Override
|
||||
protected Image process_sub(Image img, int w, int h) {
|
||||
return img.getScaledCopy(h / 768f);
|
||||
}
|
||||
},
|
||||
SCORE_PERCENT ("score-percent", "png") {
|
||||
@Override
|
||||
protected Image process_sub(Image img, int w, int h) {
|
||||
return img.getScaledCopy(h / 768f);
|
||||
}
|
||||
},
|
||||
SCORE_X ("score-x", "png") {
|
||||
@Override
|
||||
protected Image process_sub(Image img, int w, int h) {
|
||||
return img.getScaledCopy(h / 768f);
|
||||
}
|
||||
},
|
||||
DEFAULT_0 ("default-0", "png"),
|
||||
DEFAULT_1 ("default-1", "png"),
|
||||
DEFAULT_2 ("default-2", "png"),
|
||||
DEFAULT_3 ("default-3", "png"),
|
||||
DEFAULT_4 ("default-4", "png"),
|
||||
DEFAULT_5 ("default-5", "png"),
|
||||
DEFAULT_6 ("default-6", "png"),
|
||||
DEFAULT_7 ("default-7", "png"),
|
||||
DEFAULT_8 ("default-8", "png"),
|
||||
DEFAULT_9 ("default-9", "png"),
|
||||
SCORE_0 ("score-0", "png"),
|
||||
SCORE_1 ("score-1", "png"),
|
||||
SCORE_2 ("score-2", "png"),
|
||||
SCORE_3 ("score-3", "png"),
|
||||
SCORE_4 ("score-4", "png"),
|
||||
SCORE_5 ("score-5", "png"),
|
||||
SCORE_6 ("score-6", "png"),
|
||||
SCORE_7 ("score-7", "png"),
|
||||
SCORE_8 ("score-8", "png"),
|
||||
SCORE_9 ("score-9", "png"),
|
||||
SCORE_COMMA ("score-comma", "png"),
|
||||
SCORE_DOT ("score-dot", "png"),
|
||||
SCORE_PERCENT ("score-percent", "png"),
|
||||
SCORE_X ("score-x", "png"),
|
||||
LIGHTING ("lighting", "png"),
|
||||
LIGHTING1 ("lighting1", "png"),
|
||||
|
||||
|
|
|
@ -102,6 +102,11 @@ public class Opsu extends StateBasedGame {
|
|||
} catch (FileNotFoundException e) {
|
||||
Log.error(e);
|
||||
}
|
||||
try {
|
||||
System.setOut(new PrintStream(new FileOutputStream("jnlog.txt", false)));
|
||||
} catch (FileNotFoundException e) {
|
||||
Log.error(e);
|
||||
}
|
||||
Thread.setDefaultUncaughtExceptionHandler(new Thread.UncaughtExceptionHandler() {
|
||||
@Override
|
||||
public void uncaughtException(Thread t, Throwable e) {
|
||||
|
@ -113,12 +118,12 @@ public class Opsu extends StateBasedGame {
|
|||
Options.parseOptions();
|
||||
|
||||
// only allow a single instance
|
||||
try {
|
||||
/*try {
|
||||
SERVER_SOCKET = new ServerSocket(Options.getPort());
|
||||
} catch (IOException e) {
|
||||
ErrorHandler.error(String.format("Another program is already running on port %d.", Options.getPort()), e, false);
|
||||
System.exit(1);
|
||||
}
|
||||
}*/
|
||||
|
||||
// set path for lwjgl natives - NOT NEEDED if using JarSplice
|
||||
File nativeDir = new File("./target/natives/");
|
||||
|
|
|
@ -296,4 +296,9 @@ public class OsuHitObject {
|
|||
* @return true if new combo
|
||||
*/
|
||||
public boolean isNewCombo() { return (type & TYPE_NEWCOMBO) > 0; }
|
||||
|
||||
public int getComboSkip() {
|
||||
return (type>>4);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -139,11 +139,12 @@ public class OsuParser {
|
|||
private static OsuFile parseFile(File file, File dir, ArrayList<OsuFile> osuFiles, boolean parseObjects) {
|
||||
OsuFile osu = new OsuFile(file);
|
||||
|
||||
String version ="";
|
||||
try (BufferedReader in = new BufferedReader(new InputStreamReader(new FileInputStream(file), "UTF-8"))) {
|
||||
|
||||
// initialize timing point list
|
||||
osu.timingPoints = new ArrayList<OsuTimingPoint>();
|
||||
|
||||
version = in.readLine();
|
||||
String line = in.readLine();
|
||||
String tokens[] = null;
|
||||
while (line != null) {
|
||||
|
@ -491,6 +492,8 @@ public class OsuParser {
|
|||
}
|
||||
break;
|
||||
default:
|
||||
//System.out.println("Dead: "+line+" "+file);
|
||||
|
||||
line = in.readLine();
|
||||
break;
|
||||
}
|
||||
|
@ -500,8 +503,10 @@ public class OsuParser {
|
|||
}
|
||||
|
||||
// if no custom colors, use the default color scheme
|
||||
if (osu.combo == null)
|
||||
if (osu.combo == null){
|
||||
System.out.println("Default Combo "+version+" "+file+" "+osu.combo);
|
||||
osu.combo = Utils.DEFAULT_COMBO;
|
||||
}
|
||||
|
||||
// parse hit objects now?
|
||||
if (parseObjects)
|
||||
|
@ -526,6 +531,7 @@ public class OsuParser {
|
|||
+ osu.hitObjectSlider + osu.hitObjectSpinner)];
|
||||
|
||||
try (BufferedReader in = new BufferedReader(new FileReader(osu.getFile()))) {
|
||||
String version = in.readLine();
|
||||
String line = in.readLine();
|
||||
while (line != null) {
|
||||
line = line.trim();
|
||||
|
@ -544,17 +550,24 @@ public class OsuParser {
|
|||
int comboNumber = 1; // combo number
|
||||
|
||||
int objectIndex = 0;
|
||||
boolean first = true;
|
||||
while ((line = in.readLine()) != null && objectIndex < osu.objects.length) {
|
||||
line = line.trim();
|
||||
if (!isValidLine(line))
|
||||
if (!isValidLine(line)){
|
||||
System.out.println("Not Valid :"+line);
|
||||
continue;
|
||||
}
|
||||
if (line.charAt(0) == '[')
|
||||
break;
|
||||
|
||||
// lines must have at minimum 5 parameters
|
||||
int tokenCount = line.length() - line.replace(",", "").length();
|
||||
if (tokenCount < 4)
|
||||
if (tokenCount < 4){
|
||||
System.out.println("(tokenCount < 4 :"+line);
|
||||
|
||||
continue;
|
||||
|
||||
}
|
||||
|
||||
try {
|
||||
// create a new OsuHitObject for each line
|
||||
|
@ -563,9 +576,17 @@ public class OsuParser {
|
|||
// set combo info
|
||||
// - new combo: get next combo index, reset combo number
|
||||
// - else: maintain combo index, increase combo number
|
||||
if ((hitObject.isNewCombo() && !hitObject.isSpinner()) || objectIndex == 0) {
|
||||
comboIndex = (comboIndex + 1) % osu.combo.length;
|
||||
comboNumber = 1;
|
||||
if (((hitObject.isNewCombo()|| first) && !hitObject.isSpinner()) ) {
|
||||
int skip = 1 + hitObject.getComboSkip();
|
||||
|
||||
for(int i=0; i < skip; i++){
|
||||
comboIndex = (comboIndex + 1) % osu.combo.length;
|
||||
comboNumber = 1;
|
||||
}
|
||||
first=false;
|
||||
}
|
||||
if(hitObject.getType()>15){
|
||||
System.out.println(line+" "+hitObject.isCircle()+" "+hitObject.isSlider()+" "+hitObject.isSpinner());
|
||||
}
|
||||
hitObject.setComboIndex(comboIndex);
|
||||
hitObject.setComboNumber(comboNumber++);
|
||||
|
|
|
@ -86,8 +86,8 @@ public class Utils {
|
|||
|
||||
/** The default map colors, used when a map does not provide custom colors. */
|
||||
public static final Color[] DEFAULT_COMBO = {
|
||||
COLOR_GREEN_OBJECT, COLOR_BLUE_OBJECT,
|
||||
COLOR_RED_OBJECT, COLOR_ORANGE_OBJECT
|
||||
COLOR_ORANGE_OBJECT, COLOR_GREEN_OBJECT,
|
||||
COLOR_BLUE_OBJECT, COLOR_RED_OBJECT,
|
||||
};
|
||||
|
||||
/** Game fonts. */
|
||||
|
|
1403
src/org/newdawn/slick/Image.java
Normal file
1403
src/org/newdawn/slick/Image.java
Normal file
File diff suppressed because it is too large
Load Diff
Loading…
Reference in New Issue
Block a user