adofai-lib 1.0.8 → 1.1.0
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/LevelDict.d.ts +77 -1
- package/dist/LevelDict.d.ts.map +1 -1
- package/dist/LevelDict.js +286 -26
- package/dist/LevelDict.js.map +1 -1
- package/dist/__tests__/LevelFile.test.js +977 -0
- package/dist/__tests__/LevelFile.test.js.map +1 -1
- package/dist/constants.d.ts +7 -0
- package/dist/constants.d.ts.map +1 -0
- package/dist/constants.js +10 -0
- package/dist/constants.js.map +1 -0
- package/dist/types/index.d.ts +16 -0
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/index.js.map +1 -1
- package/dist/utils/levelUtils.d.ts.map +1 -1
- package/dist/utils/levelUtils.js +5 -4
- package/dist/utils/levelUtils.js.map +1 -1
- package/package.json +3 -4
package/dist/LevelDict.d.ts
CHANGED
|
@@ -10,7 +10,60 @@ export default class LevelDict {
|
|
|
10
10
|
private getFileDict;
|
|
11
11
|
getAngles(): number[];
|
|
12
12
|
setAngles(angles: number[]): void;
|
|
13
|
-
|
|
13
|
+
/**
|
|
14
|
+
* Recalculates all pre-computed tile metadata (relative angles, rotation flips, etc.)
|
|
15
|
+
* Should be called whenever tiles or actions are modified
|
|
16
|
+
*/
|
|
17
|
+
private recalculateTileMetadata;
|
|
18
|
+
/**
|
|
19
|
+
* Calculates rotation direction flips based on Twirl events
|
|
20
|
+
*/
|
|
21
|
+
private calculateRotationFlips;
|
|
22
|
+
/**
|
|
23
|
+
* Calculates pause angles for each tile based on Pause events
|
|
24
|
+
* Each pause adds duration * 180 degrees to the tile's relative angle
|
|
25
|
+
*/
|
|
26
|
+
private calculatePauseAngle;
|
|
27
|
+
/**
|
|
28
|
+
* Calculates relative angles for each tile based on rotation direction and multiplanet mode
|
|
29
|
+
*
|
|
30
|
+
* Multiplanet formula:
|
|
31
|
+
* - In N-planet mode, planets are spaced 360/N degrees apart
|
|
32
|
+
* - The inner offset is: 180 - (360/N) = 180(N-2)/N
|
|
33
|
+
* - If adjusted angle < planet spacing, it wraps to 360 - original relative angle
|
|
34
|
+
*/
|
|
35
|
+
private calculateRelativeAngles;
|
|
36
|
+
/**
|
|
37
|
+
* Calculates duration in milliseconds for each tile
|
|
38
|
+
* Duration represents the time between hitting this tile and the next tile
|
|
39
|
+
* Formula: (relativeAngle / 180) * (60000 / BPM)
|
|
40
|
+
* Since 180 degrees = 1 beat, and 1 beat = 60000ms / BPM
|
|
41
|
+
*/
|
|
42
|
+
private calculateDurationMs;
|
|
43
|
+
/**
|
|
44
|
+
* Calculates multiplanet state for each tile based on MultiPlanet events
|
|
45
|
+
* Tracks planet count changes (2, 3, 4, 5+ planets) throughout the level
|
|
46
|
+
* Like Twirl events, the change applies to the tile where the event is and all subsequent tiles
|
|
47
|
+
*/
|
|
48
|
+
private calculateMultiplanet;
|
|
49
|
+
private calculateHitmargin;
|
|
50
|
+
/**
|
|
51
|
+
* Calculates current BPM at each tile based on SetSpeed events
|
|
52
|
+
* Tracks BPM changes throughout the level, considering angleOffset for mid-tile changes
|
|
53
|
+
*
|
|
54
|
+
* When angleOffset > 0, the tile with the speed change gets an effective BPM calculated as:
|
|
55
|
+
* - First `offset` degrees rotate at current BPM
|
|
56
|
+
* - Remaining `(relativeAngle - offset)` degrees rotate at transitional speed
|
|
57
|
+
* - Formula: effectiveBpm considers both portions to create smooth transition
|
|
58
|
+
*/
|
|
59
|
+
private calculateCurrentBpm;
|
|
60
|
+
/**
|
|
61
|
+
* Gets relative angles for all tiles
|
|
62
|
+
* @param ignoreTwirls If true, ignores rotation flips from Twirl events (legacy parameter for compatibility)
|
|
63
|
+
* @param padMidspins If true, includes midspins (999) as 0 in the output
|
|
64
|
+
* @returns Array of relative angles
|
|
65
|
+
*/
|
|
66
|
+
getAnglesRelative(): number[];
|
|
14
67
|
/**
|
|
15
68
|
* Gets actions from the level
|
|
16
69
|
* @param condition Filter condition for actions
|
|
@@ -39,6 +92,29 @@ export default class LevelDict {
|
|
|
39
92
|
* @throws Error if any index is invalid
|
|
40
93
|
*/
|
|
41
94
|
getTiles(indices: number[]): Tile[];
|
|
95
|
+
/**
|
|
96
|
+
* Gets rotation flip states for all tiles
|
|
97
|
+
* @returns Array of boolean values indicating if rotation is flipped at each tile
|
|
98
|
+
*/
|
|
99
|
+
getRotationFlips(): boolean[];
|
|
100
|
+
/**
|
|
101
|
+
* Gets duration in milliseconds for all tiles
|
|
102
|
+
* @returns Array of duration values in milliseconds (undefined if not yet implemented)
|
|
103
|
+
*/
|
|
104
|
+
getDurations(): (number | undefined)[];
|
|
105
|
+
/**
|
|
106
|
+
* Gets multiplanet states for all tiles
|
|
107
|
+
* @returns Array of boolean values indicating triple ball state (undefined if not yet implemented)
|
|
108
|
+
*/
|
|
109
|
+
getMultiplanetStates(): (number | undefined)[];
|
|
110
|
+
getPurePerfectMargins(): (number | undefined)[];
|
|
111
|
+
getPerfectMargins(): (number | undefined)[];
|
|
112
|
+
getPassMargins(): (number | undefined)[];
|
|
113
|
+
/**
|
|
114
|
+
* Gets current BPM values for all tiles
|
|
115
|
+
* @returns Array of BPM values (undefined if not yet implemented)
|
|
116
|
+
*/
|
|
117
|
+
getCurrentBpms(): (number | undefined)[];
|
|
42
118
|
writeToFile(filename?: string): void;
|
|
43
119
|
toJSON(): LevelJSON;
|
|
44
120
|
static fromJSON(json: string): LevelDict;
|
package/dist/LevelDict.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LevelDict.d.ts","sourceRoot":"","sources":["../src/LevelDict.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,IAAI,EAA6B,SAAS,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"LevelDict.d.ts","sourceRoot":"","sources":["../src/LevelDict.ts"],"names":[],"mappings":"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"}
|
package/dist/LevelDict.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import * as fs from 'fs';
|
|
2
2
|
import * as utils from './utils/levelUtils.js';
|
|
3
3
|
import { InvalidLevelDictException } from './types/index.js';
|
|
4
|
+
import { pathchars, perfectAngle, passAngle, purePerfectAngle } from './constants.js';
|
|
4
5
|
export default class LevelDict {
|
|
5
6
|
constructor(filename = '', encoding = 'utf-8') {
|
|
6
7
|
this.tiles = [];
|
|
@@ -17,12 +18,6 @@ export default class LevelDict {
|
|
|
17
18
|
angleData = leveldict.angleData;
|
|
18
19
|
}
|
|
19
20
|
else {
|
|
20
|
-
const pathchars = {
|
|
21
|
-
'R': 0, 'p': 15, 'J': 30, 'E': 45, 'T': 60, 'o': 75, 'U': 90,
|
|
22
|
-
'q': 105, 'G': 120, 'Q': 135, 'H': 150, 'W': 165, 'L': 180,
|
|
23
|
-
'x': 195, 'N': 210, 'Z': 225, 'F': 240, 'V': 255, 'D': 270,
|
|
24
|
-
'Y': 285, 'B': 300, 'C': 315, 'M': 330, 'A': 345, '!': 999
|
|
25
|
-
};
|
|
26
21
|
angleData = Array.from(leveldict.pathData).map(char => pathchars[char]);
|
|
27
22
|
}
|
|
28
23
|
const actions = leveldict.actions;
|
|
@@ -52,6 +47,8 @@ export default class LevelDict {
|
|
|
52
47
|
}
|
|
53
48
|
}
|
|
54
49
|
});
|
|
50
|
+
// Pre-calculate all tile metadata
|
|
51
|
+
this.recalculateTileMetadata();
|
|
55
52
|
}
|
|
56
53
|
getFileString(filename) {
|
|
57
54
|
if (!filename)
|
|
@@ -85,34 +82,248 @@ export default class LevelDict {
|
|
|
85
82
|
this.tiles.forEach((tile, i) => {
|
|
86
83
|
tile.angle = angles[i];
|
|
87
84
|
});
|
|
85
|
+
this.recalculateTileMetadata();
|
|
86
|
+
}
|
|
87
|
+
/**
|
|
88
|
+
* Recalculates all pre-computed tile metadata (relative angles, rotation flips, etc.)
|
|
89
|
+
* Should be called whenever tiles or actions are modified
|
|
90
|
+
*/
|
|
91
|
+
recalculateTileMetadata() {
|
|
92
|
+
this.calculateRotationFlips();
|
|
93
|
+
this.calculatePauseAngle();
|
|
94
|
+
this.calculateMultiplanet();
|
|
95
|
+
this.calculateRelativeAngles();
|
|
96
|
+
this.calculateCurrentBpm();
|
|
97
|
+
this.calculateDurationMs();
|
|
98
|
+
this.calculateHitmargin();
|
|
88
99
|
}
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
100
|
+
/**
|
|
101
|
+
* Calculates rotation direction flips based on Twirl events
|
|
102
|
+
*/
|
|
103
|
+
calculateRotationFlips() {
|
|
104
|
+
// Get twirl positions
|
|
105
|
+
const twirls = this.tiles
|
|
106
|
+
.flatMap((tile, idx) => tile.actions
|
|
107
|
+
.filter(action => action.eventType === 'Twirl')
|
|
108
|
+
.map(() => idx))
|
|
109
|
+
.sort((a, b) => a - b);
|
|
110
|
+
// Track cumulative direction changes
|
|
111
|
+
let currentlyFlipped = false;
|
|
112
|
+
let twirlIdx = 0;
|
|
113
|
+
for (let i = 0; i < this.tiles.length; i++) {
|
|
114
|
+
if (twirlIdx < twirls.length && i === twirls[twirlIdx]) {
|
|
115
|
+
currentlyFlipped = !currentlyFlipped;
|
|
116
|
+
twirlIdx++;
|
|
96
117
|
}
|
|
118
|
+
this.tiles[i].rotationFlipped = currentlyFlipped;
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
/**
|
|
122
|
+
* Calculates pause angles for each tile based on Pause events
|
|
123
|
+
* Each pause adds duration * 180 degrees to the tile's relative angle
|
|
124
|
+
*/
|
|
125
|
+
calculatePauseAngle() {
|
|
126
|
+
for (let i = 0; i < this.tiles.length; i++) {
|
|
127
|
+
// Find all Pause events on this tile and sum their durations
|
|
128
|
+
const totalPauseDuration = this.tiles[i].actions
|
|
129
|
+
.filter(action => action.eventType === 'Pause')
|
|
130
|
+
.reduce((sum, action) => sum + (action.duration || 0), 0);
|
|
131
|
+
this.tiles[i].pauseAngle = totalPauseDuration * 180;
|
|
97
132
|
}
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
133
|
+
}
|
|
134
|
+
/**
|
|
135
|
+
* Calculates relative angles for each tile based on rotation direction and multiplanet mode
|
|
136
|
+
*
|
|
137
|
+
* Multiplanet formula:
|
|
138
|
+
* - In N-planet mode, planets are spaced 360/N degrees apart
|
|
139
|
+
* - The inner offset is: 180 - (360/N) = 180(N-2)/N
|
|
140
|
+
* - If adjusted angle < planet spacing, it wraps to 360 - original relative angle
|
|
141
|
+
*/
|
|
142
|
+
calculateRelativeAngles() {
|
|
143
|
+
for (let i = 0; i < this.tiles.length; i++) {
|
|
144
|
+
const currentAngle = this.tiles[i].angle;
|
|
145
|
+
// Handle midspins specially
|
|
146
|
+
if (currentAngle === 999) {
|
|
147
|
+
// Regular midspin: relative angle of 0
|
|
148
|
+
this.tiles[i].relativeAngle = 0;
|
|
149
|
+
continue;
|
|
150
|
+
}
|
|
151
|
+
// Find previous non-midspin tile
|
|
152
|
+
let prevAngle = 0;
|
|
153
|
+
let hasMidspinWithTwirl = false;
|
|
154
|
+
if (i > 0) {
|
|
155
|
+
let prevIdx = i - 1;
|
|
156
|
+
while (prevIdx >= 0 && this.tiles[prevIdx].angle === 999) {
|
|
157
|
+
// Check if this midspin has a Twirl event
|
|
158
|
+
if (this.tiles[prevIdx].actions.some(action => action.eventType === 'Twirl')) {
|
|
159
|
+
hasMidspinWithTwirl = true;
|
|
160
|
+
}
|
|
161
|
+
prevIdx--;
|
|
162
|
+
}
|
|
163
|
+
if (prevIdx >= 0) {
|
|
164
|
+
prevAngle = this.tiles[prevIdx].angle;
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
// Calculate base relative angle
|
|
168
|
+
const angleCalculation = prevAngle - currentAngle + 180 - 1;
|
|
169
|
+
// JavaScript modulo doesn't handle negatives correctly, so normalize first
|
|
170
|
+
let relative = ((angleCalculation % 360) + 360) % 360 + 1;
|
|
171
|
+
// If there was a midspin with Twirl before this tile, apply "kick back" effect
|
|
172
|
+
if (hasMidspinWithTwirl) {
|
|
173
|
+
// The "kick back" effect means the travel direction is reversed
|
|
174
|
+
// This is equivalent to flipping the relative angle
|
|
175
|
+
relative = 360 - relative;
|
|
176
|
+
}
|
|
177
|
+
// Apply rotation flip by negating the angle
|
|
178
|
+
if (this.tiles[i].rotationFlipped) {
|
|
179
|
+
relative = 360 - relative;
|
|
180
|
+
}
|
|
181
|
+
// Apply multiplanet offset
|
|
182
|
+
const multiplanetCount = this.tiles[i].multiplanet || 2;
|
|
183
|
+
if (multiplanetCount > 2) {
|
|
184
|
+
// Calculate planet spacing: 360 / N
|
|
185
|
+
const planetSpacing = 360 / multiplanetCount;
|
|
186
|
+
// Calculate inner offset: 180 - (360 / N) = 180(N - 2) / N
|
|
187
|
+
const innerOffset = 180 - planetSpacing;
|
|
188
|
+
// Subtract the inner offset from the relative angle
|
|
189
|
+
const adjustedAngle = relative - innerOffset;
|
|
190
|
+
// If the adjusted angle is less than planet spacing, wrap around the outside
|
|
191
|
+
// This happens when the tile appears "behind" the next planet
|
|
192
|
+
if (adjustedAngle < planetSpacing) {
|
|
193
|
+
relative = 360 - relative;
|
|
194
|
+
}
|
|
195
|
+
else {
|
|
196
|
+
relative = adjustedAngle;
|
|
197
|
+
}
|
|
198
|
+
}
|
|
199
|
+
this.tiles[i].relativeAngle = relative + (this.tiles[i].pauseAngle || 0);
|
|
101
200
|
}
|
|
102
|
-
|
|
103
|
-
|
|
201
|
+
}
|
|
202
|
+
/**
|
|
203
|
+
* Calculates duration in milliseconds for each tile
|
|
204
|
+
* Duration represents the time between hitting this tile and the next tile
|
|
205
|
+
* Formula: (relativeAngle / 180) * (60000 / BPM)
|
|
206
|
+
* Since 180 degrees = 1 beat, and 1 beat = 60000ms / BPM
|
|
207
|
+
*/
|
|
208
|
+
calculateDurationMs() {
|
|
209
|
+
for (let i = 0; i < this.tiles.length; i++) {
|
|
210
|
+
const relativeAngle = this.tiles[i].relativeAngle || 180;
|
|
211
|
+
const currentBpm = this.tiles[i].currentBpm || 100;
|
|
212
|
+
// Calculate duration: angle in degrees / 180 = beats, beats * ms per beat = duration
|
|
213
|
+
const beatsPerMs = 60000 / currentBpm;
|
|
214
|
+
const beats = relativeAngle / 180;
|
|
215
|
+
const duration = beats * beatsPerMs;
|
|
216
|
+
this.tiles[i].durationMs = duration;
|
|
104
217
|
}
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
218
|
+
}
|
|
219
|
+
/**
|
|
220
|
+
* Calculates multiplanet state for each tile based on MultiPlanet events
|
|
221
|
+
* Tracks planet count changes (2, 3, 4, 5+ planets) throughout the level
|
|
222
|
+
* Like Twirl events, the change applies to the tile where the event is and all subsequent tiles
|
|
223
|
+
*/
|
|
224
|
+
calculateMultiplanet() {
|
|
225
|
+
let currentPlanetCount = 2; // Default to 2 planets
|
|
226
|
+
for (let i = 0; i < this.tiles.length; i++) {
|
|
227
|
+
// Set the planet count BEFORE checking for events on this tile
|
|
228
|
+
this.tiles[i].multiplanet = currentPlanetCount;
|
|
229
|
+
// Check for MultiPlanet events on this tile
|
|
230
|
+
const multiPlanetEvents = this.tiles[i].actions.filter(action => action.eventType === 'MultiPlanet');
|
|
231
|
+
// Update planet count for subsequent tiles if there's a MultiPlanet event
|
|
232
|
+
for (const event of multiPlanetEvents) {
|
|
233
|
+
if (event.planets === 'TwoPlanets') {
|
|
234
|
+
currentPlanetCount = 2;
|
|
235
|
+
}
|
|
236
|
+
else if (event.planets === 'ThreePlanets') {
|
|
237
|
+
currentPlanetCount = 3;
|
|
238
|
+
}
|
|
239
|
+
else if (event.planets === 'FourPlanets') {
|
|
240
|
+
currentPlanetCount = 4;
|
|
241
|
+
}
|
|
242
|
+
else if (event.planets === 'FivePlanets') {
|
|
243
|
+
currentPlanetCount = 5;
|
|
244
|
+
}
|
|
245
|
+
else if (event.planets === 'SixPlanets') {
|
|
246
|
+
currentPlanetCount = 6;
|
|
247
|
+
}
|
|
248
|
+
// Can extend for more planets as needed
|
|
249
|
+
// Apply the change to this tile as well
|
|
250
|
+
this.tiles[i].multiplanet = currentPlanetCount;
|
|
112
251
|
}
|
|
113
|
-
|
|
252
|
+
}
|
|
253
|
+
}
|
|
254
|
+
calculateHitmargin() {
|
|
255
|
+
// Placeholder implementation
|
|
256
|
+
this.tiles.forEach(tile => {
|
|
257
|
+
const crotchet = (60000 / (tile.currentBpm || 100));
|
|
258
|
+
tile.purePerfectMargin = Math.max((purePerfectAngle / 180) * crotchet * 2, 25);
|
|
259
|
+
tile.perfectMargin = Math.max((perfectAngle / 180) * crotchet * 2, 25);
|
|
260
|
+
tile.passMargin = Math.max((passAngle / 180) * crotchet * 2, 25);
|
|
114
261
|
});
|
|
115
262
|
}
|
|
263
|
+
/**
|
|
264
|
+
* Calculates current BPM at each tile based on SetSpeed events
|
|
265
|
+
* Tracks BPM changes throughout the level, considering angleOffset for mid-tile changes
|
|
266
|
+
*
|
|
267
|
+
* When angleOffset > 0, the tile with the speed change gets an effective BPM calculated as:
|
|
268
|
+
* - First `offset` degrees rotate at current BPM
|
|
269
|
+
* - Remaining `(relativeAngle - offset)` degrees rotate at transitional speed
|
|
270
|
+
* - Formula: effectiveBpm considers both portions to create smooth transition
|
|
271
|
+
*/
|
|
272
|
+
calculateCurrentBpm() {
|
|
273
|
+
// Get base BPM from settings
|
|
274
|
+
const baseBpm = this.settings.bpm ? parseFloat(this.settings.bpm) : 100;
|
|
275
|
+
let currentBpm = baseBpm;
|
|
276
|
+
for (let i = 0; i < this.tiles.length; i++) {
|
|
277
|
+
// Set the BPM at the start of this tile
|
|
278
|
+
this.tiles[i].currentBpm = currentBpm;
|
|
279
|
+
// Check for SetSpeed events on this tile
|
|
280
|
+
const speedEvents = this.tiles[i].actions.filter(action => action.eventType === 'SetSpeed' && action.speedType === 'Bpm');
|
|
281
|
+
// Process speed events (in order they appear in the actions array)
|
|
282
|
+
for (const event of speedEvents) {
|
|
283
|
+
const newBpm = event.beatsPerMinute || baseBpm;
|
|
284
|
+
const multiplier = event.bpmMultiplier || 1;
|
|
285
|
+
const angleOffset = event.angleOffset || 0;
|
|
286
|
+
// Calculate the actual BPM with multiplier
|
|
287
|
+
const targetBpm = newBpm * multiplier;
|
|
288
|
+
if (angleOffset === 0) {
|
|
289
|
+
// Change applies immediately at this tile
|
|
290
|
+
this.tiles[i].currentBpm = targetBpm;
|
|
291
|
+
currentBpm = targetBpm;
|
|
292
|
+
}
|
|
293
|
+
else {
|
|
294
|
+
// Change happens mid-tile - calculate effective BPM for this tile
|
|
295
|
+
const relativeAngle = this.tiles[i].relativeAngle || 180;
|
|
296
|
+
// The tile rotates in two parts:
|
|
297
|
+
// 1. First `angleOffset` degrees at currentBpm
|
|
298
|
+
// 2. Remaining `(relativeAngle - angleOffset)` degrees transitioning to targetBpm
|
|
299
|
+
//
|
|
300
|
+
// The effective BPM is calculated based on the weighted timing:
|
|
301
|
+
// Time for offset portion: offset / currentBpm
|
|
302
|
+
// Time for remaining portion: (relativeAngle - offset) / (targetBpm / currentBpm) * currentBpm
|
|
303
|
+
// = (relativeAngle - offset) * (currentBpm / targetBpm)
|
|
304
|
+
//
|
|
305
|
+
// Effective BPM = relativeAngle / totalTime
|
|
306
|
+
const timeForOffset = angleOffset / currentBpm;
|
|
307
|
+
const timeForRemaining = (relativeAngle - angleOffset) * (currentBpm / targetBpm);
|
|
308
|
+
const totalTime = timeForOffset + timeForRemaining;
|
|
309
|
+
const effectiveBpm = relativeAngle / totalTime;
|
|
310
|
+
this.tiles[i].currentBpm = effectiveBpm;
|
|
311
|
+
currentBpm = targetBpm; // Next tile uses target BPM
|
|
312
|
+
}
|
|
313
|
+
}
|
|
314
|
+
}
|
|
315
|
+
}
|
|
316
|
+
/**
|
|
317
|
+
* Gets relative angles for all tiles
|
|
318
|
+
* @param ignoreTwirls If true, ignores rotation flips from Twirl events (legacy parameter for compatibility)
|
|
319
|
+
* @param padMidspins If true, includes midspins (999) as 0 in the output
|
|
320
|
+
* @returns Array of relative angles
|
|
321
|
+
*/
|
|
322
|
+
getAnglesRelative() {
|
|
323
|
+
return this.tiles
|
|
324
|
+
.filter(tile => tile.angle !== 999)
|
|
325
|
+
.map(tile => tile.relativeAngle || 0);
|
|
326
|
+
}
|
|
116
327
|
/**
|
|
117
328
|
* Gets actions from the level
|
|
118
329
|
* @param condition Filter condition for actions
|
|
@@ -148,6 +359,43 @@ export default class LevelDict {
|
|
|
148
359
|
}
|
|
149
360
|
return indices.map(i => this.tiles[i]);
|
|
150
361
|
}
|
|
362
|
+
/**
|
|
363
|
+
* Gets rotation flip states for all tiles
|
|
364
|
+
* @returns Array of boolean values indicating if rotation is flipped at each tile
|
|
365
|
+
*/
|
|
366
|
+
getRotationFlips() {
|
|
367
|
+
return this.tiles.map(tile => tile.rotationFlipped || false);
|
|
368
|
+
}
|
|
369
|
+
/**
|
|
370
|
+
* Gets duration in milliseconds for all tiles
|
|
371
|
+
* @returns Array of duration values in milliseconds (undefined if not yet implemented)
|
|
372
|
+
*/
|
|
373
|
+
getDurations() {
|
|
374
|
+
return this.tiles.map(tile => tile.durationMs);
|
|
375
|
+
}
|
|
376
|
+
/**
|
|
377
|
+
* Gets multiplanet states for all tiles
|
|
378
|
+
* @returns Array of boolean values indicating triple ball state (undefined if not yet implemented)
|
|
379
|
+
*/
|
|
380
|
+
getMultiplanetStates() {
|
|
381
|
+
return this.tiles.map(tile => tile.multiplanet);
|
|
382
|
+
}
|
|
383
|
+
getPurePerfectMargins() {
|
|
384
|
+
return this.tiles.map(tile => tile.purePerfectMargin);
|
|
385
|
+
}
|
|
386
|
+
getPerfectMargins() {
|
|
387
|
+
return this.tiles.map(tile => tile.perfectMargin);
|
|
388
|
+
}
|
|
389
|
+
getPassMargins() {
|
|
390
|
+
return this.tiles.map(tile => tile.passMargin);
|
|
391
|
+
}
|
|
392
|
+
/**
|
|
393
|
+
* Gets current BPM values for all tiles
|
|
394
|
+
* @returns Array of BPM values (undefined if not yet implemented)
|
|
395
|
+
*/
|
|
396
|
+
getCurrentBpms() {
|
|
397
|
+
return this.tiles.map(tile => tile.currentBpm);
|
|
398
|
+
}
|
|
151
399
|
writeToFile(filename) {
|
|
152
400
|
const final = {
|
|
153
401
|
angleData: this.getAngles(),
|
|
@@ -177,6 +425,7 @@ export default class LevelDict {
|
|
|
177
425
|
level.settings = data.settings;
|
|
178
426
|
level.setActions(data.actions);
|
|
179
427
|
level.setDecorations(data.decorations);
|
|
428
|
+
// Note: setActions and setDecorations already call recalculateTileMetadata
|
|
180
429
|
return level;
|
|
181
430
|
}
|
|
182
431
|
compareWith(other) {
|
|
@@ -242,6 +491,7 @@ export default class LevelDict {
|
|
|
242
491
|
return deco;
|
|
243
492
|
});
|
|
244
493
|
});
|
|
494
|
+
this.recalculateTileMetadata();
|
|
245
495
|
}
|
|
246
496
|
removeTile(index) {
|
|
247
497
|
if (index < 0 || index >= this.tiles.length) {
|
|
@@ -268,6 +518,7 @@ export default class LevelDict {
|
|
|
268
518
|
return deco;
|
|
269
519
|
});
|
|
270
520
|
});
|
|
521
|
+
this.recalculateTileMetadata();
|
|
271
522
|
}
|
|
272
523
|
copy() {
|
|
273
524
|
const copy = new LevelDict();
|
|
@@ -280,6 +531,7 @@ export default class LevelDict {
|
|
|
280
531
|
}));
|
|
281
532
|
copy.nonFloorDecos = this.nonFloorDecos.map(deco => ({ ...deco }));
|
|
282
533
|
copy.settings = { ...this.settings };
|
|
534
|
+
copy.recalculateTileMetadata();
|
|
283
535
|
return copy;
|
|
284
536
|
}
|
|
285
537
|
// Action manipulation methods
|
|
@@ -292,6 +544,7 @@ export default class LevelDict {
|
|
|
292
544
|
this.tiles[action.floor].actions.push({ ...action });
|
|
293
545
|
}
|
|
294
546
|
});
|
|
547
|
+
this.recalculateTileMetadata();
|
|
295
548
|
}
|
|
296
549
|
/**
|
|
297
550
|
* Inserts a new action at the specified floor. The new action will be added to the end of the actions array
|
|
@@ -305,6 +558,7 @@ export default class LevelDict {
|
|
|
305
558
|
throw new Error('Invalid floor index');
|
|
306
559
|
}
|
|
307
560
|
this.tiles[floor].actions.push({ ...action, floor });
|
|
561
|
+
this.recalculateTileMetadata();
|
|
308
562
|
}
|
|
309
563
|
removeAction(floor, actionIndex) {
|
|
310
564
|
if (floor < 0 || floor >= this.tiles.length) {
|
|
@@ -314,6 +568,7 @@ export default class LevelDict {
|
|
|
314
568
|
throw new Error('Invalid action index');
|
|
315
569
|
}
|
|
316
570
|
this.tiles[floor].actions.splice(actionIndex, 1);
|
|
571
|
+
this.recalculateTileMetadata();
|
|
317
572
|
}
|
|
318
573
|
updateAction(floor, actionIndex, newAction) {
|
|
319
574
|
if (floor < 0 || floor >= this.tiles.length) {
|
|
@@ -326,6 +581,7 @@ export default class LevelDict {
|
|
|
326
581
|
...this.tiles[floor].actions[actionIndex],
|
|
327
582
|
...newAction
|
|
328
583
|
};
|
|
584
|
+
this.recalculateTileMetadata();
|
|
329
585
|
}
|
|
330
586
|
// Decoration manipulation methods
|
|
331
587
|
setDecorations(decorations) {
|
|
@@ -421,6 +677,7 @@ export default class LevelDict {
|
|
|
421
677
|
throw new Error('Invalid action index');
|
|
422
678
|
}
|
|
423
679
|
this.tiles[floor].actions.splice(actionIndex, 0, { ...action, floor });
|
|
680
|
+
this.recalculateTileMetadata();
|
|
424
681
|
}
|
|
425
682
|
/**
|
|
426
683
|
* Inserts a new decoration at a specific position in the decorations array for a floor.
|
|
@@ -483,6 +740,9 @@ export default class LevelDict {
|
|
|
483
740
|
*/
|
|
484
741
|
setSetting(key, value) {
|
|
485
742
|
this.settings[key] = value;
|
|
743
|
+
if (key === 'bpm') {
|
|
744
|
+
this.recalculateTileMetadata();
|
|
745
|
+
}
|
|
486
746
|
}
|
|
487
747
|
/**
|
|
488
748
|
* Removes a specific setting
|
package/dist/LevelDict.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LevelDict.js","sourceRoot":"","sources":["../src/LevelDict.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"LevelDict.js","sourceRoot":"","sources":["../src/LevelDict.ts"],"names":[],"mappings":"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"}
|