sonolus-pjsekai-js 1.2.0 → 1.2.1
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/EngineConfiguration +0 -0
- package/dist/EnginePlayData +0 -0
- package/dist/EngineWatchData +0 -0
- package/dist/index.cjs +1 -1
- package/dist/index.d.cts +1 -1
- package/dist/usc/revert.cjs +28 -26
- package/dist/usc/revert.d.cts +1 -1
- package/package.json +1 -1
package/dist/EngineConfiguration
CHANGED
Binary file
|
package/dist/EnginePlayData
CHANGED
Binary file
|
package/dist/EngineWatchData
CHANGED
Binary file
|
package/dist/index.cjs
CHANGED
@@ -22,7 +22,7 @@ Object.defineProperty(exports, "uscToLevelData", { enumerable: true, get: functi
|
|
22
22
|
__exportStar(require("./usc/index.cjs"), exports);
|
23
23
|
var revert_cjs_1 = require("./usc/revert.cjs");
|
24
24
|
Object.defineProperty(exports, "uscToUSC", { enumerable: true, get: function () { return revert_cjs_1.uscToUSC; } });
|
25
|
-
exports.version = '1.2.
|
25
|
+
exports.version = '1.2.1';
|
26
26
|
exports.databaseEngineItem = {
|
27
27
|
name: 'prosekaR',
|
28
28
|
version: 13,
|
package/dist/index.d.cts
CHANGED
@@ -2,7 +2,7 @@ export { susToUSC } from './sus/convert.cjs';
|
|
2
2
|
export { uscToLevelData } from './usc/convert.cjs';
|
3
3
|
export * from './usc/index.cjs';
|
4
4
|
export { uscToUSC } from './usc/revert.cjs';
|
5
|
-
export declare const version = "1.2.
|
5
|
+
export declare const version = "1.2.1";
|
6
6
|
export declare const databaseEngineItem: {
|
7
7
|
readonly name: "prosekaR";
|
8
8
|
readonly version: 13;
|
package/dist/usc/revert.cjs
CHANGED
@@ -1,12 +1,6 @@
|
|
1
1
|
"use strict";
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
3
3
|
exports.uscToUSC = void 0;
|
4
|
-
/**
|
5
|
-
* B 타입의 USC Easing 값을 A 타입으로 변환합니다.
|
6
|
-
* 'inout'은 'in'으로, 'outin'은 'out'으로 매핑됩니다.
|
7
|
-
* @param ease B 타입의 Easing 값
|
8
|
-
* @returns A 타입의 Easing 값
|
9
|
-
*/
|
10
4
|
/**
|
11
5
|
* B 타입의 USC 슬라이드 연결 노드를 A 타입으로 변환합니다.
|
12
6
|
* @param connection B 타입의 연결 노트
|
@@ -70,8 +64,6 @@ const convertConnection = (connection) => {
|
|
70
64
|
beat: connection.beat,
|
71
65
|
lane: connection.lane,
|
72
66
|
size: connection.size,
|
73
|
-
// A타입의 ignore 노트는 ease 속성이 필요하지만, B의 end 노트는 없습니다.
|
74
|
-
// 따라서 'linear'를 기본값으로 사용합니다.
|
75
67
|
ease: 'linear',
|
76
68
|
};
|
77
69
|
}
|
@@ -86,6 +78,17 @@ const convertConnection = (connection) => {
|
|
86
78
|
};
|
87
79
|
}
|
88
80
|
};
|
81
|
+
/**
|
82
|
+
* 정렬을 위해 객체의 대표 beat 값을 가져옵니다.
|
83
|
+
* @param obj A 타입 USCObject
|
84
|
+
* @returns 정렬에 사용될 beat 값
|
85
|
+
*/
|
86
|
+
const getBeatForSort = (obj) => {
|
87
|
+
if (obj.type === 'slide') {
|
88
|
+
return obj.connections[0]?.beat ?? 0;
|
89
|
+
}
|
90
|
+
return obj.beat;
|
91
|
+
};
|
89
92
|
/**
|
90
93
|
* B 타입의 USC 객체를 A 타입 USC 객체로 변환합니다.
|
91
94
|
* @param uscB B 타입 USC 객체
|
@@ -93,6 +96,7 @@ const convertConnection = (connection) => {
|
|
93
96
|
*/
|
94
97
|
const uscToUSC = (uscB) => {
|
95
98
|
const newObjects = [];
|
99
|
+
let timeScaleGroupConverted = false; // 첫 번째 timeScaleGroup만 변환하기 위한 플래그
|
96
100
|
for (const object of uscB.objects) {
|
97
101
|
switch (object.type) {
|
98
102
|
case 'bpm':
|
@@ -103,14 +107,10 @@ const uscToUSC = (uscB) => {
|
|
103
107
|
});
|
104
108
|
break;
|
105
109
|
case 'single':
|
110
|
+
// A타입에는 timeScaleGroup 속성이 없으므로 제거하고 변환합니다.
|
111
|
+
const { timeScaleGroup: _, ...singleProps } = object;
|
106
112
|
newObjects.push({
|
107
|
-
|
108
|
-
beat: object.beat,
|
109
|
-
lane: object.lane,
|
110
|
-
size: object.size,
|
111
|
-
critical: object.critical,
|
112
|
-
trace: object.trace,
|
113
|
-
// B타입의 'none' 방향은 A타입에 없으므로 undefined로 처리합니다.
|
113
|
+
...singleProps,
|
114
114
|
direction: object.direction === 'none' ? undefined : object.direction,
|
115
115
|
});
|
116
116
|
break;
|
@@ -118,7 +118,6 @@ const uscToUSC = (uscB) => {
|
|
118
118
|
{
|
119
119
|
const newSlide = {
|
120
120
|
type: 'slide',
|
121
|
-
// B타입의 모든 slide는 A타입의 active slide로 간주합니다.
|
122
121
|
active: true,
|
123
122
|
critical: object.critical,
|
124
123
|
connections: object.connections.map(convertConnection),
|
@@ -127,18 +126,22 @@ const uscToUSC = (uscB) => {
|
|
127
126
|
}
|
128
127
|
break;
|
129
128
|
case 'timeScaleGroup':
|
130
|
-
//
|
131
|
-
|
132
|
-
|
133
|
-
|
134
|
-
|
135
|
-
|
136
|
-
|
129
|
+
// 첫 번째 timeScaleGroup이 아직 변환되지 않았다면 변환합니다.
|
130
|
+
if (!timeScaleGroupConverted) {
|
131
|
+
const sortedChanges = [...object.changes].sort((a, b) => a.beat - b.beat);
|
132
|
+
for (const change of sortedChanges) {
|
133
|
+
newObjects.push({
|
134
|
+
type: 'timeScale',
|
135
|
+
beat: change.beat,
|
136
|
+
timeScale: change.timeScale,
|
137
|
+
});
|
138
|
+
}
|
139
|
+
// 플래그를 true로 설정하여 이후의 timeScaleGroup들은 무시하도록 합니다.
|
140
|
+
timeScaleGroupConverted = true;
|
137
141
|
}
|
138
142
|
break;
|
139
143
|
case 'guide':
|
140
144
|
{
|
141
|
-
// B타입의 guide를 A타입의 비활성(active: false) 슬라이드로 변환합니다.
|
142
145
|
const guideConnections = object.midpoints.map((midpoint) => ({
|
143
146
|
type: 'ignore',
|
144
147
|
beat: midpoint.beat,
|
@@ -149,18 +152,17 @@ const uscToUSC = (uscB) => {
|
|
149
152
|
const newGuideSlide = {
|
150
153
|
type: 'slide',
|
151
154
|
active: false,
|
152
|
-
// B타입의 guide color가 'yellow'이면 critical로 판단합니다.
|
153
155
|
critical: object.color === 'yellow',
|
154
156
|
connections: guideConnections,
|
155
157
|
};
|
156
158
|
newObjects.push(newGuideSlide);
|
157
159
|
}
|
158
160
|
break;
|
159
|
-
// 'damage' 노트는 A타입에 없으므로 무시합니다.
|
160
161
|
case 'damage':
|
161
162
|
break;
|
162
163
|
}
|
163
164
|
}
|
165
|
+
newObjects.sort((a, b) => getBeatForSort(a) - getBeatForSort(b));
|
164
166
|
return {
|
165
167
|
offset: uscB.offset,
|
166
168
|
objects: newObjects,
|
package/dist/usc/revert.d.cts
CHANGED