sonolus-next-rush-engine 1.1.1 → 1.1.3

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.
Binary file
Binary file
@@ -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
- const previousConnectors = ext.connectors.filter((c) => c.e.archetype === archetype && getField(c.e, 'tail') === currentHeadRef);
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
- const previousStartBeat = getNum(resolveOriginal(ext, previousStartRef) ?? { archetype: '', data: [] }, '#BEAT');
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
  }
@@ -596,6 +595,11 @@ export const extendedToLevelData = (data, offset = 0) => {
596
595
  function getRefBeat(ref) {
597
596
  return getNum(resolveOriginal(ext, ref) ?? { archetype: '', data: [] }, '#BEAT');
598
597
  }
598
+ function getConnectorActiveStartRef(archetype, startRef, headRef, endRef) {
599
+ if (endRef !== undefined)
600
+ return startRef;
601
+ return getUltimateStartRef(archetype, startRef, headRef);
602
+ }
599
603
  const activeTailRefsByStart = new Map();
600
604
  function getActiveTailRef(activeStartRef) {
601
605
  const key = refKey(activeStartRef);
@@ -608,10 +612,10 @@ export const extendedToLevelData = (data, offset = 0) => {
608
612
  const headRef = getField(e, 'head');
609
613
  if (isIgnoredSlideTickRef(headRef))
610
614
  continue;
611
- const connectorActiveStartRef = getUltimateStartRef(e.archetype, startRef, headRef);
615
+ const endRef = getField(e, 'end');
616
+ const connectorActiveStartRef = getConnectorActiveStartRef(e.archetype, startRef, headRef, endRef);
612
617
  if (refKey(connectorActiveStartRef) !== key)
613
618
  continue;
614
- const endRef = getField(e, 'end');
615
619
  const { tailRef } = resolveConnectorTailRef(e.archetype, startRef, getField(e, 'tail'));
616
620
  const candidateTailRef = endRef ?? getUltimateTailRef(e.archetype, activeStartRef, tailRef);
617
621
  const candidateTailBeat = getRefBeat(candidateTailRef);
@@ -635,14 +639,15 @@ export const extendedToLevelData = (data, offset = 0) => {
635
639
  const rawHeadOriginal = resolveOriginal(ext, headRef);
636
640
  const tailOriginal = resolveOriginal(ext, tailRef);
637
641
  const rawHead = getNote(headRef);
638
- const activeStartRef = getUltimateStartRef(e.archetype, startRef, headRef);
642
+ const endRef = getField(e, 'end');
643
+ const activeStartRef = getConnectorActiveStartRef(e.archetype, startRef, headRef, endRef);
639
644
  const activeHead = getNote(activeStartRef);
640
645
  const usesStartAsHead = shouldUseStartAsHead(startRef, headRef);
641
646
  const head = usesStartAsHead ? activeHead : rawHead;
642
647
  const headOriginal = resolveOriginal(ext, usesStartAsHead ? startRef : headRef);
643
- let activeTail = getNote(getActiveTailRef(activeStartRef));
648
+ let activeTail = getNote(endRef ?? getActiveTailRef(activeStartRef));
644
649
  if (!activeTail) {
645
- activeTail = getNote(getField(e, 'end'));
650
+ activeTail = getNote(getActiveTailRef(activeStartRef));
646
651
  }
647
652
  if (!activeTail) {
648
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.1";
10
+ export declare const version = "1.1.3";
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.1';
68
+ export const version = '1.1.3';
69
69
  export const databaseEngineItem = {
70
70
  name: 'next-rush',
71
71
  version: 13,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "sonolus-next-rush-engine",
3
- "version": "1.1.1",
3
+ "version": "1.1.3",
4
4
  "description": "Perspective-lane rhythm game for Sonolus",
5
5
  "author": "Hyeon2",
6
6
  "repository": {