sonolus-next-rush-engine 1.1.0 → 1.1.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/extended/convert.js +50 -11
- package/dist/index.d.ts +1 -1
- package/dist/index.js +1 -1
- package/package.json +1 -1
package/dist/extended/convert.js
CHANGED
|
@@ -530,7 +530,6 @@ export const extendedToLevelData = (data, offset = 0) => {
|
|
|
530
530
|
if (!isSlideTickRef(headRef))
|
|
531
531
|
return startRef;
|
|
532
532
|
let ultimateStartRef = startRef;
|
|
533
|
-
let ultimateStartBeat = getNum(resolveOriginal(ext, startRef) ?? { archetype: '', data: [] }, '#BEAT');
|
|
534
533
|
const visited = new Set();
|
|
535
534
|
function visit(currentHeadRef) {
|
|
536
535
|
const key = `${archetype}|${String(currentHeadRef)}`;
|
|
@@ -539,14 +538,14 @@ export const extendedToLevelData = (data, offset = 0) => {
|
|
|
539
538
|
visited.add(key);
|
|
540
539
|
if (!isSlideTickRef(currentHeadRef))
|
|
541
540
|
return;
|
|
542
|
-
|
|
541
|
+
let previousConnectors = ext.connectors.filter((c) => c.e.archetype === archetype && getField(c.e, 'tail') === currentHeadRef);
|
|
542
|
+
if (previousConnectors.length === 0) {
|
|
543
|
+
previousConnectors = ext.connectors.filter((c) => c.e.archetype in activeConnectorKindMapping &&
|
|
544
|
+
getField(c.e, 'tail') === currentHeadRef);
|
|
545
|
+
}
|
|
543
546
|
for (const previousConnector of previousConnectors) {
|
|
544
547
|
const previousStartRef = getField(previousConnector.e, 'start');
|
|
545
|
-
|
|
546
|
-
if (previousStartBeat <= ultimateStartBeat) {
|
|
547
|
-
ultimateStartBeat = previousStartBeat;
|
|
548
|
-
ultimateStartRef = previousStartRef;
|
|
549
|
-
}
|
|
548
|
+
ultimateStartRef = previousStartRef;
|
|
550
549
|
visit(getField(previousConnector.e, 'head'));
|
|
551
550
|
}
|
|
552
551
|
}
|
|
@@ -588,6 +587,46 @@ export const extendedToLevelData = (data, offset = 0) => {
|
|
|
588
587
|
}
|
|
589
588
|
return { tailRef: resolvedTailRef, skippedNoteRefs, skippedConnectors };
|
|
590
589
|
}
|
|
590
|
+
function refKey(ref) {
|
|
591
|
+
const original = resolveOriginal(ext, ref);
|
|
592
|
+
const index = original ? ext.entities.indexOf(original) : -1;
|
|
593
|
+
return index >= 0 ? `index:${index}` : `${typeof ref}:${String(ref)}`;
|
|
594
|
+
}
|
|
595
|
+
function getRefBeat(ref) {
|
|
596
|
+
return getNum(resolveOriginal(ext, ref) ?? { archetype: '', data: [] }, '#BEAT');
|
|
597
|
+
}
|
|
598
|
+
function getConnectorActiveStartRef(archetype, startRef, headRef, endRef) {
|
|
599
|
+
if (endRef !== undefined)
|
|
600
|
+
return startRef;
|
|
601
|
+
return getUltimateStartRef(archetype, startRef, headRef);
|
|
602
|
+
}
|
|
603
|
+
const activeTailRefsByStart = new Map();
|
|
604
|
+
function getActiveTailRef(activeStartRef) {
|
|
605
|
+
const key = refKey(activeStartRef);
|
|
606
|
+
if (activeTailRefsByStart.has(key))
|
|
607
|
+
return activeTailRefsByStart.get(key);
|
|
608
|
+
let activeTailRef;
|
|
609
|
+
let activeTailBeat = Number.NEGATIVE_INFINITY;
|
|
610
|
+
for (const { e } of ext.connectors) {
|
|
611
|
+
const startRef = getField(e, 'start');
|
|
612
|
+
const headRef = getField(e, 'head');
|
|
613
|
+
if (isIgnoredSlideTickRef(headRef))
|
|
614
|
+
continue;
|
|
615
|
+
const endRef = getField(e, 'end');
|
|
616
|
+
const connectorActiveStartRef = getConnectorActiveStartRef(e.archetype, startRef, headRef, endRef);
|
|
617
|
+
if (refKey(connectorActiveStartRef) !== key)
|
|
618
|
+
continue;
|
|
619
|
+
const { tailRef } = resolveConnectorTailRef(e.archetype, startRef, getField(e, 'tail'));
|
|
620
|
+
const candidateTailRef = endRef ?? getUltimateTailRef(e.archetype, activeStartRef, tailRef);
|
|
621
|
+
const candidateTailBeat = getRefBeat(candidateTailRef);
|
|
622
|
+
if (candidateTailBeat >= activeTailBeat) {
|
|
623
|
+
activeTailBeat = candidateTailBeat;
|
|
624
|
+
activeTailRef = candidateTailRef;
|
|
625
|
+
}
|
|
626
|
+
}
|
|
627
|
+
activeTailRefsByStart.set(key, activeTailRef);
|
|
628
|
+
return activeTailRef;
|
|
629
|
+
}
|
|
591
630
|
for (const { idx, e } of ext.connectors) {
|
|
592
631
|
const startRef = getField(e, 'start');
|
|
593
632
|
const headRef = getField(e, 'head');
|
|
@@ -600,15 +639,15 @@ export const extendedToLevelData = (data, offset = 0) => {
|
|
|
600
639
|
const rawHeadOriginal = resolveOriginal(ext, headRef);
|
|
601
640
|
const tailOriginal = resolveOriginal(ext, tailRef);
|
|
602
641
|
const rawHead = getNote(headRef);
|
|
603
|
-
const
|
|
642
|
+
const endRef = getField(e, 'end');
|
|
643
|
+
const activeStartRef = getConnectorActiveStartRef(e.archetype, startRef, headRef, endRef);
|
|
604
644
|
const activeHead = getNote(activeStartRef);
|
|
605
645
|
const usesStartAsHead = shouldUseStartAsHead(startRef, headRef);
|
|
606
646
|
const head = usesStartAsHead ? activeHead : rawHead;
|
|
607
647
|
const headOriginal = resolveOriginal(ext, usesStartAsHead ? startRef : headRef);
|
|
608
|
-
|
|
609
|
-
let activeTail = getNote(endRef);
|
|
648
|
+
let activeTail = getNote(endRef ?? getActiveTailRef(activeStartRef));
|
|
610
649
|
if (!activeTail) {
|
|
611
|
-
activeTail = getNote(
|
|
650
|
+
activeTail = getNote(getActiveTailRef(activeStartRef));
|
|
612
651
|
}
|
|
613
652
|
if (!activeTail) {
|
|
614
653
|
activeTail = tail;
|
package/dist/index.d.ts
CHANGED
|
@@ -7,7 +7,7 @@ import { USC } from './usc/index.js';
|
|
|
7
7
|
export * from './usc/index.js';
|
|
8
8
|
export { type ExtendedEntityData, type ExtendedEntityDataField, extendedToLevelData, mmwsToUSC, susToUSC, ucmmwsToLevelData, uscToLevelData, };
|
|
9
9
|
export declare const convertToLevelData: (input: string | Uint8Array | USC | LevelData, offset?: number) => LevelData;
|
|
10
|
-
export declare const version = "1.1.
|
|
10
|
+
export declare const version = "1.1.2";
|
|
11
11
|
export declare const databaseEngineItem: {
|
|
12
12
|
readonly name: "next-rush";
|
|
13
13
|
readonly version: 13;
|
package/dist/index.js
CHANGED
|
@@ -65,7 +65,7 @@ export const convertToLevelData = (input, offset = 0) => {
|
|
|
65
65
|
}
|
|
66
66
|
return uscToLevelData(usc, offset, true, true);
|
|
67
67
|
};
|
|
68
|
-
export const version = '1.1.
|
|
68
|
+
export const version = '1.1.2';
|
|
69
69
|
export const databaseEngineItem = {
|
|
70
70
|
name: 'next-rush',
|
|
71
71
|
version: 13,
|