Reworked logic to make sure measure numbers don't display if the last measure is really short.
This commit is contained in:
@@ -176,17 +176,23 @@ class ChartEditorMeasureTicks extends FlxTypedSpriteGroup<FlxSprite>
|
||||
|
||||
for (i in 0...ARBITRARY_LIMIT)
|
||||
{
|
||||
// NOTE: i = 0 when rendering Measure 1 here.
|
||||
var targetMeasure:Int = currentMeasure + i - 1;
|
||||
if (targetMeasure < 0) continue;
|
||||
|
||||
var measureTimeInMs:Float = Conductor.instance.getMeasureTimeInMs(targetMeasure);
|
||||
|
||||
// If we've gone past the end of the song, we're done.
|
||||
if (measureTimeInMs > chartEditorState.songLengthInMs) break;
|
||||
|
||||
var measureTimeInSteps:Float = Conductor.instance.getTimeInSteps(measureTimeInMs);
|
||||
var measureTimeInPixels:Float = measureTimeInSteps * ChartEditorState.GRID_SIZE;
|
||||
|
||||
// If we've gone past the end of the song, we're done.
|
||||
if (measureTimeInPixels > chartEditorState.songLengthInPixels) break;
|
||||
|
||||
// Handle the case where the measure at the end of the song is too short to display a measure number.
|
||||
final MIN_MEASURE_HEIGHT:Float = 24; // The minimum height of a measure, in pixels, in order for a measure number to display.
|
||||
var shouldDisplayMeasureNumber:Bool = measureTimeInPixels + MIN_MEASURE_HEIGHT <= chartEditorState.songLengthInPixels;
|
||||
var shouldDisplayMeasureDivider:Bool = true;
|
||||
|
||||
var relativeMeasureTimeInPixels:Float = measureTimeInPixels + this.y;
|
||||
|
||||
final SCREEN_PADDING:Float = ChartEditorState.GRID_SIZE / 2;
|
||||
@@ -197,22 +203,29 @@ class ChartEditorMeasureTicks extends FlxTypedSpriteGroup<FlxSprite>
|
||||
break;
|
||||
}
|
||||
|
||||
// Else, display a number.
|
||||
// Else, display a number and divider.
|
||||
|
||||
// Reuse an existing number. If we need a new number, create one with makeMeasureNumber().
|
||||
final REVIVE:Bool = true;
|
||||
var measureNumber = measureNumbers.recycle(makeMeasureNumber, false, REVIVE);
|
||||
if (shouldDisplayMeasureNumber)
|
||||
{
|
||||
// Reuse an existing number. If we need a new number, create one with makeMeasureNumber().
|
||||
final REVIVE:Bool = true;
|
||||
var measureNumber = measureNumbers.recycle(makeMeasureNumber, false, REVIVE);
|
||||
|
||||
// Measures are base ZERO gah!
|
||||
final OFFSET = 2;
|
||||
measureNumber.text = '${targetMeasure + 1}';
|
||||
measureNumber.y = relativeMeasureTimeInPixels + OFFSET;
|
||||
measureNumber.x = this.x;
|
||||
// Measures are base ZERO gah!
|
||||
final OFFSET = 2;
|
||||
measureNumber.text = '${targetMeasure + 1}';
|
||||
measureNumber.y = relativeMeasureTimeInPixels + OFFSET;
|
||||
measureNumber.x = this.x;
|
||||
}
|
||||
|
||||
// Place a measure divider too.
|
||||
var measureDivider = measureDividers.recycle(makeMeasureDivider, false, REVIVE);
|
||||
measureDivider.y = relativeMeasureTimeInPixels - (ChartEditorThemeHandler.MEASURE_TICKS_MEASURE_WIDTH / 2);
|
||||
measureDivider.x = this.x + (measureTicksSprite.width);
|
||||
if (shouldDisplayMeasureDivider)
|
||||
{
|
||||
// Reuse an existing divider. If we need a new divider, create one with makeMeasureDivider().
|
||||
final REVIVE:Bool = true;
|
||||
var measureDivider = measureDividers.recycle(makeMeasureDivider, false, REVIVE);
|
||||
measureDivider.y = relativeMeasureTimeInPixels - (ChartEditorThemeHandler.MEASURE_TICKS_MEASURE_WIDTH / 2);
|
||||
measureDivider.x = this.x + (measureTicksSprite.width);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user