Implement 'hidden' game mod
This commit is contained in:
parent
351064e0ba
commit
34356d9c08
|
@ -48,7 +48,7 @@ public enum GameMod {
|
|||
"DoubleTime", "Zoooooooooom."),
|
||||
// NIGHTCORE (Category.HARD, 2, GameImage.MOD_NIGHTCORE, "NT", 64, Input.KEY_D, 1.12f,
|
||||
// "Nightcore", "uguuuuuuuu"),
|
||||
HIDDEN (Category.HARD, 3, GameImage.MOD_HIDDEN, "HD", 8, Input.KEY_F, 1.06f, false,
|
||||
HIDDEN (Category.HARD, 3, GameImage.MOD_HIDDEN, "HD", 8, Input.KEY_F, 1.06f,
|
||||
"Hidden", "Play with no approach circles and fading notes for a slight score advantage."),
|
||||
FLASHLIGHT (Category.HARD, 4, GameImage.MOD_FLASHLIGHT, "FL", 1024, Input.KEY_G, 1.12f,
|
||||
"Flashlight", "Restricted view area."),
|
||||
|
|
|
@ -98,10 +98,16 @@ public class Circle implements GameObject {
|
|||
float approachScale = 1 + scale * 3;
|
||||
float alpha = Utils.clamp(1 - fadeinScale, 0, 1);
|
||||
|
||||
if (GameMod.HIDDEN.isActive()) {
|
||||
float fadeOutScale = -(float)(timeDiff-game.getApproachTime())/game.getDecayTime();
|
||||
float fadeOutAlpha = Utils.clamp(1-fadeOutScale, 0, 1);
|
||||
alpha = Math.min(alpha, fadeOutAlpha);
|
||||
}
|
||||
|
||||
float oldAlpha = Utils.COLOR_WHITE_FADE.a;
|
||||
Utils.COLOR_WHITE_FADE.a = color.a = alpha;
|
||||
|
||||
if (timeDiff >= 0)
|
||||
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();
|
||||
|
|
|
@ -210,6 +210,11 @@ public class Slider implements GameObject {
|
|||
tick.drawCentered(c[0], c[1], Utils.COLOR_WHITE_FADE);
|
||||
}
|
||||
}
|
||||
if (GameMod.HIDDEN.isActive()) {
|
||||
float fadeOutScale = -(float)(timeDiff-game.getApproachTime())/game.getDecayTime();
|
||||
float fadeOutAlpha = Utils.clamp(1-fadeOutScale, 0, 1);
|
||||
alpha = Math.min(alpha, fadeOutAlpha);
|
||||
}
|
||||
if (sliderClickedInitial)
|
||||
; // don't draw current combo number if already clicked
|
||||
else
|
||||
|
@ -243,6 +248,7 @@ public class Slider implements GameObject {
|
|||
|
||||
if (timeDiff >= 0) {
|
||||
// approach circle
|
||||
if(!GameMod.HIDDEN.isActive())
|
||||
GameImage.APPROACHCIRCLE.getImage().getScaledCopy(approachScale).drawCentered(x, y, color);
|
||||
} else {
|
||||
// Since update() might not have run before drawing during a replay, the
|
||||
|
@ -250,6 +256,7 @@ public class Slider implements GameObject {
|
|||
if (sliderTime == 0)
|
||||
return;
|
||||
|
||||
if(!GameMod.HIDDEN.isActive()){
|
||||
float[] c = curve.pointAt(getT(trackPosition, false));
|
||||
float[] c2 = curve.pointAt(getT(trackPosition, false) + 0.01f);
|
||||
|
||||
|
@ -262,11 +269,12 @@ public class Slider implements GameObject {
|
|||
sliderBallFrame.drawCentered(c[0], c[1]);
|
||||
|
||||
// follow circle
|
||||
if (followCircleActive) {
|
||||
if (followCircleActive)
|
||||
GameImage.SLIDER_FOLLOWCIRCLE.getImage().drawCentered(c[0], c[1]);
|
||||
|
||||
}
|
||||
// "flashlight" mod: dim the screen
|
||||
if (GameMod.FLASHLIGHT.isActive()) {
|
||||
if (followCircleActive && GameMod.FLASHLIGHT.isActive()) {
|
||||
float oldAlphaBlack = Utils.COLOR_BLACK_ALPHA.a;
|
||||
Utils.COLOR_BLACK_ALPHA.a = 0.75f;
|
||||
g.setColor(Utils.COLOR_BLACK_ALPHA);
|
||||
|
@ -274,7 +282,6 @@ public class Slider implements GameObject {
|
|||
Utils.COLOR_BLACK_ALPHA.a = oldAlphaBlack;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Utils.COLOR_WHITE_FADE.a = oldAlpha;
|
||||
}
|
||||
|
|
|
@ -117,6 +117,9 @@ public class Game extends BasicGameState {
|
|||
/** Hit object approach time, in milliseconds. */
|
||||
private int approachTime;
|
||||
|
||||
/** Decay of elements in hidden mod, in milliseconds. */
|
||||
private int decayTime = 800;
|
||||
|
||||
/** Time offsets for obtaining each hit result (indexed by HIT_* constants). */
|
||||
private int[] hitResultOffset;
|
||||
|
||||
|
@ -1329,6 +1332,7 @@ public class Game extends BasicGameState {
|
|||
gameObjects[stack.pop()].draw(g, trackPosition);
|
||||
|
||||
// draw OsuHitObjectResult objects
|
||||
if(!GameMod.HIDDEN.isActive())
|
||||
data.drawHitResults(trackPosition);
|
||||
}
|
||||
|
||||
|
@ -1515,6 +1519,12 @@ public class Game extends BasicGameState {
|
|||
*/
|
||||
public int getApproachTime() { return approachTime; }
|
||||
|
||||
|
||||
/**
|
||||
* Returns the object decay time in hidden mod, in milliseconds.
|
||||
*/
|
||||
public int getDecayTime() { return decayTime; }
|
||||
|
||||
/**
|
||||
* Returns an array of hit result offset times, in milliseconds (indexed by GameData.HIT_* constants).
|
||||
*/
|
||||
|
|
Loading…
Reference in New Issue
Block a user