always fadeout slider curve
This commit is contained in:
parent
cc41a54408
commit
62a7ee0f21
|
@ -232,7 +232,7 @@ public class GameData {
|
||||||
private LinkedBlockingDeque<HitErrorInfo> hitErrorList;
|
private LinkedBlockingDeque<HitErrorInfo> hitErrorList;
|
||||||
|
|
||||||
/** Hit object types, used for drawing results. */
|
/** Hit object types, used for drawing results. */
|
||||||
public enum HitObjectType { CIRCLE, SLIDERTICK, SLIDER_FIRST, SLIDER_LAST, SPINNER }
|
public enum HitObjectType { CIRCLE, SLIDERTICK, SLIDER_FIRST, SLIDER_CURVE, SLIDER_LAST, SPINNER }
|
||||||
|
|
||||||
/** Hit result helper class. */
|
/** Hit result helper class. */
|
||||||
private class HitObjectResult {
|
private class HitObjectResult {
|
||||||
|
@ -892,7 +892,25 @@ public class GameData {
|
||||||
lighting.drawCentered(hitResult.x, hitResult.y, hitResult.color);
|
lighting.drawCentered(hitResult.x, hitResult.y, hitResult.color);
|
||||||
}
|
}
|
||||||
|
|
||||||
// hit animation
|
// slider done animation
|
||||||
|
|
||||||
|
// hit animations
|
||||||
|
if (hitResult.hitResultType == HitObjectType.SLIDER_CURVE && hitResult.curve != null) {
|
||||||
|
float progress = AnimationEquation.OUT_CUBIC.calc(
|
||||||
|
(float) Utils.clamp(trackPosition - hitResult.time, 0, HITCIRCLE_FADE_TIME) / HITCIRCLE_FADE_TIME);
|
||||||
|
float alpha = 1f - progress;
|
||||||
|
|
||||||
|
// slider curve
|
||||||
|
float oldWhiteAlpha = Colors.WHITE_FADE.a;
|
||||||
|
float oldColorAlpha = hitResult.color.a;
|
||||||
|
Colors.WHITE_FADE.a = alpha;
|
||||||
|
hitResult.color.a = alpha;
|
||||||
|
hitResult.curve.draw(hitResult.color);
|
||||||
|
Colors.WHITE_FADE.a = oldWhiteAlpha;
|
||||||
|
hitResult.color.a = oldColorAlpha;
|
||||||
|
}
|
||||||
|
|
||||||
|
// circles
|
||||||
if (hitResult.result != HIT_MISS && (
|
if (hitResult.result != HIT_MISS && (
|
||||||
hitResult.hitResultType == HitObjectType.CIRCLE ||
|
hitResult.hitResultType == HitObjectType.CIRCLE ||
|
||||||
hitResult.hitResultType == HitObjectType.SLIDER_FIRST ||
|
hitResult.hitResultType == HitObjectType.SLIDER_FIRST ||
|
||||||
|
@ -915,27 +933,13 @@ public class GameData {
|
||||||
scaledRepeat.rotate(ang);
|
scaledRepeat.rotate(ang);
|
||||||
scaledRepeat.drawCentered(hitResult.x, hitResult.y, hitResult.color);
|
scaledRepeat.drawCentered(hitResult.x, hitResult.y, hitResult.color);
|
||||||
}
|
}
|
||||||
// "hidden" mod: circle and slider animations not drawn
|
// hit circles
|
||||||
else if (!GameMod.HIDDEN.isActive()) {
|
Image scaledHitCircle = GameImage.HITCIRCLE.getImage().getScaledCopy(scale);
|
||||||
// slider curve
|
Image scaledHitCircleOverlay = GameImage.HITCIRCLE_OVERLAY.getImage().getScaledCopy(scale);
|
||||||
if (hitResult.curve != null) {
|
scaledHitCircle.setAlpha(alpha);
|
||||||
float oldWhiteAlpha = Colors.WHITE_FADE.a;
|
scaledHitCircleOverlay.setAlpha(alpha);
|
||||||
float oldColorAlpha = hitResult.color.a;
|
scaledHitCircle.drawCentered(hitResult.x, hitResult.y, hitResult.color);
|
||||||
Colors.WHITE_FADE.a = alpha;
|
scaledHitCircleOverlay.drawCentered(hitResult.x, hitResult.y);
|
||||||
hitResult.color.a = alpha;
|
|
||||||
hitResult.curve.draw(hitResult.color);
|
|
||||||
Colors.WHITE_FADE.a = oldWhiteAlpha;
|
|
||||||
hitResult.color.a = oldColorAlpha;
|
|
||||||
}
|
|
||||||
|
|
||||||
// hit circles
|
|
||||||
Image scaledHitCircle = GameImage.HITCIRCLE.getImage().getScaledCopy(scale);
|
|
||||||
Image scaledHitCircleOverlay = GameImage.HITCIRCLE_OVERLAY.getImage().getScaledCopy(scale);
|
|
||||||
scaledHitCircle.setAlpha(alpha);
|
|
||||||
scaledHitCircleOverlay.setAlpha(alpha);
|
|
||||||
scaledHitCircle.drawCentered(hitResult.x, hitResult.y, hitResult.color);
|
|
||||||
scaledHitCircleOverlay.drawCentered(hitResult.x, hitResult.y);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// hit result
|
// hit result
|
||||||
|
@ -1195,6 +1199,10 @@ public class GameData {
|
||||||
hitResultList.add(new HitObjectResult(time, HIT_SLIDER_REPEAT, x, y, color, type, curve, true, true));
|
hitResultList.add(new HitObjectResult(time, HIT_SLIDER_REPEAT, x, y, color, type, curve, true, true));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void sendSliderCurveResult(int time, Color color, Curve curve) {
|
||||||
|
hitResultList.add(new HitObjectResult(time, HIT_SLIDER_REPEAT, 0f, 0f, color, HitObjectType.SLIDER_CURVE, curve, true, true));
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Handles a slider tick result.
|
* Handles a slider tick result.
|
||||||
* @param time the tick start time
|
* @param time the tick start time
|
||||||
|
@ -1396,14 +1404,6 @@ public class GameData {
|
||||||
|
|
||||||
boolean hideResult = (hitResult == HIT_300 || hitResult == HIT_300G || hitResult == HIT_300K) && !Options.isPerfectHitBurstEnabled();
|
boolean hideResult = (hitResult == HIT_300 || hitResult == HIT_300G || hitResult == HIT_300K) && !Options.isPerfectHitBurstEnabled();
|
||||||
hitResultList.add(new HitObjectResult(time, hitResult, x, y, color, hitResultType, curve, expand, hideResult));
|
hitResultList.add(new HitObjectResult(time, hitResult, x, y, color, hitResultType, curve, expand, hideResult));
|
||||||
|
|
||||||
// sliders: add the other curve endpoint for the hit animation
|
|
||||||
if (curve != null) {
|
|
||||||
boolean isFirst = (hitResultType == HitObjectType.SLIDER_FIRST);
|
|
||||||
Vec2f p = curve.pointAt((isFirst) ? 1f : 0f);
|
|
||||||
HitObjectType type = (isFirst) ? HitObjectType.SLIDER_LAST : HitObjectType.SLIDER_FIRST;
|
|
||||||
hitResultList.add(new HitObjectResult(time, hitResult, p.x, p.y, color, type, null, expand, hideResult));
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -441,7 +441,7 @@ public class Slider implements GameObject {
|
||||||
}
|
}
|
||||||
data.hitResult(hitObject.getTime() + (int) sliderTimeTotal, result,
|
data.hitResult(hitObject.getTime() + (int) sliderTimeTotal, result,
|
||||||
cx, cy, color, comboEnd, hitObject, type, sliderHeldToEnd,
|
cx, cy, color, comboEnd, hitObject, type, sliderHeldToEnd,
|
||||||
currentRepeats + 1, curve, sliderHeldToEnd);
|
currentRepeats + 1, null, sliderHeldToEnd);
|
||||||
|
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
@ -530,6 +530,9 @@ public class Slider implements GameObject {
|
||||||
|
|
||||||
// calculate and send slider result
|
// calculate and send slider result
|
||||||
hitResult();
|
hitResult();
|
||||||
|
|
||||||
|
// send 'curve fade out' hit result
|
||||||
|
data.sendSliderCurveResult(getEndTime(), color, curve);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user