Reworked logic to make sure measure numbers don't display if the last measure is really short.

This commit is contained in:
EliteMasterEric
2025-12-29 02:31:50 -05:00
committed by Hundrec
parent dffd6eee25
commit b502d5dcc6
@@ -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);
}
}
}