sonolus-next-rush-engine 1.0.7 → 1.0.9
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/EnginePlayData +0 -0
- package/dist/EngineWatchData +0 -0
- package/dist/extended/convert.js +9 -54
- package/dist/index.d.ts +1 -1
- package/dist/index.js +1 -1
- package/package.json +1 -1
package/dist/EnginePlayData
CHANGED
|
Binary file
|
package/dist/EngineWatchData
CHANGED
|
Binary file
|
package/dist/extended/convert.js
CHANGED
|
@@ -87,8 +87,6 @@ const guideKindMapping = {
|
|
|
87
87
|
6: ConnectorKind.GUIDE_CYAN,
|
|
88
88
|
7: ConnectorKind.GUIDE_BLACK,
|
|
89
89
|
};
|
|
90
|
-
const LEGACY_HIDDEN_POP_NOTE_SPEED = 10;
|
|
91
|
-
const LEGACY_MIN_HIDDEN_POP_WINDOW = 1 / 30;
|
|
92
90
|
class ExtData {
|
|
93
91
|
constructor(entities) {
|
|
94
92
|
this.byArch = new Map();
|
|
@@ -157,9 +155,6 @@ function unlerp(a, b, x) {
|
|
|
157
155
|
function clamp01(x) {
|
|
158
156
|
return Math.min(1, Math.max(0, x));
|
|
159
157
|
}
|
|
160
|
-
function legacyNoteDuration(noteSpeed) {
|
|
161
|
-
return lerp(0.35, 4, unlerp(12, 1, noteSpeed) ** 1.31);
|
|
162
|
-
}
|
|
163
158
|
function applyEase(type, x) {
|
|
164
159
|
const t = clamp01(x);
|
|
165
160
|
switch (type) {
|
|
@@ -339,28 +334,6 @@ export const extendedToLevelData = (data, offset = 0) => {
|
|
|
339
334
|
}
|
|
340
335
|
return scaledTime;
|
|
341
336
|
}
|
|
342
|
-
function createHideUntilTimescaleGroup(showBeat) {
|
|
343
|
-
const group = new EntityBuilder('#TIMESCALE_GROUP');
|
|
344
|
-
const hide = new EntityBuilder('#TIMESCALE_CHANGE');
|
|
345
|
-
const show = new EntityBuilder('#TIMESCALE_CHANGE');
|
|
346
|
-
const hideBeat = Math.min(0, showBeat - 1e-6);
|
|
347
|
-
hide.set('#BEAT', hideBeat);
|
|
348
|
-
hide.set('#TIMESCALE', 1);
|
|
349
|
-
hide.set('#TIMESCALE_SKIP', 0);
|
|
350
|
-
hide.set('#TIMESCALE_GROUP', group);
|
|
351
|
-
hide.set('#TIMESCALE_EASE', 0);
|
|
352
|
-
hide.set('hideNotes', 1);
|
|
353
|
-
hide.set('next', show);
|
|
354
|
-
show.set('#BEAT', showBeat);
|
|
355
|
-
show.set('#TIMESCALE', 1);
|
|
356
|
-
show.set('#TIMESCALE_SKIP', 0);
|
|
357
|
-
show.set('#TIMESCALE_GROUP', group);
|
|
358
|
-
show.set('#TIMESCALE_EASE', 0);
|
|
359
|
-
show.set('hideNotes', 0);
|
|
360
|
-
group.set('first', hide);
|
|
361
|
-
finalEntities.push(group, hide, show);
|
|
362
|
-
return group;
|
|
363
|
-
}
|
|
364
337
|
const notesByIndex = new Map();
|
|
365
338
|
const notesByName = new Map();
|
|
366
339
|
const connectorsByIndex = new Map();
|
|
@@ -472,12 +445,6 @@ export const extendedToLevelData = (data, offset = 0) => {
|
|
|
472
445
|
return false;
|
|
473
446
|
return getNum(tailOriginal, '#BEAT') < getNum(headOriginal, '#BEAT') - 1e-6;
|
|
474
447
|
}
|
|
475
|
-
function getLegacyHiddenPopWindow(headOriginal, tailOriginal) {
|
|
476
|
-
const headTime = beatToTime(getNum(headOriginal, '#BEAT'));
|
|
477
|
-
const tailTime = beatToTime(getNum(tailOriginal, '#BEAT'));
|
|
478
|
-
const noteDuration = legacyNoteDuration(LEGACY_HIDDEN_POP_NOTE_SPEED);
|
|
479
|
-
return Math.max(LEGACY_MIN_HIDDEN_POP_WINDOW, noteDuration - (headTime - tailTime));
|
|
480
|
-
}
|
|
481
448
|
for (const { idx, e } of ext.connectors) {
|
|
482
449
|
const startRef = getField(e, 'start');
|
|
483
450
|
const headRef = getField(e, 'head');
|
|
@@ -518,27 +485,21 @@ export const extendedToLevelData = (data, offset = 0) => {
|
|
|
518
485
|
const ease = easeTypeMapping[getNum(e, 'ease')] ?? EaseType.LINEAR;
|
|
519
486
|
const tsg = headOriginal ? getTSG(getField(headOriginal, 'timeScaleGroup')) : undefined;
|
|
520
487
|
const reverseHiddenPopConnector = isReverseHiddenPopConnector(rawHeadOriginal, tailOriginal);
|
|
521
|
-
const hasActiveSlide = !reverseHiddenPopConnector;
|
|
522
488
|
const splitAnchors = headOriginal && tailOriginal && !reverseHiddenPopConnector
|
|
523
489
|
? getConnectorSplitAnchors(headOriginal, tailOriginal, tsg, kind, ease)
|
|
524
490
|
: [];
|
|
525
491
|
const segmentEase = splitAnchors.length > 0 ? EaseType.LINEAR : ease;
|
|
526
492
|
const segmentNotes = [head, ...splitAnchors, tail];
|
|
527
493
|
if (reverseHiddenPopConnector && rawHeadOriginal && tailOriginal) {
|
|
528
|
-
const
|
|
529
|
-
const showTime = beatToTime(getNum(tailOriginal, '#BEAT')) - popWindow;
|
|
530
|
-
const showBeat = timeToBeat(showTime);
|
|
531
|
-
const gateTsg = createHideUntilTimescaleGroup(showBeat);
|
|
532
|
-
const segmentHead = createConnectorAnchor(getNum(rawHeadOriginal, '#BEAT'), getNum(rawHeadOriginal, 'lane'), getNum(rawHeadOriginal, 'size'), gateTsg, kind);
|
|
494
|
+
const segmentHead = createConnectorAnchor(getNum(rawHeadOriginal, '#BEAT'), getNum(rawHeadOriginal, 'lane'), getNum(rawHeadOriginal, 'size'), getTSG(getField(rawHeadOriginal, 'timeScaleGroup')) ?? tsg, kind);
|
|
533
495
|
const connector = new EntityBuilder('Connector');
|
|
534
496
|
connector.set('head', head);
|
|
535
497
|
connector.set('tail', tail);
|
|
536
498
|
connector.set('segmentHead', segmentHead);
|
|
537
499
|
connector.set('segmentTail', tail);
|
|
538
|
-
|
|
539
|
-
|
|
540
|
-
|
|
541
|
-
}
|
|
500
|
+
connector.set('legacyHiddenPop', 1);
|
|
501
|
+
connector.set('activeHead', activeHead);
|
|
502
|
+
connector.set('activeTail', activeTail);
|
|
542
503
|
finalEntities.push(connector);
|
|
543
504
|
}
|
|
544
505
|
else {
|
|
@@ -550,20 +511,16 @@ export const extendedToLevelData = (data, offset = 0) => {
|
|
|
550
511
|
connector.set('tail', segmentTail);
|
|
551
512
|
connector.set('segmentHead', segmentHead);
|
|
552
513
|
connector.set('segmentTail', segmentTail);
|
|
553
|
-
|
|
554
|
-
|
|
555
|
-
connector.set('activeTail', activeTail);
|
|
556
|
-
}
|
|
514
|
+
connector.set('activeHead', activeHead);
|
|
515
|
+
connector.set('activeTail', activeTail);
|
|
557
516
|
finalEntities.push(connector);
|
|
558
517
|
}
|
|
559
518
|
}
|
|
560
519
|
const connectorLink = new EntityBuilder('Connector');
|
|
561
520
|
connectorLink.set('head', head);
|
|
562
521
|
connectorLink.set('tail', tail);
|
|
563
|
-
|
|
564
|
-
|
|
565
|
-
connectorLink.set('activeTail', activeTail);
|
|
566
|
-
}
|
|
522
|
+
connectorLink.set('activeHead', activeHead);
|
|
523
|
+
connectorLink.set('activeTail', activeTail);
|
|
567
524
|
for (const segmentHead of segmentNotes.slice(0, -1)) {
|
|
568
525
|
segmentHead.set('connectorEase', segmentEase);
|
|
569
526
|
segmentHead.set('segmentKind', kind);
|
|
@@ -571,9 +528,7 @@ export const extendedToLevelData = (data, offset = 0) => {
|
|
|
571
528
|
}
|
|
572
529
|
tail.set('segmentKind', kind);
|
|
573
530
|
tail.set('segmentAlpha', 1);
|
|
574
|
-
|
|
575
|
-
activeHead.set('segmentKind', kind);
|
|
576
|
-
}
|
|
531
|
+
activeHead.set('segmentKind', kind);
|
|
577
532
|
connectorsByIndex.set(idx, connectorLink);
|
|
578
533
|
if (e.name)
|
|
579
534
|
connectorsByName.set(e.name, connectorLink);
|
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.0.
|
|
10
|
+
export declare const version = "1.0.9";
|
|
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.0.
|
|
68
|
+
export const version = '1.0.9';
|
|
69
69
|
export const databaseEngineItem = {
|
|
70
70
|
name: 'next-rush',
|
|
71
71
|
version: 13,
|