Attempt to fix duplicating events

This commit is contained in:
Ralty
2025-08-01 18:17:49 +07:00
parent 9a73ebbc31
commit 19e5c2c85e
+19 -10
View File
@@ -633,16 +633,22 @@ class Charter extends UIState {
// create events
rightEventsGroup.autoSort = leftEventsGroup.autoSort = false;
var __last:CharterEvent = null;
var __lastTime:Float = Math.NaN;
for (e in PlayState.SONG.events) {
if (e == null) continue;
if (__last != null && __lastTime == e.time) {
__last.events.push(e);
} else {
__last = new CharterEvent(Conductor.getStepForTime(e.time), [e]);
__lastTime = e.time;
(__last.global ? rightEventsGroup : leftEventsGroup).add(__last);
var lastLeftEvents:CharterEvent = null, lastRightEvents:CharterEvent = null, lastEvents:CharterEvent;
var lastLeftTime = Math.NaN, lastRightTime = Math.NaN, lastTime:Float;
for (e in PlayState.SONG.events) if (e != null) {
if (e.global) {
lastEvents = lastRightEvents;
lastTime = lastRightTime;
}
else {
lastEvents = lastLeftEvents;
lastTime = lastLeftTime;
}
if (lastEvents != null && lastTime == e.time) lastEvents.events.push(e);
else {
lastEvents = new CharterEvent(Conductor.getStepForTime(lastTime = e.time), [e], e.global);
(e.global ? rightEventsGroup : leftEventsGroup).add(lastEvents);
}
}
@@ -2278,6 +2284,9 @@ class Charter extends UIState {
public function buildEvents() {
PlayState.SONG.events = [];
for (ce in leftEventsGroup.members) for (e in ce.events) e.global = false;
for (ce in rightEventsGroup.members) for (e in ce.events) e.global = true;
var events:Array<CharterEvent> = leftEventsGroup.members.concat(rightEventsGroup.members);
events.sort(rightEventsGroup.sortEventsFilter.bind(FlxSort.ASCENDING));
for (e in events) for (event in e.events) {